From 7d0ef5479217fc9fe08717401674e798cdd56792 Mon Sep 17 00:00:00 2001
From: Andrey Khaneev
Date: Wed, 17 Apr 2019 14:57:14 +0300
Subject: [PATCH 1/4] Added test for OUTER JOIN with missing ids
---
dist/alasql-echo.js | 34 +-
dist/alasql-prolog.js | 78 +-
dist/alasql-worker.js | 490 +-
dist/alasql-worker.min.js | 2 +-
dist/alasql.d.ts | 165 +-
dist/alasql.fs.js | 26304 ++++++++++++------------
dist/alasql.js | 39542 ++++++++++++++++++------------------
dist/alasql.min.js | 4 +-
package-lock.json | 2 +-
test/test800.js | 39 +
10 files changed, 33351 insertions(+), 33309 deletions(-)
create mode 100644 test/test800.js
diff --git a/dist/alasql-echo.js b/dist/alasql-echo.js
index d595819f54..f2282fd1c3 100644
--- a/dist/alasql-echo.js
+++ b/dist/alasql-echo.js
@@ -1,18 +1,18 @@
-// Plugin sample
-
-var yy = alasql.yy;
-
-yy.Echo = function (params) { return yy.extend(this, params); }
-yy.Echo.prototype.toString = function() {
- var s = 'TEST '+this.expr.toString();
- return s;
-}
-
-yy.Echo.prototype.execute = function (databaseid, params, cb) {
-// var self = this;
- // console.log(76336,this.expr.toJS());
- var fn = new Function('params, alasql','return '+this.expr.toJS());
- var res = fn(params, alasql);
- if(cb) res = cb(res);
- return res;
+// Plugin sample
+
+var yy = alasql.yy;
+
+yy.Echo = function (params) { return yy.extend(this, params); }
+yy.Echo.prototype.toString = function() {
+ var s = 'TEST '+this.expr.toString();
+ return s;
+}
+
+yy.Echo.prototype.execute = function (databaseid, params, cb) {
+// var self = this;
+ // console.log(76336,this.expr.toJS());
+ var fn = new Function('params, alasql','return '+this.expr.toJS());
+ var res = fn(params, alasql);
+ if(cb) res = cb(res);
+ return res;
}
\ No newline at end of file
diff --git a/dist/alasql-prolog.js b/dist/alasql-prolog.js
index 0e66c9ef05..b7e3dd286f 100644
--- a/dist/alasql-prolog.js
+++ b/dist/alasql-prolog.js
@@ -1,40 +1,40 @@
-// Prolog plugin
-
-var yy = alasql.yy;
-
-yy.Term = function (params) { return yy.extend(this, params); }
-yy.Term.prototype.toString = function() {
- var s = this.termid;
- if(this.args && this.args.length > 0) {
- s += '('+this.args.map(function(arg){
- return arg.toString();
- })+')';
- }
- return s;
-};
-
-yy.AddRule = function (params) { return yy.extend(this, params); }
-yy.AddRule.prototype.toString = function() {
- var s = '';
- if(this.left) s += this.left.toString();
- s += ':-';
- s += this.right.map(function(r){return r.toString()}).join(',');
- return s;
-};
-
-yy.AddRule.prototype.execute = function (databaseid, params, cb) {
-// var self = this;
-// console.log(this.expr.toJS());
-// var fn = new Function('params, alasql','return '+this.expr.toJS());
-// var res = fn(params, alasql);
- var res = 1;
- var objects = alasql.databases[databaseid].objects;
- var rule = {};
- if(!this.left) {
- this.right.forEach(function(term){
- rule.$class = term.termid;
- });
- }
- if(cb) res = cb(res);
- return res;
+// Prolog plugin
+
+var yy = alasql.yy;
+
+yy.Term = function (params) { return yy.extend(this, params); }
+yy.Term.prototype.toString = function() {
+ var s = this.termid;
+ if(this.args && this.args.length > 0) {
+ s += '('+this.args.map(function(arg){
+ return arg.toString();
+ })+')';
+ }
+ return s;
+};
+
+yy.AddRule = function (params) { return yy.extend(this, params); }
+yy.AddRule.prototype.toString = function() {
+ var s = '';
+ if(this.left) s += this.left.toString();
+ s += ':-';
+ s += this.right.map(function(r){return r.toString()}).join(',');
+ return s;
+};
+
+yy.AddRule.prototype.execute = function (databaseid, params, cb) {
+// var self = this;
+// console.log(this.expr.toJS());
+// var fn = new Function('params, alasql','return '+this.expr.toJS());
+// var res = fn(params, alasql);
+ var res = 1;
+ var objects = alasql.databases[databaseid].objects;
+ var rule = {};
+ if(!this.left) {
+ this.right.forEach(function(term){
+ rule.$class = term.termid;
+ });
+ }
+ if(cb) res = cb(res);
+ return res;
};
\ No newline at end of file
diff --git a/dist/alasql-worker.js b/dist/alasql-worker.js
index 6e80c72dbc..d108315b6f 100755
--- a/dist/alasql-worker.js
+++ b/dist/alasql-worker.js
@@ -1,245 +1,245 @@
-//! AlaSQL v0.4.11-develop-af510181undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
-/*
-@module alasql
-@version 0.4.11-develop-af510181undefined
-
-AlaSQL - JavaScript SQL database
-© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
-
-@license
-The MIT License (MIT)
-
-Copyright 2014-2016 Andrey Gershun (agershun@gmail.com) & Mathias Rangel Wulff (m@rawu.dk)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-/*
-//
-// AlaSQL Workker
-// Date: 13.04.2014
-// (c) 2014-2015, Andrey Gershun
-//
-*/
-(function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- define([], factory);
- } else if (typeof exports === 'object') {
- module.exports = factory();
- } else {
- root.alasql = factory();
- }
-}(this, function () {
-
-/**
- Main procedure for worker
- @function
- @param {string} sql SQL statement
- @param {object} params List of parameters (can be omitted)
- @param {callback} cb Callback function
- @return {object} Query result
-*/
-function alasql(sql,params,cb){
-
- params = params||[];
-
- // Avoid setting params if not needed even with callback
- if(typeof params === 'function'){
- scope = cb;
- cb = params;
- params = [];
- }
-
- if(typeof params !== 'object'){
- params = [params];
- }
-
- // Increase last request id
- var id = alasql.lastid++;
- // Save callback
- alasql.buffer[id] = cb;
- // Send a message to worker
- alasql.webworker.postMessage({id:id,sql:sql,params:params});
-}
-
-
-alasql.options = {};
-alasql.options.progress = function(){};
-
-isArray = function(obj){
- return "[object Array]"===Object.prototype.toString.call(obj);
-}
-
-alasql.promise = function() {
- throw new Error('Please include a Promise/A+ library');
-}
-
-// From src/18promise.js
-if(typeof Promise !== "undefined"){
- var promiseExec = function(sql, params, counterStep, counterTotal){
- return new Promise(function(resolve, reject){
- alasql(sql, params, function(data,err) {
- if(err) {
- reject(err);
- } else {
- if (counterStep && counterTotal && alasql.options.progress !== false) {
- alasql.options.progress(counterStep, counterTotal);
- }
- resolve(data);
- }
- });
- });
- }
-
- var promiseAll = function(sqlParamsArray){
- if(sqlParamsArray.length<1){
- return ;
- }
-
- var active, sql, params;
-
- var execArray = [];
-
- for (var i = 0; i < sqlParamsArray.length; i++) {
- active = sqlParamsArray[i];
-
- if(typeof active === 'string'){
- active = [active];
- }
-
- if(!isArray(active) || active.length<1 || 2 1) {
- var sql =
- 'REQUIRE ' +
- paths
- .map(function(p) {
- return '"' + p + '"';
- })
- .join(',');
- alasql(sql, [], cb);
- }
- } else if (path === false) {
- delete alasql.webworker;
- return;
- }
- };
-}
-
-
-/* WebWorker */
-/** @type {number} */
-alasql.lastid = 0;
-
-/** @type {object} */
-alasql.buffer = {};
-
-alasql.worker();
-
-return alasql;
-}));
+//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+/*
+@module alasql
+@version 0.4.11-develop-977878caundefined
+
+AlaSQL - JavaScript SQL database
+© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
+
+@license
+The MIT License (MIT)
+
+Copyright 2014-2016 Andrey Gershun (agershun@gmail.com) & Mathias Rangel Wulff (m@rawu.dk)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+/*
+//
+// AlaSQL Workker
+// Date: 13.04.2014
+// (c) 2014-2015, Andrey Gershun
+//
+*/
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([], factory);
+ } else if (typeof exports === 'object') {
+ module.exports = factory();
+ } else {
+ root.alasql = factory();
+ }
+}(this, function () {
+
+/**
+ Main procedure for worker
+ @function
+ @param {string} sql SQL statement
+ @param {object} params List of parameters (can be omitted)
+ @param {callback} cb Callback function
+ @return {object} Query result
+*/
+function alasql(sql,params,cb){
+
+ params = params||[];
+
+ // Avoid setting params if not needed even with callback
+ if(typeof params === 'function'){
+ scope = cb;
+ cb = params;
+ params = [];
+ }
+
+ if(typeof params !== 'object'){
+ params = [params];
+ }
+
+ // Increase last request id
+ var id = alasql.lastid++;
+ // Save callback
+ alasql.buffer[id] = cb;
+ // Send a message to worker
+ alasql.webworker.postMessage({id:id,sql:sql,params:params});
+}
+
+
+alasql.options = {};
+alasql.options.progress = function(){};
+
+isArray = function(obj){
+ return "[object Array]"===Object.prototype.toString.call(obj);
+}
+
+alasql.promise = function() {
+ throw new Error('Please include a Promise/A+ library');
+}
+
+// From src/18promise.js
+if(typeof Promise !== "undefined"){
+ var promiseExec = function(sql, params, counterStep, counterTotal){
+ return new Promise(function(resolve, reject){
+ alasql(sql, params, function(data,err) {
+ if(err) {
+ reject(err);
+ } else {
+ if (counterStep && counterTotal && alasql.options.progress !== false) {
+ alasql.options.progress(counterStep, counterTotal);
+ }
+ resolve(data);
+ }
+ });
+ });
+ }
+
+ var promiseAll = function(sqlParamsArray){
+ if(sqlParamsArray.length<1){
+ return ;
+ }
+
+ var active, sql, params;
+
+ var execArray = [];
+
+ for (var i = 0; i < sqlParamsArray.length; i++) {
+ active = sqlParamsArray[i];
+
+ if(typeof active === 'string'){
+ active = [active];
+ }
+
+ if(!isArray(active) || active.length<1 || 2 1) {
+ var sql =
+ 'REQUIRE ' +
+ paths
+ .map(function(p) {
+ return '"' + p + '"';
+ })
+ .join(',');
+ alasql(sql, [], cb);
+ }
+ } else if (path === false) {
+ delete alasql.webworker;
+ return;
+ }
+ };
+}
+
+
+/* WebWorker */
+/** @type {number} */
+alasql.lastid = 0;
+
+/** @type {object} */
+alasql.buffer = {};
+
+alasql.worker();
+
+return alasql;
+}));
diff --git a/dist/alasql-worker.min.js b/dist/alasql-worker.min.js
index 842ad6f8e0..a509065e01 100755
--- a/dist/alasql-worker.min.js
+++ b/dist/alasql-worker.min.js
@@ -1,2 +1,2 @@
-//! AlaSQL v0.4.11-develop-af510181undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
!function(r,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():r.alasql=e()}(this,function(){function r(e,t,o){t=t||[],"function"==typeof t&&(scope=o,o=t,t=[]),"object"!=typeof t&&(t=[t]);var n=r.lastid++;r.buffer[n]=o,r.webworker.postMessage({id:n,sql:e,params:t})}if(r.options={},r.options.progress=function(){},isArray=function(r){return"[object Array]"===Object.prototype.toString.call(r)},r.promise=function(){throw new Error("Please include a Promise/A+ library")},"undefined"!=typeof Promise){var e=function(e,t,o,n){return new Promise(function(s,i){r(e,t,function(e,t){t?i(t):(o&&n&&!1!==r.options.progress&&r.options.progress(o,n),s(e))})})},t=function(r){if(!(r.length<1)){for(var t,o,n,s=[],i=0;i1){r("REQUIRE "+t.map(function(r){return'"'+r+'"'}).join(","),[],o)}}else if(!1===e)return void delete r.webworker}),r.lastid=0,r.buffer={},r.worker(),r});
\ No newline at end of file
diff --git a/dist/alasql.d.ts b/dist/alasql.d.ts
index c6cf8ef3c3..f446e149c1 100644
--- a/dist/alasql.d.ts
+++ b/dist/alasql.d.ts
@@ -1,81 +1,84 @@
-// Project: https://github.com/agershun/alasql
-
-declare namespace alaSQLSpace {
- interface AlaSQLCallback {
- (data?: any, err?: Error): void;
- }
-
- interface AlaSQLOptions {
- errorlog: boolean;
- valueof: boolean;
- dropifnotexists: boolean; // drop database in any case
- datetimeformat: string; // how to handle DATE and DATETIME types
- casesensitive: boolean; // table and column names are case sensitive and converted to lower-case
- logtarget: string; // target for log. Values: 'console', 'output', 'id' of html tag
- logprompt: boolean; // print SQL at log
- modifier: any; // values: RECORDSET, VALUE, ROW, COLUMN, MATRIX, TEXTSTRING, INDEX
- columnlookup: number; // how many rows to lookup to define columns
- autovertex: boolean; // create vertex if not found
- usedbo: boolean; // use dbo as current database (for partial T-SQL comaptibility)
- autocommit: boolean; // the AUTOCOMMIT ON | OFF
- cache: boolean; // use cache
- nocount: boolean; // for SET NOCOUNT OFF
- nan: boolean; // check for NaN and convert it to undefined
- angularjs: boolean;
- tsql: boolean;
- mysql: boolean;
- postgres: boolean;
- oracle: boolean;
- sqlite: boolean;
- orientdb: boolean;
- }
-
- // compiled Statement
- interface AlaSQLStatement {
- (params?: any, cb?: AlaSQLCallback, scope?: any): any;
- }
-
- // abstract Syntax Tree
- interface AlaSQLAST {
- compile(databaseid: string): AlaSQLStatement;
- }
-
- // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/es6-promise/es6-promise.d.ts
- interface Thenable {
- then(onFulfilled?: (value: T) => U | Thenable, onRejected?: (error: any) => U | Thenable): Thenable;
- then(onFulfilled?: (value: T) => U | Thenable, onRejected?: (error: any) => void): Thenable;
- catch(onRejected?: (error: any) => U | Thenable): Thenable;
- }
-
- // see https://github.com/agershun/alasql/wiki/User%20Defined%20Functions
- interface userDefinedFunction {
- (x: any): any;
- }
- interface userDefinedFunctionLookUp {
- [x: string]: userDefinedFunction;
- }
- // see https://github.com/agershun/alasql/wiki/User%20Defined%20Functions
- interface userAggregator {
- (value: any, accumulator: any, stage: number): any;
- }
- interface userAggregatorLookUp {
- [x: string]: userAggregator;
- }
-
- interface AlaSQL {
- options: AlaSQLOptions;
- error: Error;
- (sql: any, params?: any, cb?: AlaSQLCallback, scope?: any): any;
- parse(sql: any): AlaSQLAST;
- promise(sql: any, params?: any): Thenable;
- fn: userDefinedFunctionLookUp;
- aggr: userAggregatorLookUp;
- autoval(tablename: string, colname: string, getNext?:boolean): number;
- yy:{};
- }
-}
-
-declare var alasql: alaSQLSpace.AlaSQL;
-declare module 'alasql' {
- export = alasql;
-}
+// Project: https://github.com/agershun/alasql
+
+import * as xlsx from "xlsx";
+
+declare namespace alaSQLSpace {
+ interface AlaSQLCallback {
+ (data?: any, err?: Error): void;
+ }
+
+ interface AlaSQLOptions {
+ errorlog: boolean;
+ valueof: boolean;
+ dropifnotexists: boolean; // drop database in any case
+ datetimeformat: string; // how to handle DATE and DATETIME types
+ casesensitive: boolean; // table and column names are case sensitive and converted to lower-case
+ logtarget: string; // target for log. Values: 'console', 'output', 'id' of html tag
+ logprompt: boolean; // print SQL at log
+ modifier: any; // values: RECORDSET, VALUE, ROW, COLUMN, MATRIX, TEXTSTRING, INDEX
+ columnlookup: number; // how many rows to lookup to define columns
+ autovertex: boolean; // create vertex if not found
+ usedbo: boolean; // use dbo as current database (for partial T-SQL comaptibility)
+ autocommit: boolean; // the AUTOCOMMIT ON | OFF
+ cache: boolean; // use cache
+ nocount: boolean; // for SET NOCOUNT OFF
+ nan: boolean; // check for NaN and convert it to undefined
+ angularjs: boolean;
+ tsql: boolean;
+ mysql: boolean;
+ postgres: boolean;
+ oracle: boolean;
+ sqlite: boolean;
+ orientdb: boolean;
+ }
+
+ // compiled Statement
+ interface AlaSQLStatement {
+ (params?: any, cb?: AlaSQLCallback, scope?: any): any;
+ }
+
+ // abstract Syntax Tree
+ interface AlaSQLAST {
+ compile(databaseid: string): AlaSQLStatement;
+ }
+
+ // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/es6-promise/es6-promise.d.ts
+ interface Thenable {
+ then(onFulfilled?: (value: T) => U | Thenable, onRejected?: (error: any) => U | Thenable): Thenable;
+ then(onFulfilled?: (value: T) => U | Thenable, onRejected?: (error: any) => void): Thenable;
+ catch(onRejected?: (error: any) => U | Thenable): Thenable;
+ }
+
+ // see https://github.com/agershun/alasql/wiki/User%20Defined%20Functions
+ interface userDefinedFunction {
+ (x: any): any;
+ }
+ interface userDefinedFunctionLookUp {
+ [x: string]: userDefinedFunction;
+ }
+ // see https://github.com/agershun/alasql/wiki/User%20Defined%20Functions
+ interface userAggregator {
+ (value: any, accumulator: any, stage: number): any;
+ }
+ interface userAggregatorLookUp {
+ [x: string]: userAggregator;
+ }
+
+ interface AlaSQL {
+ options: AlaSQLOptions;
+ error: Error;
+ (sql: any, params?: any, cb?: AlaSQLCallback, scope?: any): any;
+ parse(sql: any): AlaSQLAST;
+ promise(sql: any, params?: any): Thenable;
+ fn: userDefinedFunctionLookUp;
+ aggr: userAggregatorLookUp;
+ autoval(tablename: string, colname: string, getNext?:boolean): number;
+ yy:{};
+ setXLSX(xlsxlib: typeof xlsx): void;
+ }
+}
+
+declare var alasql: alaSQLSpace.AlaSQL;
+declare module 'alasql' {
+ export = alasql;
+}
diff --git a/dist/alasql.fs.js b/dist/alasql.fs.js
index 8c83038f26..9991a7e876 100755
--- a/dist/alasql.fs.js
+++ b/dist/alasql.fs.js
@@ -1,3151 +1,3151 @@
-//! AlaSQL v0.4.11-develop-af510181undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
-/*
-@module alasql
-@version 0.4.11-develop-af510181undefined
-
-AlaSQL - JavaScript SQL database
-© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
-
-@license
-The MIT License (MIT)
-
-Copyright 2014-2016 Andrey Gershun (agershun@gmail.com) & Mathias Rangel Wulff (m@rawu.dk)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-/* eslint-disable */
-
-"use strict";
-
-/**
- @fileoverview AlaSQL JavaScript SQL library
- @see http://github.com/agershun/alasql
-*/
-
-/**
- Callback from statement
- @callback statement-callback
- @param {object} data Result data
-*/
-
-/**
- UMD envelope for AlaSQL
-*/
-
-(function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- define([], factory);
- } else if (typeof exports === 'object') {
- /** alasql main function */
- module.exports = factory();
- } else {
- root.alasql = factory();
- }
-}(this, function () {
-
-/**
- AlaSQL - Main Alasql class
- @function
- @param {string|function|object} sql - SQL-statement or data object for fuent interface
- @param {object} params - SQL parameters
- @param {function} cb - callback function
- @param {object} scope - Scope for nested queries
- @return {any} - Result data object
-
- @example
- Standard sync call:
- alasql('CREATE TABLE one');
- Query:
- var res = alasql('SELECT * FROM one');
- Call with parameters:
- var res = alasql('SELECT * FROM ?',[data]);
- Standard async call with callback function:
- alasql('SELECT * FROM ?',[data],function(res){
- console.log(data);
- });
- Call with scope for subquery (to pass common values):
- var scope = {one:{a:2,b;20}}
- alasql('SELECT * FROM ? two WHERE two.a = one.a',[data],null,scope);
- Call for fluent interface with data object:
- alasql(data).Where(function(x){return x.a == 10}).exec();
- Call for fluent interface without data object:
- alasql().From(data).Where(function(x){return x.a == 10}).exec();
- */
-
-var alasql = function(sql, params, cb, scope) {
-
- params = params||[];
-
- if(typeof importScripts !== 'function' && alasql.webworker) {
- var id = alasql.lastid++;
- alasql.buffer[id] = cb;
- alasql.webworker.postMessage({id:id,sql:sql,params:params});
- return;
- }
-
- if(arguments.length === 0) {
- // Without arguments - Fluent interface
- return new yy.Select({
- columns:[new yy.Column({columnid:'*'})],
- from: [new yy.ParamValue({param:0})]
- });
- } else if(arguments.length === 1){
- // Access promise notation without using `.promise(...)`
- if(sql.constructor === Array){
- return alasql.promise(sql);
- }
- }
- // Avoid setting params if not needed even with callback
- if(typeof params === 'function'){
- scope = cb;
- cb = params;
- params = [];
- }
-
- if(typeof params !== 'object'){
- params = [params];
- }
-
- // Standard interface
- // alasql('#sql');
- if(typeof sql === 'string' && sql[0]==='#' && typeof document === "object") {
- sql = document.querySelector(sql).textContent;
- } else if(typeof sql === 'object' && sql instanceof HTMLElement) {
- sql = sql.textContent;
- } else if(typeof sql === 'function') {
- // to run multiline functions
- sql = sql.toString();
- sql = (/\/\*([\S\s]+)\*\//m.exec(sql) || ['','Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function.'])[1];
- }
- // Run SQL
- return alasql.exec(sql, params, cb, scope);
-};
-
-/**
- Current version of alasql
- @constant {string}
-*/
-alasql.version = '0.4.11-develop-af510181undefined';
-
-/**
- Debug flag
- @type {boolean}
-*/
-alasql.debug = undefined; // Initial debug variable
-
-/*only-for-browser/*
-var require = function(){return null}; // as alasqlparser.js is generated, we can not "remove" referenses to
-var __dirname = '';
-//*/
-
-/* parser generated by jison 0.4.18 */
-/*
- Returns a Parser object of the following structure:
-
- Parser: {
- yy: {}
- }
-
- Parser.prototype: {
- yy: {},
- trace: function(),
- symbols_: {associative list: name ==> number},
- terminals_: {associative list: number ==> name},
- productions_: [...],
- performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
- table: [...],
- defaultActions: {...},
- parseError: function(str, hash),
- parse: function(input),
-
- lexer: {
- EOF: 1,
- parseError: function(str, hash),
- setInput: function(input),
- input: function(),
- unput: function(str),
- more: function(),
- less: function(n),
- pastInput: function(),
- upcomingInput: function(),
- showPosition: function(),
- test_match: function(regex_match_array, rule_index),
- next: function(),
- lex: function(),
- begin: function(condition),
- popState: function(),
- _currentRules: function(),
- topState: function(),
- pushState: function(condition),
-
- options: {
- ranges: boolean (optional: true ==> token location info will include a .range[] member)
- flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
- backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
- },
-
- performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
- rules: [...],
- conditions: {associative list: name ==> set},
- }
- }
-
- token location info (@$, _$, etc.): {
- first_line: n,
- last_line: n,
- first_column: n,
- last_column: n,
- range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
- }
-
- the parseError function receives a 'hash' object with these members for lexer and parser errors: {
- text: (matched text)
- token: (the produced terminal token, if any)
- line: (yylineno)
- }
- while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
- loc: (yylloc)
- expected: (string describing the set of expected tokens)
- recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
- }
-*/
-var alasqlparser = (function(){
-var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,13],$V1=[1,104],$V2=[1,102],$V3=[1,103],$V4=[1,6],$V5=[1,42],$V6=[1,79],$V7=[1,76],$V8=[1,94],$V9=[1,93],$Va=[1,69],$Vb=[1,101],$Vc=[1,85],$Vd=[1,64],$Ve=[1,71],$Vf=[1,84],$Vg=[1,66],$Vh=[1,70],$Vi=[1,68],$Vj=[1,61],$Vk=[1,74],$Vl=[1,62],$Vm=[1,67],$Vn=[1,83],$Vo=[1,77],$Vp=[1,86],$Vq=[1,87],$Vr=[1,81],$Vs=[1,82],$Vt=[1,80],$Vu=[1,88],$Vv=[1,89],$Vw=[1,90],$Vx=[1,91],$Vy=[1,92],$Vz=[1,98],$VA=[1,65],$VB=[1,78],$VC=[1,72],$VD=[1,96],$VE=[1,97],$VF=[1,63],$VG=[1,73],$VH=[1,108],$VI=[1,107],$VJ=[10,306,602,764],$VK=[10,306,310,602,764],$VL=[1,115],$VM=[1,116],$VN=[1,117],$VO=[1,118],$VP=[1,119],$VQ=[130,353,410],$VR=[1,127],$VS=[1,126],$VT=[1,134],$VU=[1,164],$VV=[1,175],$VW=[1,178],$VX=[1,173],$VY=[1,181],$VZ=[1,185],$V_=[1,160],$V$=[1,182],$V01=[1,169],$V11=[1,171],$V21=[1,174],$V31=[1,183],$V41=[1,166],$V51=[1,193],$V61=[1,188],$V71=[1,189],$V81=[1,194],$V91=[1,195],$Va1=[1,196],$Vb1=[1,197],$Vc1=[1,198],$Vd1=[1,199],$Ve1=[1,200],$Vf1=[1,201],$Vg1=[1,202],$Vh1=[1,176],$Vi1=[1,177],$Vj1=[1,179],$Vk1=[1,180],$Vl1=[1,186],$Vm1=[1,192],$Vn1=[1,184],$Vo1=[1,187],$Vp1=[1,172],$Vq1=[1,170],$Vr1=[1,191],$Vs1=[1,203],$Vt1=[2,4,5],$Vu1=[2,471],$Vv1=[1,206],$Vw1=[1,211],$Vx1=[1,220],$Vy1=[1,216],$Vz1=[10,72,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VA1=[2,4,5,10,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],$VB1=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VC1=[1,249],$VD1=[1,256],$VE1=[1,265],$VF1=[1,270],$VG1=[1,269],$VH1=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,168,169,179,180,181,183,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],$VI1=[2,162],$VJ1=[1,281],$VK1=[10,74,78,306,310,505,602,764],$VL1=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,193,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,302,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,344,356,368,369,370,373,374,386,389,396,400,401,402,403,404,405,406,408,409,417,418,420,424,426,433,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,514,515,516,517,602,764],$VM1=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VN1=[1,562],$VO1=[1,564],$VP1=[2,503],$VQ1=[1,569],$VR1=[1,580],$VS1=[1,583],$VT1=[1,584],$VU1=[10,78,89,132,137,146,189,296,306,310,470,602,764],$VV1=[10,74,306,310,602,764],$VW1=[2,567],$VX1=[1,602],$VY1=[2,4,5,156],$VZ1=[1,640],$V_1=[1,612],$V$1=[1,646],$V02=[1,647],$V12=[1,620],$V22=[1,631],$V32=[1,618],$V42=[1,626],$V52=[1,619],$V62=[1,627],$V72=[1,629],$V82=[1,621],$V92=[1,622],$Va2=[1,641],$Vb2=[1,638],$Vc2=[1,639],$Vd2=[1,615],$Ve2=[1,617],$Vf2=[1,609],$Vg2=[1,610],$Vh2=[1,611],$Vi2=[1,613],$Vj2=[1,614],$Vk2=[1,616],$Vl2=[1,623],$Vm2=[1,624],$Vn2=[1,628],$Vo2=[1,630],$Vp2=[1,632],$Vq2=[1,633],$Vr2=[1,634],$Vs2=[1,635],$Vt2=[1,636],$Vu2=[1,642],$Vv2=[1,643],$Vw2=[1,644],$Vx2=[1,645],$Vy2=[2,287],$Vz2=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VA2=[2,359],$VB2=[1,668],$VC2=[1,678],$VD2=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VE2=[1,694],$VF2=[1,703],$VG2=[1,702],$VH2=[2,4,5,10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VI2=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VJ2=[2,202],$VK2=[1,725],$VL2=[10,72,78,93,98,118,128,162,168,169,183,232,245,247,306,310,602,764],$VM2=[2,163],$VN2=[1,728],$VO2=[2,4,5,112],$VP2=[1,741],$VQ2=[1,760],$VR2=[1,740],$VS2=[1,739],$VT2=[1,734],$VU2=[1,735],$VV2=[1,737],$VW2=[1,738],$VX2=[1,742],$VY2=[1,743],$VZ2=[1,744],$V_2=[1,745],$V$2=[1,746],$V03=[1,747],$V13=[1,748],$V23=[1,749],$V33=[1,750],$V43=[1,751],$V53=[1,752],$V63=[1,753],$V73=[1,754],$V83=[1,755],$V93=[1,756],$Va3=[1,757],$Vb3=[1,759],$Vc3=[1,761],$Vd3=[1,762],$Ve3=[1,763],$Vf3=[1,764],$Vg3=[1,765],$Vh3=[1,766],$Vi3=[1,767],$Vj3=[1,770],$Vk3=[1,771],$Vl3=[1,772],$Vm3=[1,773],$Vn3=[1,774],$Vo3=[1,775],$Vp3=[1,776],$Vq3=[1,777],$Vr3=[1,778],$Vs3=[1,779],$Vt3=[1,780],$Vu3=[1,781],$Vv3=[74,89,189],$Vw3=[10,74,78,154,187,230,297,306,310,343,356,368,369,373,374,602,764],$Vx3=[1,798],$Vy3=[10,74,78,300,306,310,602,764],$Vz3=[1,799],$VA3=[1,805],$VB3=[1,806],$VC3=[1,810],$VD3=[10,74,78,306,310,602,764],$VE3=[2,4,5,77,131,132,137,143,145,149,152,154,156,179,180,181,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,312,317,420,424],$VF3=[10,72,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VG3=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],$VH3=[2,4,5,132,296],$VI3=[1,844],$VJ3=[10,74,76,78,306,310,602,764],$VK3=[2,738],$VL3=[10,74,76,78,132,139,141,145,152,306,310,420,424,602,764],$VM3=[2,1161],$VN3=[10,74,76,78,139,141,145,152,306,310,420,424,602,764],$VO3=[10,74,76,78,139,141,145,306,310,420,424,602,764],$VP3=[10,74,78,139,141,306,310,602,764],$VQ3=[10,78,89,132,146,189,296,306,310,470,602,764],$VR3=[335,338,339],$VS3=[2,764],$VT3=[1,869],$VU3=[1,870],$VV3=[1,871],$VW3=[1,872],$VX3=[1,881],$VY3=[1,880],$VZ3=[164,166,334],$V_3=[2,444],$V$3=[1,936],$V04=[2,4,5,77,131,156,290,291,292,293],$V14=[1,951],$V24=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$V34=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$V44=[2,375],$V54=[1,958],$V64=[306,308,310],$V74=[74,300],$V84=[74,300,426],$V94=[1,965],$Va4=[2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vb4=[74,426],$Vc4=[1,978],$Vd4=[1,977],$Ve4=[1,984],$Vf4=[10,72,78,93,98,118,128,162,168,169,232,245,247,306,310,602,764],$Vg4=[1,1010],$Vh4=[10,72,78,306,310,602,764],$Vi4=[1,1016],$Vj4=[1,1017],$Vk4=[1,1018],$Vl4=[2,4,5,10,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],$Vm4=[1,1068],$Vn4=[1,1067],$Vo4=[1,1081],$Vp4=[1,1080],$Vq4=[1,1088],$Vr4=[10,72,74,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$Vs4=[1,1119],$Vt4=[10,78,89,146,189,306,310,470,602,764],$Vu4=[1,1139],$Vv4=[1,1138],$Vw4=[1,1137],$Vx4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy4=[1,1153],$Vz4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VA4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VB4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VC4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VD4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VE4=[2,406],$VF4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VG4=[2,285],$VH4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VI4=[10,78,306,310,602,764],$VJ4=[1,1189],$VK4=[10,77,78,143,145,152,181,302,306,310,420,424,602,764],$VL4=[10,74,78,306,308,310,464,602,764],$VM4=[1,1200],$VN4=[10,72,78,118,128,162,168,169,232,245,247,306,310,602,764],$VO4=[10,72,74,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VP4=[2,4,5,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VQ4=[2,4,5,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VR4=[2,1085],$VS4=[2,4,5,72,74,76,77,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VT4=[1,1252],$VU4=[10,74,78,128,306,308,310,464,602,764],$VV4=[115,116,124],$VW4=[2,584],$VX4=[1,1280],$VY4=[76,139],$VZ4=[2,724],$V_4=[1,1297],$V$4=[1,1298],$V05=[2,4,5,10,53,72,76,89,124,146,156,189,230,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$V15=[2,330],$V25=[1,1322],$V35=[1,1336],$V45=[1,1338],$V55=[2,487],$V65=[74,78],$V75=[10,306,308,310,464,602,764],$V85=[10,72,78,118,162,168,169,232,245,247,306,310,602,764],$V95=[1,1354],$Va5=[1,1358],$Vb5=[1,1359],$Vc5=[1,1361],$Vd5=[1,1362],$Ve5=[1,1363],$Vf5=[1,1364],$Vg5=[1,1365],$Vh5=[1,1366],$Vi5=[1,1367],$Vj5=[1,1368],$Vk5=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vl5=[1,1393],$Vm5=[10,72,78,118,162,168,169,245,247,306,310,602,764],$Vn5=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vo5=[1,1490],$Vp5=[1,1492],$Vq5=[2,4,5,77,143,145,152,156,181,290,291,292,293,302,420,424],$Vr5=[1,1506],$Vs5=[10,72,74,78,162,168,169,245,247,306,310,602,764],$Vt5=[1,1524],$Vu5=[1,1526],$Vv5=[1,1527],$Vw5=[1,1523],$Vx5=[1,1522],$Vy5=[1,1521],$Vz5=[1,1528],$VA5=[1,1518],$VB5=[1,1519],$VC5=[1,1520],$VD5=[1,1545],$VE5=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VF5=[1,1556],$VG5=[1,1564],$VH5=[1,1563],$VI5=[10,72,78,162,168,169,245,247,306,310,602,764],$VJ5=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VK5=[2,4,5,10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VL5=[1,1621],$VM5=[1,1623],$VN5=[1,1620],$VO5=[1,1622],$VP5=[187,193,368,369,370,373],$VQ5=[2,515],$VR5=[1,1628],$VS5=[1,1647],$VT5=[10,72,78,162,168,169,306,310,602,764],$VU5=[1,1657],$VV5=[1,1658],$VW5=[1,1659],$VX5=[1,1678],$VY5=[4,10,243,306,310,343,356,602,764],$VZ5=[1,1726],$V_5=[10,72,74,78,118,162,168,169,239,245,247,306,310,602,764],$V$5=[2,4,5,77],$V06=[1,1820],$V16=[1,1832],$V26=[1,1851],$V36=[10,72,78,162,168,169,306,310,415,602,764],$V46=[10,74,78,230,306,310,602,764];
-var parser = {trace: function trace() { },
-yy: {},
-symbols_: {"error":2,"Literal":3,"LITERAL":4,"BRALITERAL":5,"NonReserved":6,"LiteralWithSpaces":7,"main":8,"Statements":9,"EOF":10,"Statements_group0":11,"AStatement":12,"ExplainStatement":13,"EXPLAIN":14,"QUERY":15,"PLAN":16,"Statement":17,"AlterTable":18,"AttachDatabase":19,"Call":20,"CreateDatabase":21,"CreateIndex":22,"CreateGraph":23,"CreateTable":24,"CreateView":25,"CreateEdge":26,"CreateVertex":27,"Declare":28,"Delete":29,"DetachDatabase":30,"DropDatabase":31,"DropIndex":32,"DropTable":33,"DropView":34,"If":35,"Insert":36,"Merge":37,"Reindex":38,"RenameTable":39,"Select":40,"ShowCreateTable":41,"ShowColumns":42,"ShowDatabases":43,"ShowIndex":44,"ShowTables":45,"TruncateTable":46,"WithSelect":47,"CreateTrigger":48,"DropTrigger":49,"BeginTransaction":50,"CommitTransaction":51,"RollbackTransaction":52,"EndTransaction":53,"UseDatabase":54,"Update":55,"JavaScript":56,"Source":57,"Assert":58,"While":59,"Continue":60,"Break":61,"BeginEnd":62,"Print":63,"Require":64,"SetVariable":65,"ExpressionStatement":66,"AddRule":67,"Query":68,"Echo":69,"CreateFunction":70,"CreateAggregate":71,"WITH":72,"WithTablesList":73,"COMMA":74,"WithTable":75,"AS":76,"LPAR":77,"RPAR":78,"SelectClause":79,"Select_option0":80,"IntoClause":81,"FromClause":82,"Select_option1":83,"WhereClause":84,"GroupClause":85,"OrderClause":86,"LimitClause":87,"UnionClause":88,"SEARCH":89,"Select_repetition0":90,"Select_option2":91,"PivotClause":92,"PIVOT":93,"Expression":94,"FOR":95,"PivotClause_option0":96,"PivotClause_option1":97,"UNPIVOT":98,"IN":99,"ColumnsList":100,"PivotClause_option2":101,"PivotClause2":102,"AsList":103,"AsLiteral":104,"AsPart":105,"RemoveClause":106,"REMOVE":107,"RemoveClause_option0":108,"RemoveColumnsList":109,"RemoveColumn":110,"Column":111,"LIKE":112,"StringValue":113,"ArrowDot":114,"ARROW":115,"DOT":116,"SearchSelector":117,"ORDER":118,"BY":119,"OrderExpressionsList":120,"SearchSelector_option0":121,"DOTDOT":122,"CARET":123,"EQ":124,"SearchSelector_repetition_plus0":125,"SearchSelector_repetition_plus1":126,"SearchSelector_option1":127,"WHERE":128,"OF":129,"CLASS":130,"NUMBER":131,"STRING":132,"SLASH":133,"VERTEX":134,"EDGE":135,"EXCLAMATION":136,"SHARP":137,"MODULO":138,"GT":139,"LT":140,"GTGT":141,"LTLT":142,"DOLLAR":143,"Json":144,"AT":145,"SET":146,"SetColumnsList":147,"TO":148,"VALUE":149,"ROW":150,"ExprList":151,"COLON":152,"PlusStar":153,"NOT":154,"SearchSelector_repetition2":155,"IF":156,"SearchSelector_repetition3":157,"Aggregator":158,"SearchSelector_repetition4":159,"SearchSelector_group0":160,"SearchSelector_repetition5":161,"UNION":162,"SearchSelectorList":163,"ALL":164,"SearchSelector_repetition6":165,"ANY":166,"SearchSelector_repetition7":167,"INTERSECT":168,"EXCEPT":169,"AND":170,"OR":171,"PATH":172,"RETURN":173,"ResultColumns":174,"REPEAT":175,"SearchSelector_repetition8":176,"SearchSelectorList_repetition0":177,"SearchSelectorList_repetition1":178,"PLUS":179,"STAR":180,"QUESTION":181,"SearchFrom":182,"FROM":183,"SelectModifier":184,"DISTINCT":185,"TopClause":186,"UNIQUE":187,"SelectClause_option0":188,"SELECT":189,"COLUMN":190,"MATRIX":191,"TEXTSTRING":192,"INDEX":193,"RECORDSET":194,"TOP":195,"NumValue":196,"TopClause_option0":197,"INTO":198,"Table":199,"FuncValue":200,"ParamValue":201,"VarValue":202,"FromTablesList":203,"JoinTablesList":204,"ApplyClause":205,"CROSS":206,"APPLY":207,"OUTER":208,"FromTable":209,"FromTable_option0":210,"FromTable_option1":211,"INDEXED":212,"INSERTED":213,"FromString":214,"JoinTable":215,"JoinMode":216,"JoinTableAs":217,"OnClause":218,"JoinTableAs_option0":219,"JoinTableAs_option1":220,"JoinModeMode":221,"NATURAL":222,"JOIN":223,"INNER":224,"LEFT":225,"RIGHT":226,"FULL":227,"SEMI":228,"ANTI":229,"ON":230,"USING":231,"GROUP":232,"GroupExpressionsList":233,"HavingClause":234,"GroupExpression":235,"GROUPING":236,"ROLLUP":237,"CUBE":238,"HAVING":239,"CORRESPONDING":240,"OrderExpression":241,"DIRECTION":242,"COLLATE":243,"NOCASE":244,"LIMIT":245,"OffsetClause":246,"OFFSET":247,"LimitClause_option0":248,"FETCH":249,"LimitClause_option1":250,"LimitClause_option2":251,"LimitClause_option3":252,"ResultColumn":253,"Star":254,"AggrValue":255,"Op":256,"LogicValue":257,"NullValue":258,"ExistsValue":259,"CaseValue":260,"CastClause":261,"ArrayValue":262,"NewClause":263,"Expression_group0":264,"CURRENT_TIMESTAMP":265,"JAVASCRIPT":266,"CREATE":267,"FUNCTION":268,"AGGREGATE":269,"NEW":270,"CAST":271,"ColumnType":272,"CONVERT":273,"PrimitiveValue":274,"OverClause":275,"OVER":276,"OverPartitionClause":277,"OverOrderByClause":278,"PARTITION":279,"SUM":280,"COUNT":281,"MIN":282,"MAX":283,"AVG":284,"FIRST":285,"LAST":286,"AGGR":287,"ARRAY":288,"FuncValue_option0":289,"REPLACE":290,"DATEADD":291,"DATEDIFF":292,"INTERVAL":293,"TRUE":294,"FALSE":295,"NSTRING":296,"NULL":297,"EXISTS":298,"ARRAYLBRA":299,"RBRA":300,"ParamValue_group0":301,"BRAQUESTION":302,"CASE":303,"WhensList":304,"ElseClause":305,"END":306,"When":307,"WHEN":308,"THEN":309,"ELSE":310,"REGEXP":311,"TILDA":312,"GLOB":313,"ESCAPE":314,"NOT_LIKE":315,"BARBAR":316,"MINUS":317,"AMPERSAND":318,"BAR":319,"GE":320,"LE":321,"EQEQ":322,"EQEQEQ":323,"NE":324,"NEEQEQ":325,"NEEQEQEQ":326,"CondOp":327,"AllSome":328,"ColFunc":329,"BETWEEN":330,"NOT_BETWEEN":331,"IS":332,"DOUBLECOLON":333,"SOME":334,"UPDATE":335,"SetColumn":336,"SetColumn_group0":337,"DELETE":338,"INSERT":339,"Into":340,"Values":341,"ValuesListsList":342,"DEFAULT":343,"VALUES":344,"ValuesList":345,"Value":346,"DateValue":347,"TemporaryClause":348,"TableClass":349,"IfNotExists":350,"CreateTableDefClause":351,"CreateTableOptionsClause":352,"TABLE":353,"CreateTableOptions":354,"CreateTableOption":355,"IDENTITY":356,"TEMP":357,"ColumnDefsList":358,"ConstraintsList":359,"Constraint":360,"ConstraintName":361,"PrimaryKey":362,"ForeignKey":363,"UniqueKey":364,"IndexKey":365,"Check":366,"CONSTRAINT":367,"CHECK":368,"PRIMARY":369,"KEY":370,"PrimaryKey_option0":371,"ColsList":372,"FOREIGN":373,"REFERENCES":374,"ForeignKey_option0":375,"OnForeignKeyClause":376,"ParColsList":377,"OnDeleteClause":378,"OnUpdateClause":379,"NO":380,"ACTION":381,"UniqueKey_option0":382,"UniqueKey_option1":383,"ColumnDef":384,"ColumnConstraintsClause":385,"ColumnConstraints":386,"SingularColumnType":387,"NumberMax":388,"ENUM":389,"MAXNUM":390,"ColumnConstraintsList":391,"ColumnConstraint":392,"ParLiteral":393,"ColumnConstraint_option0":394,"ColumnConstraint_option1":395,"DROP":396,"DropTable_group0":397,"IfExists":398,"TablesList":399,"ALTER":400,"RENAME":401,"ADD":402,"MODIFY":403,"ATTACH":404,"DATABASE":405,"DETACH":406,"AsClause":407,"USE":408,"SHOW":409,"VIEW":410,"CreateView_option0":411,"CreateView_option1":412,"SubqueryRestriction":413,"READ":414,"ONLY":415,"OPTION":416,"SOURCE":417,"ASSERT":418,"JsonObject":419,"ATLBRA":420,"JsonArray":421,"JsonValue":422,"JsonPrimitiveValue":423,"LCUR":424,"JsonPropertiesList":425,"RCUR":426,"JsonElementsList":427,"JsonProperty":428,"OnOff":429,"SetPropsList":430,"AtDollar":431,"SetProp":432,"OFF":433,"COMMIT":434,"TRANSACTION":435,"ROLLBACK":436,"BEGIN":437,"ElseStatement":438,"WHILE":439,"CONTINUE":440,"BREAK":441,"PRINT":442,"REQUIRE":443,"StringValuesList":444,"PluginsList":445,"Plugin":446,"ECHO":447,"DECLARE":448,"DeclaresList":449,"DeclareItem":450,"TRUNCATE":451,"MERGE":452,"MergeInto":453,"MergeUsing":454,"MergeOn":455,"MergeMatchedList":456,"OutputClause":457,"MergeMatched":458,"MergeNotMatched":459,"MATCHED":460,"MergeMatchedAction":461,"MergeNotMatchedAction":462,"TARGET":463,"OUTPUT":464,"CreateVertex_option0":465,"CreateVertex_option1":466,"CreateVertex_option2":467,"CreateVertexSet":468,"SharpValue":469,"CONTENT":470,"CreateEdge_option0":471,"GRAPH":472,"GraphList":473,"GraphVertexEdge":474,"GraphElement":475,"GraphVertexEdge_option0":476,"GraphVertexEdge_option1":477,"GraphElementVar":478,"GraphVertexEdge_option2":479,"GraphVertexEdge_option3":480,"GraphVertexEdge_option4":481,"GraphVar":482,"GraphAsClause":483,"GraphAtClause":484,"GraphElement2":485,"GraphElement2_option0":486,"GraphElement2_option1":487,"GraphElement2_option2":488,"GraphElement2_option3":489,"GraphElement_option0":490,"GraphElement_option1":491,"GraphElement_option2":492,"SharpLiteral":493,"GraphElement_option3":494,"GraphElement_option4":495,"GraphElement_option5":496,"ColonLiteral":497,"DeleteVertex":498,"DeleteVertex_option0":499,"DeleteEdge":500,"DeleteEdge_option0":501,"DeleteEdge_option1":502,"DeleteEdge_option2":503,"Term":504,"COLONDASH":505,"TermsList":506,"QUESTIONDASH":507,"CALL":508,"TRIGGER":509,"BeforeAfter":510,"InsertDeleteUpdate":511,"CreateTrigger_option0":512,"CreateTrigger_option1":513,"BEFORE":514,"AFTER":515,"INSTEAD":516,"REINDEX":517,"A":518,"ABSENT":519,"ABSOLUTE":520,"ACCORDING":521,"ADA":522,"ADMIN":523,"ALWAYS":524,"ASC":525,"ASSERTION":526,"ASSIGNMENT":527,"ATTRIBUTE":528,"ATTRIBUTES":529,"BASE64":530,"BERNOULLI":531,"BLOCKED":532,"BOM":533,"BREADTH":534,"C":535,"CASCADE":536,"CATALOG":537,"CATALOG_NAME":538,"CHAIN":539,"CHARACTERISTICS":540,"CHARACTERS":541,"CHARACTER_SET_CATALOG":542,"CHARACTER_SET_NAME":543,"CHARACTER_SET_SCHEMA":544,"CLASS_ORIGIN":545,"COBOL":546,"COLLATION":547,"COLLATION_CATALOG":548,"COLLATION_NAME":549,"COLLATION_SCHEMA":550,"COLUMNS":551,"COLUMN_NAME":552,"COMMAND_FUNCTION":553,"COMMAND_FUNCTION_CODE":554,"COMMITTED":555,"CONDITION_NUMBER":556,"CONNECTION":557,"CONNECTION_NAME":558,"CONSTRAINTS":559,"CONSTRAINT_CATALOG":560,"CONSTRAINT_NAME":561,"CONSTRAINT_SCHEMA":562,"CONSTRUCTOR":563,"CONTROL":564,"CURSOR_NAME":565,"DATA":566,"DATETIME_INTERVAL_CODE":567,"DATETIME_INTERVAL_PRECISION":568,"DB":569,"DEFAULTS":570,"DEFERRABLE":571,"DEFERRED":572,"DEFINED":573,"DEFINER":574,"DEGREE":575,"DEPTH":576,"DERIVED":577,"DESC":578,"DESCRIPTOR":579,"DIAGNOSTICS":580,"DISPATCH":581,"DOCUMENT":582,"DOMAIN":583,"DYNAMIC_FUNCTION":584,"DYNAMIC_FUNCTION_CODE":585,"EMPTY":586,"ENCODING":587,"ENFORCED":588,"EXCLUDE":589,"EXCLUDING":590,"EXPRESSION":591,"FILE":592,"FINAL":593,"FLAG":594,"FOLLOWING":595,"FORTRAN":596,"FOUND":597,"FS":598,"G":599,"GENERAL":600,"GENERATED":601,"GO":602,"GOTO":603,"GRANTED":604,"HEX":605,"HIERARCHY":606,"ID":607,"IGNORE":608,"IMMEDIATE":609,"IMMEDIATELY":610,"IMPLEMENTATION":611,"INCLUDING":612,"INCREMENT":613,"INDENT":614,"INITIALLY":615,"INPUT":616,"INSTANCE":617,"INSTANTIABLE":618,"INTEGRITY":619,"INVOKER":620,"ISOLATION":621,"K":622,"KEY_MEMBER":623,"KEY_TYPE":624,"LENGTH":625,"LEVEL":626,"LIBRARY":627,"LINK":628,"LOCATION":629,"LOCATOR":630,"M":631,"MAP":632,"MAPPING":633,"MAXVALUE":634,"MESSAGE_LENGTH":635,"MESSAGE_OCTET_LENGTH":636,"MESSAGE_TEXT":637,"MINVALUE":638,"MORE":639,"MUMPS":640,"NAME":641,"NAMES":642,"NAMESPACE":643,"NESTING":644,"NEXT":645,"NFC":646,"NFD":647,"NFKC":648,"NFKD":649,"NIL":650,"NORMALIZED":651,"NULLABLE":652,"NULLS":653,"OBJECT":654,"OCTETS":655,"OPTIONS":656,"ORDERING":657,"ORDINALITY":658,"OTHERS":659,"OVERRIDING":660,"P":661,"PAD":662,"PARAMETER_MODE":663,"PARAMETER_NAME":664,"PARAMETER_ORDINAL_POSITION":665,"PARAMETER_SPECIFIC_CATALOG":666,"PARAMETER_SPECIFIC_NAME":667,"PARAMETER_SPECIFIC_SCHEMA":668,"PARTIAL":669,"PASCAL":670,"PASSING":671,"PASSTHROUGH":672,"PERMISSION":673,"PLACING":674,"PLI":675,"PRECEDING":676,"PRESERVE":677,"PRIOR":678,"PRIVILEGES":679,"PUBLIC":680,"RECOVERY":681,"RELATIVE":682,"REPEATABLE":683,"REQUIRING":684,"RESPECT":685,"RESTART":686,"RESTORE":687,"RESTRICT":688,"RETURNED_CARDINALITY":689,"RETURNED_LENGTH":690,"RETURNED_OCTET_LENGTH":691,"RETURNED_SQLSTATE":692,"RETURNING":693,"ROLE":694,"ROUTINE":695,"ROUTINE_CATALOG":696,"ROUTINE_NAME":697,"ROUTINE_SCHEMA":698,"ROW_COUNT":699,"SCALE":700,"SCHEMA":701,"SCHEMA_NAME":702,"SCOPE_CATALOG":703,"SCOPE_NAME":704,"SCOPE_SCHEMA":705,"SECTION":706,"SECURITY":707,"SELECTIVE":708,"SELF":709,"SEQUENCE":710,"SERIALIZABLE":711,"SERVER":712,"SERVER_NAME":713,"SESSION":714,"SETS":715,"SIMPLE":716,"SIZE":717,"SPACE":718,"SPECIFIC_NAME":719,"STANDALONE":720,"STATE":721,"STATEMENT":722,"STRIP":723,"STRUCTURE":724,"STYLE":725,"SUBCLASS_ORIGIN":726,"T":727,"TABLE_NAME":728,"TEMPORARY":729,"TIES":730,"TOKEN":731,"TOP_LEVEL_COUNT":732,"TRANSACTIONS_COMMITTED":733,"TRANSACTIONS_ROLLED_BACK":734,"TRANSACTION_ACTIVE":735,"TRANSFORM":736,"TRANSFORMS":737,"TRIGGER_CATALOG":738,"TRIGGER_NAME":739,"TRIGGER_SCHEMA":740,"TYPE":741,"UNBOUNDED":742,"UNCOMMITTED":743,"UNDER":744,"UNLINK":745,"UNNAMED":746,"UNTYPED":747,"URI":748,"USAGE":749,"USER_DEFINED_TYPE_CATALOG":750,"USER_DEFINED_TYPE_CODE":751,"USER_DEFINED_TYPE_NAME":752,"USER_DEFINED_TYPE_SCHEMA":753,"VALID":754,"VERSION":755,"WHITESPACE":756,"WORK":757,"WRAPPER":758,"WRITE":759,"XMLDECLARATION":760,"XMLSCHEMA":761,"YES":762,"ZONE":763,"SEMICOLON":764,"PERCENT":765,"ROWS":766,"FuncValue_option0_group0":767,"$accept":0,"$end":1},
-terminals_: {2:"error",4:"LITERAL",5:"BRALITERAL",10:"EOF",14:"EXPLAIN",15:"QUERY",16:"PLAN",53:"EndTransaction",72:"WITH",74:"COMMA",76:"AS",77:"LPAR",78:"RPAR",89:"SEARCH",93:"PIVOT",95:"FOR",98:"UNPIVOT",99:"IN",107:"REMOVE",112:"LIKE",115:"ARROW",116:"DOT",118:"ORDER",119:"BY",122:"DOTDOT",123:"CARET",124:"EQ",128:"WHERE",129:"OF",130:"CLASS",131:"NUMBER",132:"STRING",133:"SLASH",134:"VERTEX",135:"EDGE",136:"EXCLAMATION",137:"SHARP",138:"MODULO",139:"GT",140:"LT",141:"GTGT",142:"LTLT",143:"DOLLAR",145:"AT",146:"SET",148:"TO",149:"VALUE",150:"ROW",152:"COLON",154:"NOT",156:"IF",162:"UNION",164:"ALL",166:"ANY",168:"INTERSECT",169:"EXCEPT",170:"AND",171:"OR",172:"PATH",173:"RETURN",175:"REPEAT",179:"PLUS",180:"STAR",181:"QUESTION",183:"FROM",185:"DISTINCT",187:"UNIQUE",189:"SELECT",190:"COLUMN",191:"MATRIX",192:"TEXTSTRING",193:"INDEX",194:"RECORDSET",195:"TOP",198:"INTO",206:"CROSS",207:"APPLY",208:"OUTER",212:"INDEXED",213:"INSERTED",222:"NATURAL",223:"JOIN",224:"INNER",225:"LEFT",226:"RIGHT",227:"FULL",228:"SEMI",229:"ANTI",230:"ON",231:"USING",232:"GROUP",236:"GROUPING",237:"ROLLUP",238:"CUBE",239:"HAVING",240:"CORRESPONDING",242:"DIRECTION",243:"COLLATE",244:"NOCASE",245:"LIMIT",247:"OFFSET",249:"FETCH",265:"CURRENT_TIMESTAMP",266:"JAVASCRIPT",267:"CREATE",268:"FUNCTION",269:"AGGREGATE",270:"NEW",271:"CAST",273:"CONVERT",276:"OVER",279:"PARTITION",280:"SUM",281:"COUNT",282:"MIN",283:"MAX",284:"AVG",285:"FIRST",286:"LAST",287:"AGGR",288:"ARRAY",290:"REPLACE",291:"DATEADD",292:"DATEDIFF",293:"INTERVAL",294:"TRUE",295:"FALSE",296:"NSTRING",297:"NULL",298:"EXISTS",299:"ARRAYLBRA",300:"RBRA",302:"BRAQUESTION",303:"CASE",306:"END",308:"WHEN",309:"THEN",310:"ELSE",311:"REGEXP",312:"TILDA",313:"GLOB",314:"ESCAPE",315:"NOT_LIKE",316:"BARBAR",317:"MINUS",318:"AMPERSAND",319:"BAR",320:"GE",321:"LE",322:"EQEQ",323:"EQEQEQ",324:"NE",325:"NEEQEQ",326:"NEEQEQEQ",330:"BETWEEN",331:"NOT_BETWEEN",332:"IS",333:"DOUBLECOLON",334:"SOME",335:"UPDATE",338:"DELETE",339:"INSERT",343:"DEFAULT",344:"VALUES",347:"DateValue",353:"TABLE",356:"IDENTITY",357:"TEMP",367:"CONSTRAINT",368:"CHECK",369:"PRIMARY",370:"KEY",373:"FOREIGN",374:"REFERENCES",380:"NO",381:"ACTION",386:"ColumnConstraints",389:"ENUM",390:"MAXNUM",396:"DROP",400:"ALTER",401:"RENAME",402:"ADD",403:"MODIFY",404:"ATTACH",405:"DATABASE",406:"DETACH",408:"USE",409:"SHOW",410:"VIEW",414:"READ",415:"ONLY",416:"OPTION",417:"SOURCE",418:"ASSERT",420:"ATLBRA",424:"LCUR",426:"RCUR",433:"OFF",434:"COMMIT",435:"TRANSACTION",436:"ROLLBACK",437:"BEGIN",439:"WHILE",440:"CONTINUE",441:"BREAK",442:"PRINT",443:"REQUIRE",447:"ECHO",448:"DECLARE",451:"TRUNCATE",452:"MERGE",460:"MATCHED",463:"TARGET",464:"OUTPUT",470:"CONTENT",472:"GRAPH",505:"COLONDASH",507:"QUESTIONDASH",508:"CALL",509:"TRIGGER",514:"BEFORE",515:"AFTER",516:"INSTEAD",517:"REINDEX",518:"A",519:"ABSENT",520:"ABSOLUTE",521:"ACCORDING",522:"ADA",523:"ADMIN",524:"ALWAYS",525:"ASC",526:"ASSERTION",527:"ASSIGNMENT",528:"ATTRIBUTE",529:"ATTRIBUTES",530:"BASE64",531:"BERNOULLI",532:"BLOCKED",533:"BOM",534:"BREADTH",535:"C",536:"CASCADE",537:"CATALOG",538:"CATALOG_NAME",539:"CHAIN",540:"CHARACTERISTICS",541:"CHARACTERS",542:"CHARACTER_SET_CATALOG",543:"CHARACTER_SET_NAME",544:"CHARACTER_SET_SCHEMA",545:"CLASS_ORIGIN",546:"COBOL",547:"COLLATION",548:"COLLATION_CATALOG",549:"COLLATION_NAME",550:"COLLATION_SCHEMA",551:"COLUMNS",552:"COLUMN_NAME",553:"COMMAND_FUNCTION",554:"COMMAND_FUNCTION_CODE",555:"COMMITTED",556:"CONDITION_NUMBER",557:"CONNECTION",558:"CONNECTION_NAME",559:"CONSTRAINTS",560:"CONSTRAINT_CATALOG",561:"CONSTRAINT_NAME",562:"CONSTRAINT_SCHEMA",563:"CONSTRUCTOR",564:"CONTROL",565:"CURSOR_NAME",566:"DATA",567:"DATETIME_INTERVAL_CODE",568:"DATETIME_INTERVAL_PRECISION",569:"DB",570:"DEFAULTS",571:"DEFERRABLE",572:"DEFERRED",573:"DEFINED",574:"DEFINER",575:"DEGREE",576:"DEPTH",577:"DERIVED",578:"DESC",579:"DESCRIPTOR",580:"DIAGNOSTICS",581:"DISPATCH",582:"DOCUMENT",583:"DOMAIN",584:"DYNAMIC_FUNCTION",585:"DYNAMIC_FUNCTION_CODE",586:"EMPTY",587:"ENCODING",588:"ENFORCED",589:"EXCLUDE",590:"EXCLUDING",591:"EXPRESSION",592:"FILE",593:"FINAL",594:"FLAG",595:"FOLLOWING",596:"FORTRAN",597:"FOUND",598:"FS",599:"G",600:"GENERAL",601:"GENERATED",602:"GO",603:"GOTO",604:"GRANTED",605:"HEX",606:"HIERARCHY",607:"ID",608:"IGNORE",609:"IMMEDIATE",610:"IMMEDIATELY",611:"IMPLEMENTATION",612:"INCLUDING",613:"INCREMENT",614:"INDENT",615:"INITIALLY",616:"INPUT",617:"INSTANCE",618:"INSTANTIABLE",619:"INTEGRITY",620:"INVOKER",621:"ISOLATION",622:"K",623:"KEY_MEMBER",624:"KEY_TYPE",625:"LENGTH",626:"LEVEL",627:"LIBRARY",628:"LINK",629:"LOCATION",630:"LOCATOR",631:"M",632:"MAP",633:"MAPPING",634:"MAXVALUE",635:"MESSAGE_LENGTH",636:"MESSAGE_OCTET_LENGTH",637:"MESSAGE_TEXT",638:"MINVALUE",639:"MORE",640:"MUMPS",641:"NAME",642:"NAMES",643:"NAMESPACE",644:"NESTING",645:"NEXT",646:"NFC",647:"NFD",648:"NFKC",649:"NFKD",650:"NIL",651:"NORMALIZED",652:"NULLABLE",653:"NULLS",654:"OBJECT",655:"OCTETS",656:"OPTIONS",657:"ORDERING",658:"ORDINALITY",659:"OTHERS",660:"OVERRIDING",661:"P",662:"PAD",663:"PARAMETER_MODE",664:"PARAMETER_NAME",665:"PARAMETER_ORDINAL_POSITION",666:"PARAMETER_SPECIFIC_CATALOG",667:"PARAMETER_SPECIFIC_NAME",668:"PARAMETER_SPECIFIC_SCHEMA",669:"PARTIAL",670:"PASCAL",671:"PASSING",672:"PASSTHROUGH",673:"PERMISSION",674:"PLACING",675:"PLI",676:"PRECEDING",677:"PRESERVE",678:"PRIOR",679:"PRIVILEGES",680:"PUBLIC",681:"RECOVERY",682:"RELATIVE",683:"REPEATABLE",684:"REQUIRING",685:"RESPECT",686:"RESTART",687:"RESTORE",688:"RESTRICT",689:"RETURNED_CARDINALITY",690:"RETURNED_LENGTH",691:"RETURNED_OCTET_LENGTH",692:"RETURNED_SQLSTATE",693:"RETURNING",694:"ROLE",695:"ROUTINE",696:"ROUTINE_CATALOG",697:"ROUTINE_NAME",698:"ROUTINE_SCHEMA",699:"ROW_COUNT",700:"SCALE",701:"SCHEMA",702:"SCHEMA_NAME",703:"SCOPE_CATALOG",704:"SCOPE_NAME",705:"SCOPE_SCHEMA",706:"SECTION",707:"SECURITY",708:"SELECTIVE",709:"SELF",710:"SEQUENCE",711:"SERIALIZABLE",712:"SERVER",713:"SERVER_NAME",714:"SESSION",715:"SETS",716:"SIMPLE",717:"SIZE",718:"SPACE",719:"SPECIFIC_NAME",720:"STANDALONE",721:"STATE",722:"STATEMENT",723:"STRIP",724:"STRUCTURE",725:"STYLE",726:"SUBCLASS_ORIGIN",727:"T",728:"TABLE_NAME",729:"TEMPORARY",730:"TIES",731:"TOKEN",732:"TOP_LEVEL_COUNT",733:"TRANSACTIONS_COMMITTED",734:"TRANSACTIONS_ROLLED_BACK",735:"TRANSACTION_ACTIVE",736:"TRANSFORM",737:"TRANSFORMS",738:"TRIGGER_CATALOG",739:"TRIGGER_NAME",740:"TRIGGER_SCHEMA",741:"TYPE",742:"UNBOUNDED",743:"UNCOMMITTED",744:"UNDER",745:"UNLINK",746:"UNNAMED",747:"UNTYPED",748:"URI",749:"USAGE",750:"USER_DEFINED_TYPE_CATALOG",751:"USER_DEFINED_TYPE_CODE",752:"USER_DEFINED_TYPE_NAME",753:"USER_DEFINED_TYPE_SCHEMA",754:"VALID",755:"VERSION",756:"WHITESPACE",757:"WORK",758:"WRAPPER",759:"WRITE",760:"XMLDECLARATION",761:"XMLSCHEMA",762:"YES",763:"ZONE",764:"SEMICOLON",765:"PERCENT",766:"ROWS"},
-productions_: [0,[3,1],[3,1],[3,2],[7,1],[7,2],[8,2],[9,3],[9,1],[9,1],[13,2],[13,4],[12,1],[17,0],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[47,3],[73,3],[73,1],[75,5],[40,10],[40,4],[92,8],[92,11],[102,4],[104,2],[104,1],[103,3],[103,1],[105,1],[105,3],[106,3],[109,3],[109,1],[110,1],[110,2],[114,1],[114,1],[117,1],[117,5],[117,5],[117,1],[117,2],[117,1],[117,2],[117,2],[117,3],[117,4],[117,4],[117,4],[117,4],[117,4],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,2],[117,2],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,3],[117,4],[117,3],[117,1],[117,4],[117,2],[117,2],[117,4],[117,4],[117,4],[117,4],[117,4],[117,5],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,6],[163,3],[163,1],[153,1],[153,1],[153,1],[182,2],[79,4],[79,4],[79,4],[79,3],[184,1],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[186,3],[186,4],[186,0],[81,0],[81,2],[81,2],[81,2],[81,2],[81,2],[82,2],[82,3],[82,5],[82,0],[205,6],[205,7],[205,6],[205,7],[203,1],[203,3],[209,4],[209,5],[209,3],[209,3],[209,2],[209,3],[209,1],[209,3],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,2],[209,3],[214,1],[199,3],[199,1],[204,2],[204,2],[204,1],[204,1],[215,3],[217,1],[217,2],[217,3],[217,3],[217,2],[217,3],[217,4],[217,5],[217,1],[217,2],[217,3],[217,1],[217,2],[217,3],[216,1],[216,2],[221,1],[221,2],[221,2],[221,3],[221,2],[221,3],[221,2],[221,3],[221,2],[221,2],[221,2],[218,2],[218,2],[218,0],[84,0],[84,2],[85,0],[85,4],[233,1],[233,3],[235,5],[235,4],[235,4],[235,1],[234,0],[234,2],[88,0],[88,2],[88,3],[88,2],[88,2],[88,3],[88,4],[88,3],[88,3],[86,0],[86,3],[120,1],[120,3],[241,1],[241,2],[241,3],[241,4],[87,0],[87,3],[87,8],[246,0],[246,2],[174,3],[174,1],[253,3],[253,2],[253,3],[253,2],[253,3],[253,2],[253,1],[254,5],[254,3],[254,1],[111,5],[111,3],[111,3],[111,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,3],[94,3],[94,3],[94,1],[94,1],[56,1],[70,5],[71,5],[263,2],[263,2],[261,6],[261,8],[261,6],[261,8],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[255,5],[255,6],[255,6],[275,0],[275,4],[275,4],[275,5],[277,3],[278,3],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[200,5],[200,3],[200,4],[200,4],[200,8],[200,8],[200,8],[200,8],[200,3],[151,1],[151,3],[196,1],[257,1],[257,1],[113,1],[113,1],[258,1],[202,2],[259,4],[262,3],[201,2],[201,2],[201,1],[201,1],[260,5],[260,4],[304,2],[304,1],[307,4],[305,2],[305,0],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,6],[256,6],[256,3],[256,3],[256,2],[256,2],[256,2],[256,2],[256,2],[256,3],[256,5],[256,6],[256,5],[256,6],[256,4],[256,5],[256,3],[256,4],[256,3],[256,4],[256,3],[256,3],[256,3],[256,3],[256,3],[329,1],[329,1],[329,4],[327,1],[327,1],[327,1],[327,1],[327,1],[327,1],[328,1],[328,1],[328,1],[55,6],[55,4],[147,1],[147,3],[336,3],[336,4],[29,5],[29,3],[36,5],[36,4],[36,7],[36,6],[36,5],[36,4],[36,5],[36,8],[36,7],[36,4],[36,6],[36,7],[341,1],[341,1],[340,0],[340,1],[342,3],[342,1],[342,1],[342,5],[342,3],[342,3],[345,1],[345,3],[346,1],[346,1],[346,1],[346,1],[346,1],[346,1],[100,1],[100,3],[24,9],[24,5],[349,1],[349,1],[352,0],[352,1],[354,2],[354,1],[355,1],[355,3],[355,3],[355,3],[348,0],[348,1],[350,0],[350,3],[351,3],[351,1],[351,2],[359,1],[359,3],[360,2],[360,2],[360,2],[360,2],[360,2],[361,0],[361,2],[366,4],[362,6],[363,9],[377,3],[376,0],[376,2],[378,4],[379,4],[364,6],[365,5],[365,5],[372,1],[372,1],[372,3],[372,3],[358,1],[358,3],[384,3],[384,2],[384,1],[387,6],[387,4],[387,1],[387,4],[272,2],[272,1],[388,1],[388,1],[385,0],[385,1],[391,2],[391,1],[393,3],[392,2],[392,5],[392,3],[392,6],[392,1],[392,2],[392,4],[392,2],[392,1],[392,2],[392,1],[392,1],[392,3],[392,5],[33,4],[399,3],[399,1],[398,0],[398,2],[18,6],[18,6],[18,6],[18,8],[18,6],[39,5],[19,4],[19,7],[19,6],[19,9],[30,3],[21,4],[21,6],[21,9],[21,6],[407,0],[407,2],[54,3],[54,2],[31,4],[31,5],[31,5],[22,8],[22,9],[32,3],[43,2],[43,4],[43,3],[43,5],[45,2],[45,4],[45,4],[45,6],[42,4],[42,6],[44,4],[44,6],[41,4],[41,6],[25,11],[25,8],[413,3],[413,3],[413,5],[34,4],[66,2],[57,2],[58,2],[58,2],[58,4],[144,4],[144,2],[144,2],[144,2],[144,2],[144,1],[144,2],[144,2],[422,1],[422,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,3],[419,3],[419,4],[419,2],[421,2],[421,3],[421,1],[425,3],[425,1],[428,3],[428,3],[428,3],[427,3],[427,1],[65,4],[65,3],[65,4],[65,5],[65,5],[65,6],[431,1],[431,1],[430,3],[430,2],[432,1],[432,1],[432,3],[429,1],[429,1],[51,2],[52,2],[50,2],[35,4],[35,3],[438,2],[59,3],[60,1],[61,1],[62,3],[63,2],[63,2],[64,2],[64,2],[446,1],[446,1],[69,2],[444,3],[444,1],[445,3],[445,1],[28,2],[449,1],[449,3],[450,3],[450,4],[450,5],[450,6],[46,3],[37,6],[453,1],[453,2],[454,2],[455,2],[456,2],[456,2],[456,1],[456,1],[458,4],[458,6],[461,1],[461,3],[459,5],[459,7],[459,7],[459,9],[459,7],[459,9],[462,3],[462,6],[462,3],[462,6],[457,0],[457,2],[457,5],[457,4],[457,7],[27,6],[469,2],[468,0],[468,2],[468,2],[468,1],[26,8],[23,3],[23,4],[473,3],[473,1],[474,3],[474,7],[474,6],[474,3],[474,4],[478,1],[478,1],[482,2],[483,3],[484,2],[485,4],[475,4],[475,3],[475,2],[475,1],[497,2],[493,2],[493,2],[498,4],[500,6],[67,3],[67,2],[506,3],[506,1],[504,1],[504,4],[68,2],[20,2],[48,9],[48,8],[48,9],[510,0],[510,1],[510,1],[510,1],[510,2],[511,1],[511,1],[511,1],[49,3],[38,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[11,1],[11,1],[80,0],[80,1],[83,0],[83,1],[90,0],[90,2],[91,0],[91,1],[96,0],[96,1],[97,0],[97,1],[101,0],[101,1],[108,0],[108,1],[121,0],[121,1],[125,1],[125,2],[126,1],[126,2],[127,0],[127,1],[155,0],[155,2],[157,0],[157,2],[159,0],[159,2],[160,1],[160,1],[161,0],[161,2],[165,0],[165,2],[167,0],[167,2],[176,0],[176,2],[177,0],[177,2],[178,0],[178,2],[188,0],[188,1],[197,0],[197,1],[210,0],[210,1],[211,0],[211,1],[219,0],[219,1],[220,0],[220,1],[248,0],[248,1],[250,0],[250,1],[251,0],[251,1],[252,0],[252,1],[264,1],[264,1],[767,1],[767,1],[289,0],[289,1],[301,1],[301,1],[337,1],[337,1],[371,0],[371,1],[375,0],[375,1],[382,0],[382,1],[383,0],[383,1],[394,0],[394,1],[395,0],[395,1],[397,1],[397,1],[411,0],[411,1],[412,0],[412,1],[465,0],[465,1],[466,0],[466,1],[467,0],[467,1],[471,0],[471,1],[476,0],[476,1],[477,0],[477,1],[479,0],[479,1],[480,0],[480,1],[481,0],[481,1],[486,0],[486,1],[487,0],[487,1],[488,0],[488,1],[489,0],[489,1],[490,0],[490,1],[491,0],[491,1],[492,0],[492,1],[494,0],[494,1],[495,0],[495,1],[496,0],[496,1],[499,0],[499,2],[501,0],[501,2],[502,0],[502,2],[503,0],[503,2],[512,0],[512,1],[513,0],[513,1]],
-performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
-/* this == yyval */
-
-var $0 = $$.length - 1;
-switch (yystate) {
-case 1:
-
- if (alasql.options.casesensitive) this.$ = $$[$0];
- else this.$ = $$[$0].toLowerCase();
-
-break;
-case 2:
- this.$ = doubleq($$[$0].substr(1,$$[$0].length-2));
-break;
-case 3:
- this.$ = $$[$0].toLowerCase()
-break;
-case 4:
- this.$ = $$[$0]
-break;
-case 5:
- this.$ = $$[$0] ? $$[$0-1] + ' ' + $$[$0] : $$[$0-1]
-break;
-case 6:
- return new yy.Statements({statements:$$[$0-1]});
-break;
-case 7:
- this.$ = $$[$0-2]; if($$[$0]) $$[$0-2].push($$[$0]);
-break;
-case 8: case 9: case 70: case 80: case 85: case 143: case 177: case 205: case 206: case 242: case 261: case 273: case 354: case 372: case 451: case 474: case 475: case 479: case 487: case 528: case 529: case 566: case 649: case 659: case 683: case 685: case 687: case 701: case 702: case 732: case 756:
- this.$ = [$$[$0]];
-break;
-case 10:
- this.$ = $$[$0]; $$[$0].explain = true;
-break;
-case 11:
- this.$ = $$[$0]; $$[$0].explain = true;
-break;
-case 12:
-
- this.$ = $$[$0];
-
- // TODO combine exists and queries
- if(yy.exists) this.$.exists = yy.exists;
- delete yy.exists;
- if(yy.queries) this.$.queries = yy.queries;
- delete yy.queries;
-
-break;
-case 13: case 162: case 172: case 237: case 238: case 240: case 248: case 250: case 259: case 267: case 270: case 375: case 491: case 501: case 503: case 515: case 521: case 522: case 567:
- this.$ = undefined;
-break;
-case 68:
- this.$ = new yy.WithSelect({withs: $$[$0-1], select:$$[$0]});
-break;
-case 69: case 565:
- $$[$0-2].push($$[$0]); this.$=$$[$0-2];
-break;
-case 71:
- this.$ = {name:$$[$0-4], select:$$[$0-1]};
-break;
-case 72:
-
- yy.extend(this.$,$$[$0-9]); yy.extend(this.$,$$[$0-8]); yy.extend(this.$,$$[$0-7]); yy.extend(this.$,$$[$0-6]);
- yy.extend(this.$,$$[$0-5]); yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);
- yy.extend(this.$,$$[$0-2]); yy.extend(this.$,$$[$0-1]); yy.extend(this.$,$$[$0]);
- this.$ = $$[$0-9];
-/* if(yy.exists) this.$.exists = yy.exists;
- delete yy.exists;
- if(yy.queries) this.$.queries = yy.queries;
- delete yy.queries;
-*/
-break;
-case 73:
-
- this.$ = new yy.Search({selectors:$$[$0-2], from:$$[$0]});
- yy.extend(this.$,$$[$0-1]);
-
-break;
-case 74:
- this.$ = {pivot:{expr:$$[$0-5], columnid:$$[$0-3], inlist:$$[$0-2], as:$$[$0]}};
-break;
-case 75:
- this.$ = {unpivot:{tocolumnid:$$[$0-8], forcolumnid:$$[$0-6], inlist:$$[$0-3], as:$$[$0]}};
-break;
-case 76: case 520: case 549: case 585: case 619: case 636: case 637: case 640: case 662:
- this.$ = $$[$0-1];
-break;
-case 77: case 78: case 86: case 147: case 185: case 247: case 280: case 288: case 289: case 290: case 291: case 292: case 293: case 294: case 295: case 296: case 297: case 298: case 299: case 300: case 301: case 304: case 305: case 320: case 321: case 322: case 323: case 324: case 325: case 374: case 440: case 441: case 442: case 443: case 444: case 445: case 516: case 542: case 546: case 548: case 623: case 624: case 625: case 626: case 627: case 628: case 632: case 634: case 635: case 644: case 660: case 661: case 723: case 738: case 739: case 741: case 742: case 748: case 749:
- this.$ = $$[$0];
-break;
-case 79: case 84: case 731: case 755:
- this.$ = $$[$0-2]; this.$.push($$[$0]);
-break;
-case 81:
- this.$ = {expr:$$[$0]};
-break;
-case 82:
- this.$ = {expr:$$[$0-2],as:$$[$0]};
-break;
-case 83:
- this.$ = {removecolumns:$$[$0]};
-break;
-case 87:
- this.$ = {like:$$[$0]};
-break;
-case 90: case 104:
- this.$ = {srchid:"PROP", args: [$$[$0]]};
-break;
-case 91:
- this.$ = {srchid:"ORDERBY", args: $$[$0-1]};
-break;
-case 92:
-
- var dir = $$[$0-1];
- if(!dir) dir = 'ASC';
- this.$ = {srchid:"ORDERBY", args: [{expression: new yy.Column({columnid:'_'}), direction:dir}]};
-
-break;
-case 93:
- this.$ = {srchid:"PARENT"};
-break;
-case 94:
- this.$ = {srchid:"APROP", args: [$$[$0]]};
-break;
-case 95:
- this.$ = {selid:"ROOT"};
-break;
-case 96:
- this.$ = {srchid:"EQ", args: [$$[$0]]};
-break;
-case 97:
- this.$ = {srchid:"LIKE", args: [$$[$0]]};
-break;
-case 98: case 99:
- this.$ = {selid:"WITH", args: $$[$0-1]};
-break;
-case 100:
- this.$ = {srchid:$$[$0-3].toUpperCase(), args:$$[$0-1]};
-break;
-case 101:
- this.$ = {srchid:"WHERE", args:[$$[$0-1]]};
-break;
-case 102:
- this.$ = {selid:"OF", args:[$$[$0-1]]};
-break;
-case 103:
- this.$ = {srchid:"CLASS", args:[$$[$0-1]]};
-break;
-case 105:
- this.$ = {srchid:"NAME", args: [$$[$0].substr(1,$$[$0].length-2)]};
-break;
-case 106:
- this.$ = {srchid:"CHILD"};
-break;
-case 107:
- this.$ = {srchid:"VERTEX"};
-break;
-case 108:
- this.$ = {srchid:"EDGE"};
-break;
-case 109:
- this.$ = {srchid:"REF"};
-break;
-case 110:
- this.$ = {srchid:"SHARP", args:[$$[$0]]};
-break;
-case 111:
- this.$ = {srchid:"ATTR", args:((typeof $$[$0] == 'undefined')?undefined:[$$[$0]])};
-break;
-case 112:
- this.$ = {srchid:"ATTR"};
-break;
-case 113:
- this.$ = {srchid:"OUT"};
-break;
-case 114:
- this.$ = {srchid:"IN"};
-break;
-case 115:
- this.$ = {srchid:"OUTOUT"};
-break;
-case 116:
- this.$ = {srchid:"ININ"};
-break;
-case 117:
- this.$ = {srchid:"CONTENT"};
-break;
-case 118:
- this.$ = {srchid:"EX",args:[new yy.Json({value:$$[$0]})]};
-break;
-case 119:
- this.$ = {srchid:"AT", args:[$$[$0]]};
-break;
-case 120:
- this.$ = {srchid:"AS", args:[$$[$0]]};
-break;
-case 121:
- this.$ = {srchid:"SET", args:$$[$0-1]};
-break;
-case 122:
- this.$ = {selid:"TO", args:[$$[$0]]};
-break;
-case 123:
- this.$ = {srchid:"VALUE"};
-break;
-case 124:
- this.$ = {srchid:"ROW", args:$$[$0-1]};
-break;
-case 125:
- this.$ = {srchid:"CLASS", args:[$$[$0]]};
-break;
-case 126:
- this.$ = {selid:$$[$0],args:[$$[$0-1]] };
-break;
-case 127:
- this.$ = {selid:"NOT",args:$$[$0-1] };
-break;
-case 128:
- this.$ = {selid:"IF",args:$$[$0-1] };
-break;
-case 129:
- this.$ = {selid:$$[$0-3],args:$$[$0-1] };
-break;
-case 130:
- this.$ = {selid:'DISTINCT',args:$$[$0-1] };
-break;
-case 131:
- this.$ = {selid:'UNION',args:$$[$0-1] };
-break;
-case 132:
- this.$ = {selid:'UNIONALL',args:$$[$0-1] };
-break;
-case 133:
- this.$ = {selid:'ALL',args:[$$[$0-1]] };
-break;
-case 134:
- this.$ = {selid:'ANY',args:[$$[$0-1]] };
-break;
-case 135:
- this.$ = {selid:'INTERSECT',args:$$[$0-1] };
-break;
-case 136:
- this.$ = {selid:'EXCEPT',args:$$[$0-1] };
-break;
-case 137:
- this.$ = {selid:'AND',args:$$[$0-1] };
-break;
-case 138:
- this.$ = {selid:'OR',args:$$[$0-1] };
-break;
-case 139:
- this.$ = {selid:'PATH',args:[$$[$0-1]] };
-break;
-case 140:
- this.$ = {srchid:'RETURN',args:$$[$0-1] };
-break;
-case 141:
- this.$ = {selid:'REPEAT',sels:$$[$0-3], args:$$[$0-1] };
-break;
-case 142:
- this.$ = $$[$0-2]; this.$.push($$[$0]);
-break;
-case 144:
- this.$ = "PLUS";
-break;
-case 145:
- this.$ = "STAR";
-break;
-case 146:
- this.$ = "QUESTION";
-break;
-case 148:
- this.$ = new yy.Select({ columns:$$[$0], distinct: true }); yy.extend(this.$, $$[$0-3]); yy.extend(this.$, $$[$0-1]);
-break;
-case 149:
- this.$ = new yy.Select({ columns:$$[$0], distinct: true }); yy.extend(this.$, $$[$0-3]);yy.extend(this.$, $$[$0-1]);
-break;
-case 150:
- this.$ = new yy.Select({ columns:$$[$0], all:true }); yy.extend(this.$, $$[$0-3]);yy.extend(this.$, $$[$0-1]);
-break;
-case 151:
-
- if(!$$[$0]) {
- this.$ = new yy.Select({columns:[new yy.Column({columnid:'_',})], modifier:'COLUMN'});
- } else {
- this.$ = new yy.Select({ columns:$$[$0] }); yy.extend(this.$, $$[$0-2]);yy.extend(this.$, $$[$0-1]);
- }
-
-break;
-case 152:
- if($$[$0]=='SELECT') this.$ = undefined; else this.$ = {modifier: $$[$0]};
-break;
-case 153:
- this.$ = {modifier:'VALUE'}
-break;
-case 154:
- this.$ = {modifier:'ROW'}
-break;
-case 155:
- this.$ = {modifier:'COLUMN'}
-break;
-case 156:
- this.$ = {modifier:'MATRIX'}
-break;
-case 157:
- this.$ = {modifier:'TEXTSTRING'}
-break;
-case 158:
- this.$ = {modifier:'INDEX'}
-break;
-case 159:
- this.$ = {modifier:'RECORDSET'}
-break;
-case 160:
- this.$ = {top: $$[$0-1], percent:(typeof $$[$0] != 'undefined'?true:undefined)};
-break;
-case 161:
- this.$ = {top: $$[$0-1]};
-break;
-case 163: case 330: case 523: case 524: case 724:
-this.$ = undefined;
-break;
-case 164: case 165: case 166: case 167:
-this.$ = {into: $$[$0]}
-break;
-case 168:
-
- var s = $$[$0];
- s = s.substr(1,s.length-2);
- var x3 = s.substr(-3).toUpperCase();
- var x4 = s.substr(-4).toUpperCase();
- if(s[0] == '#') {
- this.$ = {into: new yy.FuncValue({funcid: 'HTML', args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
- } else if(x3=='XLS' || x3 == 'CSV' || x3=='TAB') {
- this.$ = {into: new yy.FuncValue({funcid: x3, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
- } else if(x4=='XLSX' || x4 == 'JSON') {
- this.$ = {into: new yy.FuncValue({funcid: x4, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
- }
-
-break;
-case 169:
- this.$ = { from: $$[$0] };
-break;
-case 170:
- this.$ = { from: $$[$0-1], joins: $$[$0] };
-break;
-case 171:
- this.$ = { from: $$[$0-2], joins: $$[$0-1] };
-break;
-case 173:
- this.$ = new yy.Apply({select: $$[$0-2], applymode:'CROSS', as:$$[$0]});
-break;
-case 174:
- this.$ = new yy.Apply({select: $$[$0-3], applymode:'CROSS', as:$$[$0]});
-break;
-case 175:
- this.$ = new yy.Apply({select: $$[$0-2], applymode:'OUTER', as:$$[$0]});
-break;
-case 176:
- this.$ = new yy.Apply({select: $$[$0-3], applymode:'OUTER', as:$$[$0]});
-break;
-case 178: case 243: case 452: case 530: case 531:
- this.$ = $$[$0-2]; $$[$0-2].push($$[$0]);
-break;
-case 179:
- this.$ = $$[$0-2]; this.$.as = $$[$0]
-break;
-case 180:
- this.$ = $$[$0-3]; this.$.as = $$[$0]
-break;
-case 181:
- this.$ = $$[$0-1]; this.$.as = 'default'
-break;
-case 182:
- this.$ = new yy.Json({value:$$[$0-2]}); $$[$0-2].as = $$[$0]
-break;
-case 183:
- this.$ = $$[$0-1]; $$[$0-1].as = $$[$0]
-break;
-case 184:
- this.$ = $$[$0-2]; $$[$0-2].as = $$[$0]
-break;
-case 186: case 638: case 641:
- this.$ = $$[$0-2];
-break;
-case 187: case 191: case 195: case 198:
- this.$ = $$[$0-1]; $$[$0-1].as = $$[$0];
-break;
-case 188: case 192: case 196: case 199:
- this.$ = $$[$0-2]; $$[$0-2].as = $$[$0];
-break;
-case 189: case 190: case 194: case 197:
- this.$ = $$[$0]; $$[$0].as = 'default';
-break;
-case 193:
- this.$ = {inserted:true}; /*$$[$0].as = 'default'*/;
-break;
-case 200:
-
- var s = $$[$0];
- s = s.substr(1,s.length-2);
- var x3 = s.substr(-3).toUpperCase();
- var x4 = s.substr(-4).toUpperCase();
- var r;
- if(s[0] == '#') {
- r = new yy.FuncValue({funcid: 'HTML', args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
- } else if(x3=='XLS' || x3 == 'CSV' || x3=='TAB') {
- r = new yy.FuncValue({funcid: x3, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
- } else if(x4=='XLSX' || x4 == 'JSON') {
- r = new yy.FuncValue({funcid: x4, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
- } else {
- throw new Error('Unknown string in FROM clause');
- };
- this.$ = r;
-
-break;
-case 201:
-
- if($$[$0-2] == 'INFORMATION_SCHEMA') {
- this.$ = new yy.FuncValue({funcid: $$[$0-2], args:[new yy.StringValue({value:$$[$0]})]});
- } else {
- this.$ = new yy.Table({databaseid: $$[$0-2], tableid:$$[$0]});
- }
-
-break;
-case 202:
- this.$ = new yy.Table({tableid: $$[$0]});
-break;
-case 203: case 204:
- this.$ = $$[$0-1]; $$[$0-1].push($$[$0]);
-break;
-case 207:
- this.$ = new yy.Join($$[$0-2]); yy.extend(this.$, $$[$0-1]); yy.extend(this.$, $$[$0]);
-break;
-case 208:
- this.$ = {table: $$[$0]};
-break;
-case 209:
- this.$ = {table: $$[$0-1], as: $$[$0] } ;
-break;
-case 210:
- this.$ = {table: $$[$0-2], as: $$[$0] } ;
-break;
-case 211:
- this.$ = {json:new yy.Json({value:$$[$0-2],as:$$[$0]})};
-break;
-case 212:
- this.$ = {param: $$[$0-1], as: $$[$0] } ;
-break;
-case 213:
- this.$ = {param: $$[$0-2], as: $$[$0] } ;
-break;
-case 214:
- this.$ = {select: $$[$0-2], as: $$[$0]} ;
-break;
-case 215:
- this.$ = {select: $$[$0-3], as: $$[$0] } ;
-break;
-case 216:
- this.$ = {func:$$[$0], as:'default'};
-break;
-case 217:
- this.$ = {func:$$[$0-1], as: $$[$0]};
-break;
-case 218:
- this.$ = {func:$$[$0-2], as: $$[$0]};
-break;
-case 219:
- this.$ = {variable:$$[$0],as:'default'};
-break;
-case 220:
- this.$ = {variable:$$[$0-1],as:$$[$0]};
-break;
-case 221:
- this.$ = {variable:$$[$0-2],as:$$[$0]}
-break;
-case 222:
- this.$ = { joinmode: $$[$0] } ;
-break;
-case 223:
- this.$ = {joinmode: $$[$0-1], natural:true} ;
-break;
-case 224: case 225:
- this.$ = "INNER";
-break;
-case 226: case 227:
- this.$ = "LEFT";
-break;
-case 228: case 229:
- this.$ = "RIGHT";
-break;
-case 230: case 231:
- this.$ = "OUTER";
-break;
-case 232:
- this.$ = "SEMI";
-break;
-case 233:
- this.$ = "ANTI";
-break;
-case 234:
- this.$ = "CROSS";
-break;
-case 235:
- this.$ = {on: $$[$0]};
-break;
-case 236: case 697:
- this.$ = {using: $$[$0]};
-break;
-case 239:
- this.$ = {where: new yy.Expression({expression:$$[$0]})};
-break;
-case 241:
- this.$ = {group:$$[$0-1]}; yy.extend(this.$,$$[$0]);
-break;
-case 244:
- this.$ = new yy.GroupExpression({type:'GROUPING SETS', group: $$[$0-1]});
-break;
-case 245:
- this.$ = new yy.GroupExpression({type:'ROLLUP', group: $$[$0-1]});
-break;
-case 246:
- this.$ = new yy.GroupExpression({type:'CUBE', group: $$[$0-1]});
-break;
-case 249:
- this.$ = {having:$$[$0]}
-break;
-case 251:
- this.$ = {union: $$[$0]} ;
-break;
-case 252:
- this.$ = {unionall: $$[$0]} ;
-break;
-case 253:
- this.$ = {except: $$[$0]} ;
-break;
-case 254:
- this.$ = {intersect: $$[$0]} ;
-break;
-case 255:
- this.$ = {union: $$[$0], corresponding:true} ;
-break;
-case 256:
- this.$ = {unionall: $$[$0], corresponding:true} ;
-break;
-case 257:
- this.$ = {except: $$[$0], corresponding:true} ;
-break;
-case 258:
- this.$ = {intersect: $$[$0], corresponding:true} ;
-break;
-case 260:
- this.$ = {order:$$[$0]}
-break;
-case 262:
- this.$ = $$[$0-2]; $$[$0-2].push($$[$0])
-break;
-case 263:
- this.$ = new yy.Expression({expression: $$[$0], direction:'ASC'})
-break;
-case 264:
- this.$ = new yy.Expression({expression: $$[$0-1], direction:$$[$0].toUpperCase()})
-break;
-case 265:
- this.$ = new yy.Expression({expression: $$[$0-2], direction:'ASC', nocase:true})
-break;
-case 266:
- this.$ = new yy.Expression({expression: $$[$0-3], direction:$$[$0].toUpperCase(), nocase:true})
-break;
-case 268:
- this.$ = {limit:$$[$0-1]}; yy.extend(this.$, $$[$0]);
-break;
-case 269:
- this.$ = {limit:$$[$0-2],offset:$$[$0-6]};
-break;
-case 271:
- this.$ = {offset:$$[$0]};
-break;
-case 272: case 509: case 533: case 648: case 658: case 682: case 684: case 688:
- $$[$0-2].push($$[$0]); this.$ = $$[$0-2];
-break;
-case 274: case 276: case 278:
- $$[$0-2].as = $$[$0]; this.$ = $$[$0-2];
-break;
-case 275: case 277: case 279:
- $$[$0-1].as = $$[$0]; this.$ = $$[$0-1];
-break;
-case 281:
- this.$ = new yy.Column({columid: $$[$0], tableid: $$[$0-2], databaseid:$$[$0-4]});
-break;
-case 282:
- this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2]});
-break;
-case 283:
- this.$ = new yy.Column({columnid:$$[$0]});
-break;
-case 284:
- this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2], databaseid:$$[$0-4]});
-break;
-case 285: case 286:
- this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2]});
-break;
-case 287:
- this.$ = new yy.Column({columnid: $$[$0]});
-break;
-case 302:
- this.$ = new yy.DomainValueValue();
-break;
-case 303:
- this.$ = new yy.Json({value:$$[$0]});
-break;
-case 306: case 307: case 308:
-
- if(!yy.queries) yy.queries = [];
- yy.queries.push($$[$0-1]);
- $$[$0-1].queriesidx = yy.queries.length;
- this.$ = $$[$0-1];
-
-break;
-case 309:
-this.$ = $$[$0]
-break;
-case 310:
- this.$ = new yy.FuncValue({funcid:'CURRENT_TIMESTAMP'});
-break;
-case 311:
- this.$ = new yy.JavaScript({value:$$[$0].substr(2,$$[$0].length-4)});
-break;
-case 312:
- this.$ = new yy.JavaScript({value:'alasql.fn["'+$$[$0-2]+'"] = '+$$[$0].substr(2,$$[$0].length-4)});
-break;
-case 313:
- this.$ = new yy.JavaScript({value:'alasql.aggr["'+$$[$0-2]+'"] = '+$$[$0].substr(2,$$[$0].length-4)});
-break;
-case 314:
- this.$ = new yy.FuncValue({funcid:$$[$0], newid:true});
-break;
-case 315:
- this.$ = $$[$0]; yy.extend(this.$,{newid:true});
-break;
-case 316:
- this.$ = new yy.Convert({expression:$$[$0-3]}) ; yy.extend(this.$,$$[$0-1]) ;
-break;
-case 317:
- this.$ = new yy.Convert({expression:$$[$0-5], style:$$[$0-1]}) ; yy.extend(this.$,$$[$0-3]) ;
-break;
-case 318:
- this.$ = new yy.Convert({expression:$$[$0-1]}) ; yy.extend(this.$,$$[$0-3]) ;
-break;
-case 319:
- this.$ = new yy.Convert({expression:$$[$0-3], style:$$[$0-1]}) ; yy.extend(this.$,$$[$0-5]) ;
-break;
-case 326:
- this.$ = new yy.FuncValue({funcid:'CURRENT_TIMESTAMP'});
-break;
-case 327:
-
- if($$[$0-2].length > 1 && ($$[$0-4].toUpperCase() == 'MAX' || $$[$0-4].toUpperCase() == 'MIN')) {
- this.$ = new yy.FuncValue({funcid:$$[$0-4],args:$$[$0-2]});
- } else {
- this.$ = new yy.AggrValue({aggregatorid: $$[$0-4].toUpperCase(), expression: $$[$0-2].pop(), over:$$[$0]});
- }
-
-break;
-case 328:
- this.$ = new yy.AggrValue({aggregatorid: $$[$0-5].toUpperCase(), expression: $$[$0-2], distinct:true, over:$$[$0]});
-break;
-case 329:
- this.$ = new yy.AggrValue({aggregatorid: $$[$0-5].toUpperCase(), expression: $$[$0-2],
- over:$$[$0]});
-break;
-case 331: case 332:
- this.$ = new yy.Over(); yy.extend(this.$,$$[$0-1]);
-break;
-case 333:
- this.$ = new yy.Over(); yy.extend(this.$,$$[$0-2]); yy.extend(this.$,$$[$0-1]);
-break;
-case 334:
- this.$ = {partition:$$[$0]};
-break;
-case 335:
- this.$ = {order:$$[$0]};
-break;
-case 336:
- this.$ = "SUM";
-break;
-case 337:
- this.$ = "COUNT";
-break;
-case 338:
- this.$ = "MIN";
-break;
-case 339: case 544:
- this.$ = "MAX";
-break;
-case 340:
- this.$ = "AVG";
-break;
-case 341:
- this.$ = "FIRST";
-break;
-case 342:
- this.$ = "LAST";
-break;
-case 343:
- this.$ = "AGGR";
-break;
-case 344:
- this.$ = "ARRAY";
-break;
-case 345:
-
- var funcid = $$[$0-4];
- var exprlist = $$[$0-1];
- if(exprlist.length > 1 && (funcid.toUpperCase() == 'MIN' || funcid.toUpperCase() == 'MAX')) {
- this.$ = new yy.FuncValue({funcid: funcid, args: exprlist});
- } else if(alasql.aggr[$$[$0-4]]) {
- this.$ = new yy.AggrValue({aggregatorid: 'REDUCE',
- funcid: funcid, expression: exprlist.pop(),distinct:($$[$0-2]=='DISTINCT') });
- } else {
- this.$ = new yy.FuncValue({funcid: funcid, args: exprlist});
- };
-
-break;
-case 346:
- this.$ = new yy.FuncValue({ funcid: $$[$0-2] })
-break;
-case 347:
- this.$ = new yy.FuncValue({ funcid: 'IIF', args:$$[$0-1] })
-break;
-case 348:
- this.$ = new yy.FuncValue({ funcid: 'REPLACE', args:$$[$0-1] })
-break;
-case 349:
- this.$ = new yy.FuncValue({ funcid: 'DATEADD', args:[new yy.StringValue({value:$$[$0-5]}),$$[$0-3],$$[$0-1]]})
-break;
-case 350:
- this.$ = new yy.FuncValue({ funcid: 'DATEADD', args:[$$[$0-5],$$[$0-3],$$[$0-1]]})
-break;
-case 351:
- this.$ = new yy.FuncValue({ funcid: 'DATEDIFF', args:[new yy.StringValue({value:$$[$0-5]}),$$[$0-3],$$[$0-1]]})
-break;
-case 352:
- this.$ = new yy.FuncValue({ funcid: 'DATEDIFF', args:[$$[$0-5],$$[$0-3],$$[$0-1]]})
-break;
-case 353:
- this.$ = new yy.FuncValue({ funcid: 'INTERVAL', args:[$$[$0-1],new yy.StringValue({value:($$[$0]).toLowerCase()})]});
-break;
-case 355:
- $$[$0-2].push($$[$0]); this.$ = $$[$0-2]
-break;
-case 356:
- this.$ = new yy.NumValue({value:+$$[$0]});
-break;
-case 357:
- this.$ = new yy.LogicValue({value:true});
-break;
-case 358:
- this.$ = new yy.LogicValue({value:false});
-break;
-case 359:
- this.$ = new yy.StringValue({value: $$[$0].substr(1,$$[$0].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});
-break;
-case 360:
- this.$ = new yy.StringValue({value: $$[$0].substr(2,$$[$0].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});
-break;
-case 361:
- this.$ = new yy.NullValue({value:undefined});
-break;
-case 362:
- this.$ = new yy.VarValue({variable:$$[$0]});
-break;
-case 363:
-
- if(!yy.exists) yy.exists = [];
- this.$ = new yy.ExistsValue({value:$$[$0-1], existsidx:yy.exists.length});
- yy.exists.push($$[$0-1]);
-
-break;
-case 364:
- this.$ = new yy.ArrayValue({value:$$[$0-1]});
-break;
-case 365: case 366:
- this.$ = new yy.ParamValue({param: $$[$0]});
-break;
-case 367:
-
- if(typeof yy.question == 'undefined') yy.question = 0;
- this.$ = new yy.ParamValue({param: yy.question++});
-
-break;
-case 368:
-
- if(typeof yy.question == 'undefined') yy.question = 0;
- this.$ = new yy.ParamValue({param: yy.question++, array:true});
-
-break;
-case 369:
- this.$ = new yy.CaseValue({expression:$$[$0-3], whens: $$[$0-2], elses: $$[$0-1]});
-break;
-case 370:
- this.$ = new yy.CaseValue({whens: $$[$0-2], elses: $$[$0-1]});
-break;
-case 371: case 699: case 700:
- this.$ = $$[$0-1]; this.$.push($$[$0]);
-break;
-case 373:
- this.$ = {when: $$[$0-2], then: $$[$0] };
-break;
-case 376: case 377:
- this.$ = new yy.Op({left:$$[$0-2], op:'REGEXP', right:$$[$0]});
-break;
-case 378:
- this.$ = new yy.Op({left:$$[$0-2], op:'GLOB', right:$$[$0]});
-break;
-case 379:
- this.$ = new yy.Op({left:$$[$0-2], op:'LIKE', right:$$[$0]});
-break;
-case 380:
- this.$ = new yy.Op({left:$$[$0-4], op:'LIKE', right:$$[$0-2], escape:$$[$0]});
-break;
-case 381:
- this.$ = new yy.Op({left:$$[$0-2], op:'NOT LIKE', right:$$[$0] });
-break;
-case 382:
- this.$ = new yy.Op({left:$$[$0-4], op:'NOT LIKE', right:$$[$0-2], escape:$$[$0] });
-break;
-case 383:
- this.$ = new yy.Op({left:$$[$0-2], op:'||', right:$$[$0]});
-break;
-case 384:
- this.$ = new yy.Op({left:$$[$0-2], op:'+', right:$$[$0]});
-break;
-case 385:
- this.$ = new yy.Op({left:$$[$0-2], op:'-', right:$$[$0]});
-break;
-case 386:
- this.$ = new yy.Op({left:$$[$0-2], op:'*', right:$$[$0]});
-break;
-case 387:
- this.$ = new yy.Op({left:$$[$0-2], op:'/', right:$$[$0]});
-break;
-case 388:
- this.$ = new yy.Op({left:$$[$0-2], op:'%', right:$$[$0]});
-break;
-case 389:
- this.$ = new yy.Op({left:$$[$0-2], op:'^', right:$$[$0]});
-break;
-case 390:
- this.$ = new yy.Op({left:$$[$0-2], op:'>>', right:$$[$0]});
-break;
-case 391:
- this.$ = new yy.Op({left:$$[$0-2], op:'<<', right:$$[$0]});
-break;
-case 392:
- this.$ = new yy.Op({left:$$[$0-2], op:'&', right:$$[$0]});
-break;
-case 393:
- this.$ = new yy.Op({left:$$[$0-2], op:'|', right:$$[$0]});
-break;
-case 394: case 395: case 397:
- this.$ = new yy.Op({left:$$[$0-2], op:'->' , right:$$[$0]});
-break;
-case 396:
- this.$ = new yy.Op({left:$$[$0-4], op:'->' , right:$$[$0-1]});
-break;
-case 398: case 399: case 401:
- this.$ = new yy.Op({left:$$[$0-2], op:'!' , right:$$[$0]});
-break;
-case 400:
- this.$ = new yy.Op({left:$$[$0-4], op:'!' , right:$$[$0-1]});
-break;
-case 402:
- this.$ = new yy.Op({left:$$[$0-2], op:'>' , right:$$[$0]});
-break;
-case 403:
- this.$ = new yy.Op({left:$$[$0-2], op:'>=' , right:$$[$0]});
-break;
-case 404:
- this.$ = new yy.Op({left:$$[$0-2], op:'<' , right:$$[$0]});
-break;
-case 405:
- this.$ = new yy.Op({left:$$[$0-2], op:'<=' , right:$$[$0]});
-break;
-case 406:
- this.$ = new yy.Op({left:$$[$0-2], op:'=' , right:$$[$0]});
-break;
-case 407:
- this.$ = new yy.Op({left:$$[$0-2], op:'==' , right:$$[$0]});
-break;
-case 408:
- this.$ = new yy.Op({left:$$[$0-2], op:'===' , right:$$[$0]});
-break;
-case 409:
- this.$ = new yy.Op({left:$$[$0-2], op:'!=' , right:$$[$0]});
-break;
-case 410:
- this.$ = new yy.Op({left:$$[$0-2], op:'!==' , right:$$[$0]});
-break;
-case 411:
- this.$ = new yy.Op({left:$$[$0-2], op:'!===' , right:$$[$0]});
-break;
-case 412:
-
- if(!yy.queries) yy.queries = [];
- this.$ = new yy.Op({left:$$[$0-5], op:$$[$0-4] , allsome:$$[$0-3], right:$$[$0-1], queriesidx: yy.queries.length});
- yy.queries.push($$[$0-1]);
-
-break;
-case 413:
-
- this.$ = new yy.Op({left:$$[$0-5], op:$$[$0-4] , allsome:$$[$0-3], right:$$[$0-1]});
-
-break;
-case 414:
-
- if($$[$0-2].op == 'BETWEEN1') {
-
- if($$[$0-2].left.op == 'AND') {
- this.$ = new yy.Op({left:$$[$0-2].left.left,op:'AND',right:
- new yy.Op({left:$$[$0-2].left.right, op:'BETWEEN',
- right1:$$[$0-2].right, right2:$$[$0]})
- });
- } else {
- this.$ = new yy.Op({left:$$[$0-2].left, op:'BETWEEN',
- right1:$$[$0-2].right, right2:$$[$0]});
- }
-
- } else if($$[$0-2].op == 'NOT BETWEEN1') {
- if($$[$0-2].left.op == 'AND') {
- this.$ = new yy.Op({left:$$[$0-2].left.left,op:'AND',right:
- new yy.Op({left:$$[$0-2].left.right, op:'NOT BETWEEN',
- right1:$$[$0-2].right, right2:$$[$0]})
- });
- } else {
- this.$ = new yy.Op({left:$$[$0-2].left, op:'NOT BETWEEN',
- right1:$$[$0-2].right, right2:$$[$0]});
- }
- } else {
- this.$ = new yy.Op({left:$$[$0-2], op:'AND', right:$$[$0]});
- }
-
-break;
-case 415:
- this.$ = new yy.Op({left:$$[$0-2], op:'OR' , right:$$[$0]});
-break;
-case 416:
- this.$ = new yy.UniOp({op:'NOT' , right:$$[$0]});
-break;
-case 417:
- this.$ = new yy.UniOp({op:'-' , right:$$[$0]});
-break;
-case 418:
- this.$ = new yy.UniOp({op:'+' , right:$$[$0]});
-break;
-case 419:
- this.$ = new yy.UniOp({op:'~' , right:$$[$0]});
-break;
-case 420:
- this.$ = new yy.UniOp({op:'#' , right:$$[$0]});
-break;
-case 421:
- this.$ = new yy.UniOp({right: $$[$0-1]});
-break;
-case 422:
-
- if(!yy.queries) yy.queries = [];
- this.$ = new yy.Op({left: $$[$0-4], op:'IN', right:$$[$0-1], queriesidx: yy.queries.length});
- yy.queries.push($$[$0-1]);
-
-break;
-case 423:
-
- if(!yy.queries) yy.queries = [];
- this.$ = new yy.Op({left: $$[$0-5], op:'NOT IN', right:$$[$0-1], queriesidx: yy.queries.length});
- yy.queries.push($$[$0-1]);
-
-break;
-case 424:
- this.$ = new yy.Op({left: $$[$0-4], op:'IN', right:$$[$0-1]});
-break;
-case 425:
- this.$ = new yy.Op({left: $$[$0-5], op:'NOT IN', right:$$[$0-1]});
-break;
-case 426:
- this.$ = new yy.Op({left: $$[$0-3], op:'IN', right:[]});
-break;
-case 427:
- this.$ = new yy.Op({left: $$[$0-4], op:'NOT IN', right:[]});
-break;
-case 428: case 430:
- this.$ = new yy.Op({left: $$[$0-2], op:'IN', right:$$[$0]});
-break;
-case 429: case 431:
- this.$ = new yy.Op({left: $$[$0-3], op:'NOT IN', right:$$[$0]});
-break;
-case 432:
-
-/* var expr = $$[$0];
- if(expr.left && expr.left.op == 'AND') {
- this.$ = new yy.Op({left:new yy.Op({left:$$[$0-2], op:'BETWEEN', right:expr.left}), op:'AND', right:expr.right });
- } else {
-*/
- this.$ = new yy.Op({left:$$[$0-2], op:'BETWEEN1', right:$$[$0] });
-
-break;
-case 433:
-
- this.$ = new yy.Op({left:$$[$0-2], op:'NOT BETWEEN1', right:$$[$0] });
-
-break;
-case 434:
- this.$ = new yy.Op({op:'IS' , left:$$[$0-2], right:$$[$0]});
-break;
-case 435:
-
- this.$ = new yy.Op({
- op:'IS',
- left:$$[$0-2],
- right: new yy.UniOp({
- op:'NOT',
- right:new yy.NullValue({value:undefined})
- })
- });
-
-break;
-case 436:
- this.$ = new yy.Convert({expression:$$[$0-2]}) ; yy.extend(this.$,$$[$0]) ;
-break;
-case 437: case 438:
- this.$ = $$[$0];
-break;
-case 439:
- this.$ = $$[$0-1];
-break;
-case 446:
- this.$ = 'ALL';
-break;
-case 447:
- this.$ = 'SOME';
-break;
-case 448:
- this.$ = 'ANY';
-break;
-case 449:
- this.$ = new yy.Update({table:$$[$0-4], columns:$$[$0-2], where:$$[$0]});
-break;
-case 450:
- this.$ = new yy.Update({table:$$[$0-2], columns:$$[$0]});
-break;
-case 453:
- this.$ = new yy.SetColumn({column:$$[$0-2], expression:$$[$0]})
-break;
-case 454:
- this.$ = new yy.SetColumn({variable:$$[$0-2], expression:$$[$0], method:$$[$0-3]})
-break;
-case 455:
- this.$ = new yy.Delete({table:$$[$0-2], where:$$[$0]});
-break;
-case 456:
- this.$ = new yy.Delete({table:$$[$0]});
-break;
-case 457:
- this.$ = new yy.Insert({into:$$[$0-2], values: $$[$0]});
-break;
-case 458:
- this.$ = new yy.Insert({into:$$[$0-1], values: $$[$0]});
-break;
-case 459: case 461:
- this.$ = new yy.Insert({into:$$[$0-2], values: $$[$0], orreplace:true});
-break;
-case 460: case 462:
- this.$ = new yy.Insert({into:$$[$0-1], values: $$[$0], orreplace:true});
-break;
-case 463:
- this.$ = new yy.Insert({into:$$[$0-2], "default": true}) ;
-break;
-case 464:
- this.$ = new yy.Insert({into:$$[$0-5], columns: $$[$0-3], values: $$[$0]});
-break;
-case 465:
- this.$ = new yy.Insert({into:$$[$0-4], columns: $$[$0-2], values: $$[$0]});
-break;
-case 466:
- this.$ = new yy.Insert({into:$$[$0-1], select: $$[$0]});
-break;
-case 467:
- this.$ = new yy.Insert({into:$$[$0-1], select: $$[$0], orreplace:true});
-break;
-case 468:
- this.$ = new yy.Insert({into:$$[$0-4], columns: $$[$0-2], select: $$[$0]});
-break;
-case 473:
- this.$ = [$$[$0-1]];
-break;
-case 476:
-this.$ = $$[$0-4]; $$[$0-4].push($$[$0-1])
-break;
-case 477: case 478: case 480: case 488:
-this.$ = $$[$0-2]; $$[$0-2].push($$[$0])
-break;
-case 489:
-
- this.$ = new yy.CreateTable({table:$$[$0-4]});
- yy.extend(this.$,$$[$0-7]);
- yy.extend(this.$,$$[$0-6]);
- yy.extend(this.$,$$[$0-5]);
- yy.extend(this.$,$$[$0-2]);
- yy.extend(this.$,$$[$0]);
-
-break;
-case 490:
-
- this.$ = new yy.CreateTable({table:$$[$0]});
- yy.extend(this.$,$$[$0-3]);
- yy.extend(this.$,$$[$0-2]);
- yy.extend(this.$,$$[$0-1]);
-
-break;
-case 492:
- this.$ = {class:true};
-break;
-case 502:
- this.$ = {temporary:true};
-break;
-case 504:
- this.$ = {ifnotexists: true};
-break;
-case 505:
- this.$ = {columns: $$[$0-2], constraints: $$[$0]};
-break;
-case 506:
- this.$ = {columns: $$[$0]};
-break;
-case 507:
- this.$ = {as: $$[$0]}
-break;
-case 508: case 532:
- this.$ = [$$[$0]];
-break;
-case 510: case 511: case 512: case 513: case 514:
- $$[$0].constraintid = $$[$0-1]; this.$ = $$[$0];
-break;
-case 517:
- this.$ = {type: 'CHECK', expression: $$[$0-1]};
-break;
-case 518:
- this.$ = {type: 'PRIMARY KEY', columns: $$[$0-1], clustered:($$[$0-3]+'').toUpperCase()};
-break;
-case 519:
- this.$ = {type: 'FOREIGN KEY', columns: $$[$0-5], fktable: $$[$0-2], fkcolumns: $$[$0-1]};
-break;
-case 525:
-
- this.$ = {type: 'UNIQUE', columns: $$[$0-1], clustered:($$[$0-3]+'').toUpperCase()};
-
-break;
-case 534:
- this.$ = new yy.ColumnDef({columnid:$$[$0-2]}); yy.extend(this.$,$$[$0-1]); yy.extend(this.$,$$[$0]);
-break;
-case 535:
- this.$ = new yy.ColumnDef({columnid:$$[$0-1]}); yy.extend(this.$,$$[$0]);
-break;
-case 536:
- this.$ = new yy.ColumnDef({columnid:$$[$0], dbtypeid: ''});
-break;
-case 537:
- this.$ = {dbtypeid: $$[$0-5], dbsize: $$[$0-3], dbprecision: +$$[$0-1]}
-break;
-case 538:
- this.$ = {dbtypeid: $$[$0-3], dbsize: $$[$0-1]}
-break;
-case 539:
- this.$ = {dbtypeid: $$[$0]}
-break;
-case 540:
- this.$ = {dbtypeid: 'ENUM', enumvalues: $$[$0-1]}
-break;
-case 541:
- this.$ = $$[$0-1]; $$[$0-1].dbtypeid += '[' + $$[$0] + ']';
-break;
-case 543: case 750:
- this.$ = +$$[$0];
-break;
-case 545:
-this.$ = undefined
-break;
-case 547:
-
- yy.extend($$[$0-1],$$[$0]); this.$ = $$[$0-1];
-
-break;
-case 550:
-this.$ = {primarykey:true};
-break;
-case 551: case 552:
-this.$ = {foreignkey:{table:$$[$0-1], columnid: $$[$0]}};
-break;
-case 553:
- this.$ = {identity: {value:$$[$0-3],step:$$[$0-1]}}
-break;
-case 554:
- this.$ = {identity: {value:1,step:1}}
-break;
-case 555: case 557:
-this.$ = {"default":$$[$0]};
-break;
-case 556:
-this.$ = {"default":$$[$0-1]};
-break;
-case 558:
-this.$ = {null:true};
-break;
-case 559:
-this.$ = {notnull:true};
-break;
-case 560:
-this.$ = {check:$$[$0]};
-break;
-case 561:
-this.$ = {unique:true};
-break;
-case 562:
-this.$ = {"onupdate":$$[$0]};
-break;
-case 563:
-this.$ = {"onupdate":$$[$0-1]};
-break;
-case 564:
- this.$ = new yy.DropTable({tables:$$[$0],type:$$[$0-2]}); yy.extend(this.$, $$[$0-1]);
-break;
-case 568:
- this.$ = {ifexists: true};
-break;
-case 569:
- this.$ = new yy.AlterTable({table:$$[$0-3], renameto: $$[$0]});
-break;
-case 570:
- this.$ = new yy.AlterTable({table:$$[$0-3], addcolumn: $$[$0]});
-break;
-case 571:
- this.$ = new yy.AlterTable({table:$$[$0-3], modifycolumn: $$[$0]});
-break;
-case 572:
- this.$ = new yy.AlterTable({table:$$[$0-5], renamecolumn: $$[$0-2], to: $$[$0]});
-break;
-case 573:
- this.$ = new yy.AlterTable({table:$$[$0-3], dropcolumn: $$[$0]});
-break;
-case 574:
- this.$ = new yy.AlterTable({table:$$[$0-2], renameto: $$[$0]});
-break;
-case 575:
- this.$ = new yy.AttachDatabase({databaseid:$$[$0], engineid:$$[$0-2].toUpperCase() });
-break;
-case 576:
- this.$ = new yy.AttachDatabase({databaseid:$$[$0-3], engineid:$$[$0-5].toUpperCase(), args:$$[$0-1] });
-break;
-case 577:
- this.$ = new yy.AttachDatabase({databaseid:$$[$0-2], engineid:$$[$0-4].toUpperCase(), as:$$[$0] });
-break;
-case 578:
- this.$ = new yy.AttachDatabase({databaseid:$$[$0-5], engineid:$$[$0-7].toUpperCase(), as:$$[$0], args:$$[$0-3]});
-break;
-case 579:
- this.$ = new yy.DetachDatabase({databaseid:$$[$0]});
-break;
-case 580:
- this.$ = new yy.CreateDatabase({databaseid:$$[$0] }); yy.extend(this.$,$$[$0]);
-break;
-case 581:
- this.$ = new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(), databaseid:$$[$0-1], as:$$[$0] }); yy.extend(this.$,$$[$0-2]);
-break;
-case 582:
- this.$ = new yy.CreateDatabase({engineid:$$[$0-7].toUpperCase(), databaseid:$$[$0-4], args:$$[$0-2], as:$$[$0] }); yy.extend(this.$,$$[$0-5]);
-break;
-case 583:
- this.$ = new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),
- as:$$[$0], args:[$$[$0-1]] }); yy.extend(this.$,$$[$0-2]);
-break;
-case 584:
-this.$ = undefined;
-break;
-case 586: case 587:
- this.$ = new yy.UseDatabase({databaseid: $$[$0] });
-break;
-case 588:
- this.$ = new yy.DropDatabase({databaseid: $$[$0] }); yy.extend(this.$,$$[$0-1]);
-break;
-case 589: case 590:
- this.$ = new yy.DropDatabase({databaseid: $$[$0], engineid:$$[$0-3].toUpperCase() }); yy.extend(this.$,$$[$0-1]);
-break;
-case 591:
- this.$ = new yy.CreateIndex({indexid:$$[$0-5], table:$$[$0-3], columns:$$[$0-1]})
-break;
-case 592:
- this.$ = new yy.CreateIndex({indexid:$$[$0-5], table:$$[$0-3], columns:$$[$0-1], unique:true})
-break;
-case 593:
- this.$ = new yy.DropIndex({indexid:$$[$0]});
-break;
-case 594:
- this.$ = new yy.ShowDatabases();
-break;
-case 595:
- this.$ = new yy.ShowDatabases({like:$$[$0]});
-break;
-case 596:
- this.$ = new yy.ShowDatabases({engineid:$$[$0-1].toUpperCase() });
-break;
-case 597:
- this.$ = new yy.ShowDatabases({engineid:$$[$0-3].toUpperCase() , like:$$[$0]});
-break;
-case 598:
- this.$ = new yy.ShowTables();
-break;
-case 599:
- this.$ = new yy.ShowTables({like:$$[$0]});
-break;
-case 600:
- this.$ = new yy.ShowTables({databaseid: $$[$0]});
-break;
-case 601:
- this.$ = new yy.ShowTables({like:$$[$0], databaseid: $$[$0-2]});
-break;
-case 602:
- this.$ = new yy.ShowColumns({table: $$[$0]});
-break;
-case 603:
- this.$ = new yy.ShowColumns({table: $$[$0-2], databaseid:$$[$0]});
-break;
-case 604:
- this.$ = new yy.ShowIndex({table: $$[$0]});
-break;
-case 605:
- this.$ = new yy.ShowIndex({table: $$[$0-2], databaseid: $$[$0]});
-break;
-case 606:
- this.$ = new yy.ShowCreateTable({table: $$[$0]});
-break;
-case 607:
- this.$ = new yy.ShowCreateTable({table: $$[$0-2], databaseid:$$[$0]});
-break;
-case 608:
-
- this.$ = new yy.CreateTable({table:$$[$0-6],view:true,select:$$[$0-1],viewcolumns:$$[$0-4]});
- yy.extend(this.$,$$[$0-9]);
- yy.extend(this.$,$$[$0-7]);
-
-break;
-case 609:
-
- this.$ = new yy.CreateTable({table:$$[$0-3],view:true,select:$$[$0-1]});
- yy.extend(this.$,$$[$0-6]);
- yy.extend(this.$,$$[$0-4]);
-
-break;
-case 613:
- this.$ = new yy.DropTable({tables:$$[$0], view:true}); yy.extend(this.$, $$[$0-1]);
-break;
-case 614: case 760:
- this.$ = new yy.ExpressionStatement({expression:$$[$0]});
-break;
-case 615:
- this.$ = new yy.Source({url:$$[$0].value});
-break;
-case 616:
- this.$ = new yy.Assert({value:$$[$0]});
-break;
-case 617:
- this.$ = new yy.Assert({value:$$[$0].value});
-break;
-case 618:
- this.$ = new yy.Assert({value:$$[$0], message:$$[$0-2]});
-break;
-case 620: case 631: case 633:
- this.$ = $$[$0].value;
-break;
-case 621: case 629:
- this.$ = +$$[$0].value;
-break;
-case 622:
- this.$ = (!!$$[$0].value);
-break;
-case 630:
- this.$ = ""+$$[$0].value;
-break;
-case 639:
- this.$ = {};
-break;
-case 642:
- this.$ = [];
-break;
-case 643:
- yy.extend($$[$0-2],$$[$0]); this.$ = $$[$0-2];
-break;
-case 645:
- this.$ = {}; this.$[$$[$0-2].substr(1,$$[$0-2].length-2)] = $$[$0];
-break;
-case 646: case 647:
- this.$ = {}; this.$[$$[$0-2]] = $$[$0];
-break;
-case 650:
- this.$ = new yy.SetVariable({variable:$$[$0-2].toLowerCase(), value:$$[$0]});
-break;
-case 651:
- this.$ = new yy.SetVariable({variable:$$[$0-1].toLowerCase(), value:$$[$0]});
-break;
-case 652:
- this.$ = new yy.SetVariable({variable:$$[$0-2], expression:$$[$0]});
-break;
-case 653:
- this.$ = new yy.SetVariable({variable:$$[$0-3], props: $$[$0-2], expression:$$[$0]});
-break;
-case 654:
- this.$ = new yy.SetVariable({variable:$$[$0-2], expression:$$[$0], method:$$[$0-3]});
-break;
-case 655:
- this.$ = new yy.SetVariable({variable:$$[$0-3], props: $$[$0-2], expression:$$[$0], method:$$[$0-4]});
-break;
-case 656:
-this.$ = '@';
-break;
-case 657:
-this.$ = '$';
-break;
-case 663:
- this.$ = true;
-break;
-case 664:
- this.$ = false;
-break;
-case 665:
- this.$ = new yy.CommitTransaction();
-break;
-case 666:
- this.$ = new yy.RollbackTransaction();
-break;
-case 667:
- this.$ = new yy.BeginTransaction();
-break;
-case 668:
- this.$ = new yy.If({expression:$$[$0-2],thenstat:$$[$0-1], elsestat:$$[$0]});
- if($$[$0-1].exists) this.$.exists = $$[$0-1].exists;
- if($$[$0-1].queries) this.$.queries = $$[$0-1].queries;
-
-break;
-case 669:
-
- this.$ = new yy.If({expression:$$[$0-1],thenstat:$$[$0]});
- if($$[$0].exists) this.$.exists = $$[$0].exists;
- if($$[$0].queries) this.$.queries = $$[$0].queries;
-
-break;
-case 670:
-this.$ = $$[$0];
-break;
-case 671:
- this.$ = new yy.While({expression:$$[$0-1],loopstat:$$[$0]});
- if($$[$0].exists) this.$.exists = $$[$0].exists;
- if($$[$0].queries) this.$.queries = $$[$0].queries;
-
-break;
-case 672:
- this.$ = new yy.Continue();
-break;
-case 673:
- this.$ = new yy.Break();
-break;
-case 674:
- this.$ = new yy.BeginEnd({statements:$$[$0-1]});
-break;
-case 675:
- this.$ = new yy.Print({exprs:$$[$0]});
-break;
-case 676:
- this.$ = new yy.Print({select:$$[$0]});
-break;
-case 677:
- this.$ = new yy.Require({paths:$$[$0]});
-break;
-case 678:
- this.$ = new yy.Require({plugins:$$[$0]});
-break;
-case 679: case 680:
-this.$ = $$[$0].toUpperCase();
-break;
-case 681:
- this.$ = new yy.Echo({expr:$$[$0]});
-break;
-case 686:
- this.$ = new yy.Declare({declares:$$[$0]});
-break;
-case 689:
- this.$ = {variable: $$[$0-1]}; yy.extend(this.$,$$[$0]);
-break;
-case 690:
- this.$ = {variable: $$[$0-2]}; yy.extend(this.$,$$[$0]);
-break;
-case 691:
- this.$ = {variable: $$[$0-3], expression:$$[$0]}; yy.extend(this.$,$$[$0-2]);
-break;
-case 692:
- this.$ = {variable: $$[$0-4], expression:$$[$0]}; yy.extend(this.$,$$[$0-2]);
-break;
-case 693:
- this.$ = new yy.TruncateTable({table:$$[$0]});
-break;
-case 694:
-
- this.$ = new yy.Merge(); yy.extend(this.$,$$[$0-4]); yy.extend(this.$,$$[$0-3]);
- yy.extend(this.$,$$[$0-2]);
- yy.extend(this.$,{matches:$$[$0-1]});yy.extend(this.$,$$[$0]);
-
-break;
-case 695: case 696:
- this.$ = {into: $$[$0]};
-break;
-case 698:
- this.$ = {on:$$[$0]};
-break;
-case 703:
- this.$ = {matched:true, action:$$[$0]}
-break;
-case 704:
- this.$ = {matched:true, expr: $$[$0-2], action:$$[$0]}
-break;
-case 705:
- this.$ = {delete:true};
-break;
-case 706:
- this.$ = {update:$$[$0]};
-break;
-case 707: case 708:
- this.$ = {matched:false, bytarget: true, action:$$[$0]}
-break;
-case 709: case 710:
- this.$ = {matched:false, bytarget: true, expr:$$[$0-2], action:$$[$0]}
-break;
-case 711:
- this.$ = {matched:false, bysource: true, action:$$[$0]}
-break;
-case 712:
- this.$ = {matched:false, bysource: true, expr:$$[$0-2], action:$$[$0]}
-break;
-case 713:
- this.$ = {insert:true, values:$$[$0]};
-break;
-case 714:
- this.$ = {insert:true, values:$$[$0], columns:$$[$0-3]};
-break;
-case 715:
- this.$ = {insert:true, defaultvalues:true};
-break;
-case 716:
- this.$ = {insert:true, defaultvalues:true, columns:$$[$0-3]};
-break;
-case 718:
- this.$ = {output:{columns:$$[$0]}}
-break;
-case 719:
- this.$ = {output:{columns:$$[$0-3], intovar: $$[$0], method:$$[$0-1]}}
-break;
-case 720:
- this.$ = {output:{columns:$$[$0-2], intotable: $$[$0]}}
-break;
-case 721:
- this.$ = {output:{columns:$$[$0-5], intotable: $$[$0-3], intocolumns:$$[$0-1]}}
-break;
-case 722:
-
- this.$ = new yy.CreateVertex({class:$$[$0-3],sharp:$$[$0-2], name:$$[$0-1]});
- yy.extend(this.$,$$[$0]);
-
-break;
-case 725:
- this.$ = {sets:$$[$0]};
-break;
-case 726:
- this.$ = {content:$$[$0]};
-break;
-case 727:
- this.$ = {select:$$[$0]};
-break;
-case 728:
-
- this.$ = new yy.CreateEdge({from:$$[$0-3],to:$$[$0-1],name:$$[$0-5]});
- yy.extend(this.$,$$[$0]);
-
-break;
-case 729:
- this.$ = new yy.CreateGraph({graph:$$[$0]});
-break;
-case 730:
- this.$ = new yy.CreateGraph({from:$$[$0]});
-break;
-case 733:
-
- this.$ = $$[$0-2];
- if($$[$0-1]) this.$.json = new yy.Json({value:$$[$0-1]});
- if($$[$0]) this.$.as = $$[$0];
-
-break;
-case 734:
-
- this.$ = {source:$$[$0-6], target: $$[$0]};
- if($$[$0-3]) this.$.json = new yy.Json({value:$$[$0-3]});
- if($$[$0-2]) this.$.as = $$[$0-2];
- yy.extend(this.$,$$[$0-4]);
-
-break;
-case 735:
-
- this.$ = {source:$$[$0-5], target: $$[$0]};
- if($$[$0-2]) this.$.json = new yy.Json({value:$$[$0-3]});
- if($$[$0-1]) this.$.as = $$[$0-2];
-
-break;
-case 736:
-
- this.$ = {source:$$[$0-2], target: $$[$0]};
-
-break;
-case 740:
- this.$ = {vars:$$[$0], method:$$[$0-1]};
-break;
-case 743: case 744:
-
- var s3 = $$[$0-1];
- this.$ = {prop:$$[$0-3], sharp:$$[$0-2], name:(typeof s3 == 'undefined')?undefined:s3.substr(1,s3.length-2), class:$$[$0]};
-
-break;
-case 745:
-
- var s2 = $$[$0-1];
- this.$ = {sharp:$$[$0-2], name:(typeof s2 == 'undefined')?undefined:s2.substr(1,s2.length-2), class:$$[$0]};
-
-break;
-case 746:
-
- var s1 = $$[$0-1];
- this.$ = {name:(typeof s1 == 'undefined')?undefined:s1.substr(1,s1.length-2), class:$$[$0]};
-
-break;
-case 747:
-
- this.$ = {class:$$[$0]};
-
-break;
-case 753:
- this.$ = new yy.AddRule({left:$$[$0-2], right:$$[$0]});
-break;
-case 754:
- this.$ = new yy.AddRule({right:$$[$0]});
-break;
-case 757:
- this.$ = new yy.Term({termid:$$[$0]});
-break;
-case 758:
- this.$ = new yy.Term({termid:$$[$0-3],args:$$[$0-1]});
-break;
-case 761:
-
- this.$ = new yy.CreateTrigger({trigger:$$[$0-6], when:$$[$0-5], action:$$[$0-4], table:$$[$0-2], statement:$$[$0]});
- if($$[$0].exists) this.$.exists = $$[$0].exists;
- if($$[$0].queries) this.$.queries = $$[$0].queries;
-
-break;
-case 762:
-
- this.$ = new yy.CreateTrigger({trigger:$$[$0-5], when:$$[$0-4], action:$$[$0-3], table:$$[$0-1], funcid:$$[$0]});
-
-break;
-case 763:
-
- this.$ = new yy.CreateTrigger({trigger:$$[$0-6], when:$$[$0-4], action:$$[$0-3], table:$$[$0-5], statement:$$[$0]});
- if($$[$0].exists) this.$.exists = $$[$0].exists;
- if($$[$0].queries) this.$.queries = $$[$0].queries;
-
-break;
-case 764: case 765: case 767:
- this.$ = 'AFTER';
-break;
-case 766:
- this.$ = 'BEFORE';
-break;
-case 768:
- this.$ = 'INSTEADOF';
-break;
-case 769:
- this.$ = 'INSERT';
-break;
-case 770:
- this.$ = 'DELETE';
-break;
-case 771:
- this.$ = 'UPDATE';
-break;
-case 772:
- this.$ = new yy.DropTrigger({trigger:$$[$0]});
-break;
-case 773:
- this.$ = new yy.Reindex({indexid:$$[$0]});
-break;
-case 1047: case 1067: case 1069: case 1071: case 1075: case 1077: case 1079: case 1081: case 1083: case 1085:
-this.$ = [];
-break;
-case 1048: case 1062: case 1064: case 1068: case 1070: case 1072: case 1076: case 1078: case 1080: case 1082: case 1084: case 1086:
-$$[$0-1].push($$[$0]);
-break;
-case 1061: case 1063:
-this.$ = [$$[$0]];
-break;
-}
-},
-table: [o([10,602,764],$V0,{8:1,9:2,12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,2:$V1,4:$V2,5:$V3,14:$V4,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{1:[3]},{10:[1,105],11:106,602:$VH,764:$VI},o($VJ,[2,8]),o($VJ,[2,9]),o($VK,[2,12]),o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:109,2:$V1,4:$V2,5:$V3,15:[1,110],53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,14]),o($VK,[2,15]),o($VK,[2,16]),o($VK,[2,17]),o($VK,[2,18]),o($VK,[2,19]),o($VK,[2,20]),o($VK,[2,21]),o($VK,[2,22]),o($VK,[2,23]),o($VK,[2,24]),o($VK,[2,25]),o($VK,[2,26]),o($VK,[2,27]),o($VK,[2,28]),o($VK,[2,29]),o($VK,[2,30]),o($VK,[2,31]),o($VK,[2,32]),o($VK,[2,33]),o($VK,[2,34]),o($VK,[2,35]),o($VK,[2,36]),o($VK,[2,37]),o($VK,[2,38]),o($VK,[2,39]),o($VK,[2,40]),o($VK,[2,41]),o($VK,[2,42]),o($VK,[2,43]),o($VK,[2,44]),o($VK,[2,45]),o($VK,[2,46]),o($VK,[2,47]),o($VK,[2,48]),o($VK,[2,49]),o($VK,[2,50]),o($VK,[2,51]),o($VK,[2,52]),o($VK,[2,53]),o($VK,[2,54]),o($VK,[2,55]),o($VK,[2,56]),o($VK,[2,57]),o($VK,[2,58]),o($VK,[2,59]),o($VK,[2,60]),o($VK,[2,61]),o($VK,[2,62]),o($VK,[2,63]),o($VK,[2,64]),o($VK,[2,65]),o($VK,[2,66]),o($VK,[2,67]),{353:[1,111]},{2:$V1,3:112,4:$V2,5:$V3},{2:$V1,3:114,4:$V2,5:$V3,156:$VL,200:113,290:$VM,291:$VN,292:$VO,293:$VP},o($VQ,[2,501],{3:121,348:125,2:$V1,4:$V2,5:$V3,134:$VR,135:$VS,187:[1,123],193:[1,122],268:[1,129],269:[1,130],357:[1,131],405:[1,120],472:[1,124],509:[1,128]}),{145:$VT,449:132,450:133},{183:[1,135]},{405:[1,136]},{2:$V1,3:138,4:$V2,5:$V3,130:[1,144],193:[1,139],353:[1,143],397:140,405:[1,137],410:[1,141],509:[1,142]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:145,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt1,$Vu1,{340:204,171:[1,205],198:$Vv1}),o($Vt1,$Vu1,{340:207,198:$Vv1}),{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,198:[1,210],199:213,200:215,201:214,202:217,209:209,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1,453:208},{2:$V1,3:221,4:$V2,5:$V3},{353:[1,222]},o($Vz1,[2,1043],{80:223,106:224,107:[1,225]}),o($VA1,[2,1047],{90:226}),{2:$V1,3:230,4:$V2,5:$V3,190:[1,228],193:[1,231],267:[1,227],353:[1,232],405:[1,229]},{353:[1,233]},{2:$V1,3:236,4:$V2,5:$V3,73:234,75:235},o([306,602,764],$V0,{12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,9:238,2:$V1,4:$V2,5:$V3,14:$V4,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,435:[1,237],436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{435:[1,239]},{435:[1,240]},{2:$V1,3:242,4:$V2,5:$V3,405:[1,241]},{2:$V1,3:244,4:$V2,5:$V3,199:243},o($VB1,[2,311]),{113:245,132:$VW,296:$Vj1},{2:$V1,3:114,4:$V2,5:$V3,113:251,131:$VV,132:[1,248],143:$VY,144:246,145:$VC1,152:$V$,156:$VL,181:$V31,196:250,200:255,201:254,257:252,258:253,265:$VD1,274:247,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:257,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,672]),o($VK,[2,673]),{2:$V1,3:168,4:$V2,5:$V3,40:259,56:165,77:$VU,79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:258,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:266,4:$V2,5:$V3,113:263,132:$VW,296:$Vj1,444:261,445:262,446:264,447:$VE1},{2:$V1,3:267,4:$V2,5:$V3,143:$VF1,145:$VG1,431:268},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:271,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{505:[1,272]},{2:$V1,3:100,4:$V2,5:$V3,504:274,506:273},{2:$V1,3:114,4:$V2,5:$V3,156:$VL,200:275,290:$VM,291:$VN,292:$VO,293:$VP},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:276,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VH1,$VI1,{186:280,164:[1,279],185:[1,277],187:[1,278],195:$VJ1}),o($VK1,[2,757],{77:[1,282]}),o([2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],[2,152],{149:[1,283],150:[1,284],190:[1,285],191:[1,286],192:[1,287],193:[1,288],194:[1,289]}),o($VL1,[2,1]),o($VL1,[2,2]),{6:290,131:[1,439],172:[1,462],245:[1,411],285:[1,373],286:[1,407],370:[1,404],381:[1,295],402:[1,297],410:[1,549],414:[1,471],416:[1,443],417:[1,509],433:[1,442],435:[1,525],440:[1,342],460:[1,418],464:[1,448],470:[1,341],514:[1,307],515:[1,299],516:[1,399],518:[1,291],519:[1,292],520:[1,293],521:[1,294],522:[1,296],523:[1,298],524:[1,300],525:[1,301],526:[1,302],527:[1,303],528:[1,304],529:[1,305],530:[1,306],531:[1,308],532:[1,309],533:[1,310],534:[1,311],535:[1,312],536:[1,313],537:[1,314],538:[1,315],539:[1,316],540:[1,317],541:[1,318],542:[1,319],543:[1,320],544:[1,321],545:[1,322],546:[1,323],547:[1,324],548:[1,325],549:[1,326],550:[1,327],551:[1,328],552:[1,329],553:[1,330],554:[1,331],555:[1,332],556:[1,333],557:[1,334],558:[1,335],559:[1,336],560:[1,337],561:[1,338],562:[1,339],563:[1,340],564:[1,343],565:[1,344],566:[1,345],567:[1,346],568:[1,347],569:[1,348],570:[1,349],571:[1,350],572:[1,351],573:[1,352],574:[1,353],575:[1,354],576:[1,355],577:[1,356],578:[1,357],579:[1,358],580:[1,359],581:[1,360],582:[1,361],583:[1,362],584:[1,363],585:[1,364],586:[1,365],587:[1,366],588:[1,367],589:[1,368],590:[1,369],591:[1,370],592:[1,371],593:[1,372],594:[1,374],595:[1,375],596:[1,376],597:[1,377],598:[1,378],599:[1,379],600:[1,380],601:[1,381],602:[1,382],603:[1,383],604:[1,384],605:[1,385],606:[1,386],607:[1,387],608:[1,388],609:[1,389],610:[1,390],611:[1,391],612:[1,392],613:[1,393],614:[1,394],615:[1,395],616:[1,396],617:[1,397],618:[1,398],619:[1,400],620:[1,401],621:[1,402],622:[1,403],623:[1,405],624:[1,406],625:[1,408],626:[1,409],627:[1,410],628:[1,412],629:[1,413],630:[1,414],631:[1,415],632:[1,416],633:[1,417],634:[1,419],635:[1,420],636:[1,421],637:[1,422],638:[1,423],639:[1,424],640:[1,425],641:[1,426],642:[1,427],643:[1,428],644:[1,429],645:[1,430],646:[1,431],647:[1,432],648:[1,433],649:[1,434],650:[1,435],651:[1,436],652:[1,437],653:[1,438],654:[1,440],655:[1,441],656:[1,444],657:[1,445],658:[1,446],659:[1,447],660:[1,449],661:[1,450],662:[1,451],663:[1,452],664:[1,453],665:[1,454],666:[1,455],667:[1,456],668:[1,457],669:[1,458],670:[1,459],671:[1,460],672:[1,461],673:[1,463],674:[1,464],675:[1,465],676:[1,466],677:[1,467],678:[1,468],679:[1,469],680:[1,470],681:[1,472],682:[1,473],683:[1,474],684:[1,475],685:[1,476],686:[1,477],687:[1,478],688:[1,479],689:[1,480],690:[1,481],691:[1,482],692:[1,483],693:[1,484],694:[1,485],695:[1,486],696:[1,487],697:[1,488],698:[1,489],699:[1,490],700:[1,491],701:[1,492],702:[1,493],703:[1,494],704:[1,495],705:[1,496],706:[1,497],707:[1,498],708:[1,499],709:[1,500],710:[1,501],711:[1,502],712:[1,503],713:[1,504],714:[1,505],715:[1,506],716:[1,507],717:[1,508],718:[1,510],719:[1,511],720:[1,512],721:[1,513],722:[1,514],723:[1,515],724:[1,516],725:[1,517],726:[1,518],727:[1,519],728:[1,520],729:[1,521],730:[1,522],731:[1,523],732:[1,524],733:[1,526],734:[1,527],735:[1,528],736:[1,529],737:[1,530],738:[1,531],739:[1,532],740:[1,533],741:[1,534],742:[1,535],743:[1,536],744:[1,537],745:[1,538],746:[1,539],747:[1,540],748:[1,541],749:[1,542],750:[1,543],751:[1,544],752:[1,545],753:[1,546],754:[1,547],755:[1,548],756:[1,550],757:[1,551],758:[1,552],759:[1,553],760:[1,554],761:[1,555],762:[1,556],763:[1,557]},{1:[2,6]},o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:558,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VM1,[2,1041]),o($VM1,[2,1042]),o($VJ,[2,10]),{16:[1,559]},{2:$V1,3:244,4:$V2,5:$V3,199:560},{405:[1,561]},o($VK,[2,760]),{77:$VN1},{77:[1,563]},{77:$VO1},{77:[1,565]},{77:[1,566]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:567,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt1,$VP1,{350:568,156:$VQ1}),{405:[1,570]},{2:$V1,3:571,4:$V2,5:$V3},{193:[1,572]},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,183:[1,574],431:585,473:573,474:575,475:576,478:577,482:582,493:579,497:581},{130:[1,589],349:586,353:[1,588],410:[1,587]},{113:591,132:$VW,183:[2,1141],296:$Vj1,471:590},o($VU1,[2,1135],{465:592,3:593,2:$V1,4:$V2,5:$V3}),{2:$V1,3:594,4:$V2,5:$V3},{4:[1,595]},{4:[1,596]},o($VQ,[2,502]),o($VK,[2,686],{74:[1,597]}),o($VV1,[2,687]),{2:$V1,3:598,4:$V2,5:$V3},{2:$V1,3:244,4:$V2,5:$V3,199:599},{2:$V1,3:600,4:$V2,5:$V3},o($Vt1,$VW1,{398:601,156:$VX1}),{405:[1,603]},{2:$V1,3:604,4:$V2,5:$V3},o($Vt1,$VW1,{398:605,156:$VX1}),o($Vt1,$VW1,{398:606,156:$VX1}),{2:$V1,3:607,4:$V2,5:$V3},o($VY1,[2,1129]),o($VY1,[2,1130]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:608,114:625,327:637,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$V22,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V9,154:$Va2,156:$Va,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,266:$Vc,267:$Vd,290:$Ve,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VB1,[2,288]),o($VB1,[2,289]),o($VB1,[2,290]),o($VB1,[2,291]),o($VB1,[2,292]),o($VB1,[2,293]),o($VB1,[2,294]),o($VB1,[2,295]),o($VB1,[2,296]),o($VB1,[2,297]),o($VB1,[2,298]),o($VB1,[2,299]),o($VB1,[2,300]),o($VB1,[2,301]),o($VB1,[2,302]),o($VB1,[2,303]),o($VB1,[2,304]),o($VB1,[2,305]),{2:$V1,3:168,4:$V2,5:$V3,26:654,27:653,36:649,40:648,56:165,77:$VU,79:75,89:$V7,94:651,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,264:650,265:$V41,266:$Vc,267:[1,655],270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:[1,652],291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,339:$Vh,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,309]),o($VB1,[2,310]),{77:[1,656]},o([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy2,{77:$VN1,116:[1,657]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:658,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:659,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:661,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:662,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,283]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,249,265,266,267,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,300,302,303,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,415,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764,765,766],[2,356]),o($Vz2,[2,357]),o($Vz2,[2,358]),o($Vz2,$VA2),o($Vz2,[2,360]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,361]),{2:$V1,3:664,4:$V2,5:$V3,131:[1,665],301:663},{2:$V1,3:666,4:$V2,5:$V3},o($Vz2,[2,367]),o($Vz2,[2,368]),{2:$V1,3:667,4:$V2,5:$V3,77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},{77:[1,674]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:675,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,304:676,307:677,308:$VC2,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,679]},{77:[1,680]},o($VD2,[2,624]),{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,300:[1,683],302:$Vn1,419:190,420:$Vr1,421:681,422:684,423:686,424:$Vs1,427:682},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:696,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:697,4:$V2,5:$V3,156:$VL,200:698,290:$VM,291:$VN,292:$VO,293:$VP},{77:[2,336]},{77:[2,337]},{77:[2,338]},{77:[2,339]},{77:[2,340]},{77:[2,341]},{77:[2,342]},{77:[2,343]},{77:[2,344]},{2:$V1,3:704,4:$V2,5:$V3,131:$VF2,132:$VG2,425:699,426:[1,700],428:701},{2:$V1,3:244,4:$V2,5:$V3,199:705},{290:[1,706]},o($Vt1,[2,472]),{2:$V1,3:244,4:$V2,5:$V3,199:707},{231:[1,709],454:708},{231:[2,695]},{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:710,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{40:711,79:75,89:$V7,184:99,189:$Vb},o($VH2,[2,1091],{210:712,76:[1,713]}),o($VI2,[2,185],{3:714,2:$V1,4:$V2,5:$V3,76:[1,715],154:[1,716]}),o($VI2,[2,189],{3:717,2:$V1,4:$V2,5:$V3,76:[1,718]}),o($VI2,[2,190],{3:719,2:$V1,4:$V2,5:$V3,76:[1,720]}),o($VI2,[2,193]),o($VI2,[2,194],{3:721,2:$V1,4:$V2,5:$V3,76:[1,722]}),o($VI2,[2,197],{3:723,2:$V1,4:$V2,5:$V3,76:[1,724]}),o([2,4,5,10,72,74,76,78,93,98,118,128,154,162,168,169,183,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VJ2,{77:$VN1,116:$VK2}),o([2,4,5,10,72,74,76,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],[2,200]),o($VK,[2,773]),{2:$V1,3:244,4:$V2,5:$V3,199:726},o($VL2,$VM2,{81:727,198:$VN2}),o($Vz1,[2,1044]),o($VO2,[2,1057],{108:729,190:[1,730]}),o([10,78,183,306,310,602,764],$VM2,{419:190,81:731,117:732,3:733,114:736,144:758,158:768,160:769,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,198:$VN2,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),{353:[1,782]},{183:[1,783]},o($VK,[2,594],{112:[1,784]}),{405:[1,785]},{183:[1,786]},o($VK,[2,598],{112:[1,787],183:[1,788]}),{2:$V1,3:244,4:$V2,5:$V3,199:789},{40:790,74:[1,791],79:75,89:$V7,184:99,189:$Vb},o($Vv3,[2,70]),{76:[1,792]},o($VK,[2,667]),{11:106,306:[1,793],602:$VH,764:$VI},o($VK,[2,665]),o($VK,[2,666]),{2:$V1,3:794,4:$V2,5:$V3},o($VK,[2,587]),{146:[1,795]},o([2,4,5,10,53,72,74,76,77,78,89,95,124,128,143,145,146,148,149,152,154,156,181,183,187,189,230,266,267,290,297,302,306,310,335,338,339,343,344,356,368,369,373,374,396,400,401,402,403,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,514,515,516,517,602,764],$VJ2,{116:$VK2}),o($VK,[2,615]),o($VK,[2,616]),o($VK,[2,617]),o($VK,$VA2,{74:[1,796]}),{77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},o($Vw3,[2,320]),o($Vw3,[2,321]),o($Vw3,[2,322]),o($Vw3,[2,323]),o($Vw3,[2,324]),o($Vw3,[2,325]),o($Vw3,[2,326]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,114:625,327:637,12:797,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$V22,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V9,154:$Va2,156:$Va,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,266:$Vc,267:$Vd,290:$Ve,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,675],{74:$Vx3}),o($VK,[2,676]),o($Vy3,[2,354],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,677],{74:[1,800]}),o($VK,[2,678],{74:[1,801]}),o($VV1,[2,683]),o($VV1,[2,685]),o($VV1,[2,679]),o($VV1,[2,680]),{114:807,115:$V$1,116:$V02,124:[1,802],230:$VA3,429:803,430:804,433:$VB3},{2:$V1,3:808,4:$V2,5:$V3},o($Vt1,[2,656]),o($Vt1,[2,657]),o($VK,[2,614],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:100,4:$V2,5:$V3,504:274,506:809},o($VK,[2,754],{74:$VC3}),o($VD3,[2,756]),o($VK,[2,759]),o($VK,[2,681],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VE3,$VI1,{186:811,195:$VJ1}),o($VE3,$VI1,{186:812,195:$VJ1}),o($VE3,$VI1,{186:813,195:$VJ1}),o($VF3,[2,1087],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,188:814,174:815,253:816,94:817,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{77:[1,819],131:$VV,196:818},{2:$V1,3:100,4:$V2,5:$V3,504:274,506:820},o($VG3,[2,153]),o($VG3,[2,154]),o($VG3,[2,155]),o($VG3,[2,156]),o($VG3,[2,157]),o($VG3,[2,158]),o($VG3,[2,159]),o($VL1,[2,3]),o($VL1,[2,774]),o($VL1,[2,775]),o($VL1,[2,776]),o($VL1,[2,777]),o($VL1,[2,778]),o($VL1,[2,779]),o($VL1,[2,780]),o($VL1,[2,781]),o($VL1,[2,782]),o($VL1,[2,783]),o($VL1,[2,784]),o($VL1,[2,785]),o($VL1,[2,786]),o($VL1,[2,787]),o($VL1,[2,788]),o($VL1,[2,789]),o($VL1,[2,790]),o($VL1,[2,791]),o($VL1,[2,792]),o($VL1,[2,793]),o($VL1,[2,794]),o($VL1,[2,795]),o($VL1,[2,796]),o($VL1,[2,797]),o($VL1,[2,798]),o($VL1,[2,799]),o($VL1,[2,800]),o($VL1,[2,801]),o($VL1,[2,802]),o($VL1,[2,803]),o($VL1,[2,804]),o($VL1,[2,805]),o($VL1,[2,806]),o($VL1,[2,807]),o($VL1,[2,808]),o($VL1,[2,809]),o($VL1,[2,810]),o($VL1,[2,811]),o($VL1,[2,812]),o($VL1,[2,813]),o($VL1,[2,814]),o($VL1,[2,815]),o($VL1,[2,816]),o($VL1,[2,817]),o($VL1,[2,818]),o($VL1,[2,819]),o($VL1,[2,820]),o($VL1,[2,821]),o($VL1,[2,822]),o($VL1,[2,823]),o($VL1,[2,824]),o($VL1,[2,825]),o($VL1,[2,826]),o($VL1,[2,827]),o($VL1,[2,828]),o($VL1,[2,829]),o($VL1,[2,830]),o($VL1,[2,831]),o($VL1,[2,832]),o($VL1,[2,833]),o($VL1,[2,834]),o($VL1,[2,835]),o($VL1,[2,836]),o($VL1,[2,837]),o($VL1,[2,838]),o($VL1,[2,839]),o($VL1,[2,840]),o($VL1,[2,841]),o($VL1,[2,842]),o($VL1,[2,843]),o($VL1,[2,844]),o($VL1,[2,845]),o($VL1,[2,846]),o($VL1,[2,847]),o($VL1,[2,848]),o($VL1,[2,849]),o($VL1,[2,850]),o($VL1,[2,851]),o($VL1,[2,852]),o($VL1,[2,853]),o($VL1,[2,854]),o($VL1,[2,855]),o($VL1,[2,856]),o($VL1,[2,857]),o($VL1,[2,858]),o($VL1,[2,859]),o($VL1,[2,860]),o($VL1,[2,861]),o($VL1,[2,862]),o($VL1,[2,863]),o($VL1,[2,864]),o($VL1,[2,865]),o($VL1,[2,866]),o($VL1,[2,867]),o($VL1,[2,868]),o($VL1,[2,869]),o($VL1,[2,870]),o($VL1,[2,871]),o($VL1,[2,872]),o($VL1,[2,873]),o($VL1,[2,874]),o($VL1,[2,875]),o($VL1,[2,876]),o($VL1,[2,877]),o($VL1,[2,878]),o($VL1,[2,879]),o($VL1,[2,880]),o($VL1,[2,881]),o($VL1,[2,882]),o($VL1,[2,883]),o($VL1,[2,884]),o($VL1,[2,885]),o($VL1,[2,886]),o($VL1,[2,887]),o($VL1,[2,888]),o($VL1,[2,889]),o($VL1,[2,890]),o($VL1,[2,891]),o($VL1,[2,892]),o($VL1,[2,893]),o($VL1,[2,894]),o($VL1,[2,895]),o($VL1,[2,896]),o($VL1,[2,897]),o($VL1,[2,898]),o($VL1,[2,899]),o($VL1,[2,900]),o($VL1,[2,901]),o($VL1,[2,902]),o($VL1,[2,903]),o($VL1,[2,904]),o($VL1,[2,905]),o($VL1,[2,906]),o($VL1,[2,907]),o($VL1,[2,908]),o($VL1,[2,909]),o($VL1,[2,910]),o($VL1,[2,911]),o($VL1,[2,912]),o($VL1,[2,913]),o($VL1,[2,914]),o($VL1,[2,915]),o($VL1,[2,916]),o($VL1,[2,917]),o($VL1,[2,918]),o($VL1,[2,919]),o($VL1,[2,920]),o($VL1,[2,921]),o($VL1,[2,922]),o($VL1,[2,923]),o($VL1,[2,924]),o($VL1,[2,925]),o($VL1,[2,926]),o($VL1,[2,927]),o($VL1,[2,928]),o($VL1,[2,929]),o($VL1,[2,930]),o($VL1,[2,931]),o($VL1,[2,932]),o($VL1,[2,933]),o($VL1,[2,934]),o($VL1,[2,935]),o($VL1,[2,936]),o($VL1,[2,937]),o($VL1,[2,938]),o($VL1,[2,939]),o($VL1,[2,940]),o($VL1,[2,941]),o($VL1,[2,942]),o($VL1,[2,943]),o($VL1,[2,944]),o($VL1,[2,945]),o($VL1,[2,946]),o($VL1,[2,947]),o($VL1,[2,948]),o($VL1,[2,949]),o($VL1,[2,950]),o($VL1,[2,951]),o($VL1,[2,952]),o($VL1,[2,953]),o($VL1,[2,954]),o($VL1,[2,955]),o($VL1,[2,956]),o($VL1,[2,957]),o($VL1,[2,958]),o($VL1,[2,959]),o($VL1,[2,960]),o($VL1,[2,961]),o($VL1,[2,962]),o($VL1,[2,963]),o($VL1,[2,964]),o($VL1,[2,965]),o($VL1,[2,966]),o($VL1,[2,967]),o($VL1,[2,968]),o($VL1,[2,969]),o($VL1,[2,970]),o($VL1,[2,971]),o($VL1,[2,972]),o($VL1,[2,973]),o($VL1,[2,974]),o($VL1,[2,975]),o($VL1,[2,976]),o($VL1,[2,977]),o($VL1,[2,978]),o($VL1,[2,979]),o($VL1,[2,980]),o($VL1,[2,981]),o($VL1,[2,982]),o($VL1,[2,983]),o($VL1,[2,984]),o($VL1,[2,985]),o($VL1,[2,986]),o($VL1,[2,987]),o($VL1,[2,988]),o($VL1,[2,989]),o($VL1,[2,990]),o($VL1,[2,991]),o($VL1,[2,992]),o($VL1,[2,993]),o($VL1,[2,994]),o($VL1,[2,995]),o($VL1,[2,996]),o($VL1,[2,997]),o($VL1,[2,998]),o($VL1,[2,999]),o($VL1,[2,1000]),o($VL1,[2,1001]),o($VL1,[2,1002]),o($VL1,[2,1003]),o($VL1,[2,1004]),o($VL1,[2,1005]),o($VL1,[2,1006]),o($VL1,[2,1007]),o($VL1,[2,1008]),o($VL1,[2,1009]),o($VL1,[2,1010]),o($VL1,[2,1011]),o($VL1,[2,1012]),o($VL1,[2,1013]),o($VL1,[2,1014]),o($VL1,[2,1015]),o($VL1,[2,1016]),o($VL1,[2,1017]),o($VL1,[2,1018]),o($VL1,[2,1019]),o($VL1,[2,1020]),o($VL1,[2,1021]),o($VL1,[2,1022]),o($VL1,[2,1023]),o($VL1,[2,1024]),o($VL1,[2,1025]),o($VL1,[2,1026]),o($VL1,[2,1027]),o($VL1,[2,1028]),o($VL1,[2,1029]),o($VL1,[2,1030]),o($VL1,[2,1031]),o($VL1,[2,1032]),o($VL1,[2,1033]),o($VL1,[2,1034]),o($VL1,[2,1035]),o($VL1,[2,1036]),o($VL1,[2,1037]),o($VL1,[2,1038]),o($VL1,[2,1039]),o($VL1,[2,1040]),o($VJ,[2,7]),o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:821,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{396:[1,825],401:[1,822],402:[1,823],403:[1,824]},{2:$V1,3:826,4:$V2,5:$V3},o($VE3,[2,1111],{289:827,767:829,78:[1,828],164:[1,831],185:[1,830]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:832,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:833,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:834,4:$V2,5:$V3,132:[1,835]},{2:$V1,3:836,4:$V2,5:$V3,132:[1,837]},{2:$V1,3:838,4:$V2,5:$V3,99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:839,4:$V2,5:$V3},{154:[1,840]},o($VH3,$VP1,{350:841,156:$VQ1}),{230:[1,842]},{2:$V1,3:843,4:$V2,5:$V3},o($VK,[2,729],{74:$VI3}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:845,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD3,[2,732]),o($VJ3,[2,1143],{419:190,476:846,144:847,139:$VK3,141:$VK3,145:$VC1,420:$Vr1,424:$Vs1}),{139:[1,848],141:[1,849]},o($VL3,$VM3,{490:851,493:852,77:[1,850],137:$VS1}),o($VN3,[2,1167],{494:853,132:[1,854]}),o($VO3,[2,1171],{496:855,497:856,152:$VT1}),o($VO3,[2,747]),o($VP3,[2,739]),{2:$V1,3:857,4:$V2,5:$V3,131:[1,858]},{2:$V1,3:859,4:$V2,5:$V3},{2:$V1,3:860,4:$V2,5:$V3},o($Vt1,$VP1,{350:861,156:$VQ1}),o($Vt1,$VP1,{350:862,156:$VQ1}),o($VY1,[2,491]),o($VY1,[2,492]),{183:[1,863]},{183:[2,1142]},o($VQ3,[2,1137],{466:864,469:865,137:[1,866]}),o($VU1,[2,1136]),o($VR3,$VS3,{510:867,95:$VT3,230:[1,868],514:$VU3,515:$VV3,516:$VW3}),{76:[1,873]},{76:[1,874]},{145:$VT,450:875},{4:$VX3,7:879,76:[1,877],272:876,387:878,389:$VY3},o($VK,[2,456],{128:[1,882]}),o($VK,[2,579]),{2:$V1,3:883,4:$V2,5:$V3},{298:[1,884]},o($VH3,$VW1,{398:885,156:$VX1}),o($VK,[2,593]),{2:$V1,3:244,4:$V2,5:$V3,199:887,399:886},{2:$V1,3:244,4:$V2,5:$V3,199:887,399:888},o($VK,[2,772]),o($VJ,[2,669],{438:889,310:[1,890]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:891,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:892,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:893,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:894,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:895,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:896,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:897,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:898,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:899,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:900,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:901,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:902,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:903,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:904,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:905,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:906,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:907,4:$V2,5:$V3,77:[1,909],131:$VV,156:$VL,196:908,200:910,290:$VM,291:$VN,292:$VO,293:$VP},{2:$V1,3:911,4:$V2,5:$V3,77:[1,913],131:$VV,156:$VL,196:912,200:914,290:$VM,291:$VN,292:$VO,293:$VP},o($VZ3,[2,440],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:915,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,441],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:916,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,442],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:917,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,443],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:918,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,$V_3,{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:919,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:920,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:921,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VZ3,[2,445],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:922,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:923,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:924,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{164:[1,926],166:[1,928],328:925,334:[1,927]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:929,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:930,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:[1,931],111:934,145:$V$3,156:$VL,200:935,202:933,290:$VM,291:$VN,292:$VO,293:$VP,329:932},{99:[1,937],297:[1,938]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:939,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:940,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:941,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:942,387:878,389:$VY3},o($V04,[2,88]),o($V04,[2,89]),{78:[1,943]},{78:[1,944]},{78:[1,945]},{78:[1,946],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vt1,$Vu1,{340:207,77:$VO1,198:$Vv1}),{78:[2,1107]},{78:[2,1108]},{134:$VR,135:$VS},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:947,152:$V$,154:$V01,156:$VL,158:167,164:[1,949],179:$V11,180:$V21,181:$V31,185:[1,948],196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:950,4:$V2,5:$V3,149:$V14,180:[1,952]},o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,416],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o($V24,[2,417],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V24,[2,418],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V34,[2,419],{114:625,327:637,316:$Vj2}),o($V34,[2,420],{114:625,327:637,316:$Vj2}),o($Vz2,[2,365]),o($Vz2,[2,1113]),o($Vz2,[2,1114]),o($Vz2,[2,366]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,362]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:953,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD2,[2,620]),o($VD2,[2,621]),o($VD2,[2,622]),o($VD2,[2,623]),o($VD2,[2,625]),{40:954,79:75,89:$V7,184:99,189:$Vb},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,304:955,307:677,308:$VC2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{305:956,306:$V44,307:957,308:$VC2,310:$V54},o($V64,[2,372]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:959,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:960,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:961,387:878,389:$VY3},o($VD2,[2,626]),{74:[1,963],300:[1,962]},o($VD2,[2,642]),o($V74,[2,649]),o($V84,[2,627]),o($V84,[2,628]),o($V84,[2,629]),o($V84,[2,630]),o($V84,[2,631]),o($V84,[2,632]),o($V84,[2,633]),o($V84,[2,634]),o($V84,[2,635]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:964,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy2,{77:$VN1,116:$V94}),{74:$Vx3,300:[1,966]},o($Va4,[2,314],{77:$VN1}),o($VB1,[2,315]),{74:[1,968],426:[1,967]},o($VD2,[2,639]),o($Vb4,[2,644]),{152:[1,969]},{152:[1,970]},{152:[1,971]},{40:976,77:[1,975],79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:972,342:973,343:[1,974],344:$Vd4,419:190,420:$Vr1,424:$Vs1},o($Vt1,$Vu1,{340:981,198:$Vv1}),{77:$Ve4,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,201:980,302:$Vn1,341:982,342:983,344:$Vd4,419:190,420:$Vr1,424:$Vs1},{230:[1,986],455:985},{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:987,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{231:[2,696]},{78:[1,988]},o($VI2,[2,1093],{211:989,3:990,2:$V1,4:$V2,5:$V3}),o($VH2,[2,1092]),o($VI2,[2,183]),{2:$V1,3:991,4:$V2,5:$V3},{212:[1,992]},o($VI2,[2,187]),{2:$V1,3:993,4:$V2,5:$V3},o($VI2,[2,191]),{2:$V1,3:994,4:$V2,5:$V3},o($VI2,[2,195]),{2:$V1,3:995,4:$V2,5:$V3},o($VI2,[2,198]),{2:$V1,3:996,4:$V2,5:$V3},{2:$V1,3:997,4:$V2,5:$V3},{148:[1,998]},o($Vf4,[2,172],{82:999,183:[1,1000]}),{2:$V1,3:219,4:$V2,5:$V3,132:[1,1005],143:$VY,145:[1,1006],152:$V$,156:$VL,181:$V31,199:1001,200:1002,201:1003,202:1004,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1},{2:$V1,3:1011,4:$V2,5:$V3,109:1007,110:1008,111:1009,112:$Vg4},o($VO2,[2,1058]),o($Vh4,[2,1049],{91:1012,182:1013,183:[1,1014]}),o($VA1,[2,1048],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o([2,4,5,10,72,74,76,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,90],{77:[1,1019]}),{119:[1,1020]},o($Vl4,[2,93]),{2:$V1,3:1021,4:$V2,5:$V3},o($Vl4,[2,95]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1022,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1023,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1025,118:$VT2,122:$VU2,123:$VV2,124:$VW2,125:1024,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{77:[1,1026]},{77:[1,1027]},{77:[1,1028]},{77:[1,1029]},o($Vl4,[2,104]),o($Vl4,[2,105]),o($Vl4,[2,106]),o($Vl4,[2,107]),o($Vl4,[2,108]),o($Vl4,[2,109]),{2:$V1,3:1030,4:$V2,5:$V3},{2:$V1,3:1031,4:$V2,5:$V3,133:[1,1032]},o($Vl4,[2,113]),o($Vl4,[2,114]),o($Vl4,[2,115]),o($Vl4,[2,116]),o($Vl4,[2,117]),o($Vl4,[2,118]),{2:$V1,3:1033,4:$V2,5:$V3,77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},{145:[1,1034]},{77:[1,1035]},{145:[1,1036]},o($Vl4,[2,123]),{77:[1,1037]},{2:$V1,3:1038,4:$V2,5:$V3},{77:[1,1039]},{77:[1,1040]},{77:[1,1041]},{77:[1,1042]},{77:[1,1043],164:[1,1044]},{77:[1,1045]},{77:[1,1046]},{77:[1,1047]},{77:[1,1048]},{77:[1,1049]},{77:[1,1050]},{77:[1,1051]},{77:[1,1052]},{77:[1,1053]},{77:[2,1073]},{77:[2,1074]},{2:$V1,3:244,4:$V2,5:$V3,199:1054},{2:$V1,3:244,4:$V2,5:$V3,199:1055},{113:1056,132:$VW,296:$Vj1},o($VK,[2,596],{112:[1,1057]}),{2:$V1,3:244,4:$V2,5:$V3,199:1058},{113:1059,132:$VW,296:$Vj1},{2:$V1,3:1060,4:$V2,5:$V3},o($VK,[2,693]),o($VK,[2,68]),{2:$V1,3:236,4:$V2,5:$V3,75:1061},{77:[1,1062]},o($VK,[2,674]),o($VK,[2,586]),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1063,336:1064,337:1066},{144:1069,145:$VC1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,671]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1070,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VZ3,$V_3,{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:1071,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{113:1072,132:$VW,296:$Vj1},{2:$V1,3:266,4:$V2,5:$V3,446:1073,447:$VE1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1075,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,230:$VA3,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1,429:1074,433:$VB3},o($VK,[2,651]),{114:1077,115:$V$1,116:$V02,124:[1,1076]},o($VK,[2,663]),o($VK,[2,664]),{2:$V1,3:1079,4:$V2,5:$V3,77:$Vo4,131:$Vp4,432:1078},{114:807,115:$V$1,116:$V02,124:[1,1082],430:1083},o($VK,[2,753],{74:$VC3}),{2:$V1,3:100,4:$V2,5:$V3,504:1084},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1085,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1086,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1087,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VF3,[2,151]),o($VF3,[2,1088],{74:$Vq4}),o($Vr4,[2,273]),o($Vr4,[2,280],{114:625,327:637,3:1090,113:1092,2:$V1,4:$V2,5:$V3,76:[1,1089],99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,131:[1,1091],132:$VW,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,296:$Vj1,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VH1,[2,1089],{197:1093,765:[1,1094]}),{131:$VV,196:1095},{74:$VC3,78:[1,1096]},o($VJ,[2,11]),{148:[1,1097],190:[1,1098]},{190:[1,1099]},{190:[1,1100]},{190:[1,1101]},o($VK,[2,575],{76:[1,1103],77:[1,1102]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1104,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vz2,[2,346]),o($VE3,[2,1112]),o($VE3,[2,1109]),o($VE3,[2,1110]),{74:$Vx3,78:[1,1105]},{74:$Vx3,78:[1,1106]},{74:[1,1107]},{74:[1,1108]},{74:[1,1109]},{74:[1,1110]},o($Vz2,[2,353]),o($VK,[2,580]),{298:[1,1111]},{2:$V1,3:1112,4:$V2,5:$V3,113:1113,132:$VW,296:$Vj1},{2:$V1,3:244,4:$V2,5:$V3,199:1114},{230:[1,1115]},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,474:1116,475:576,478:577,482:582,493:579,497:581},o($VK,[2,730],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VD3,[2,1145],{477:1117,483:1118,76:$Vs4}),o($VJ3,[2,1144]),{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,144:1121,145:$VC1,152:$VT1,419:190,420:$Vr1,424:$Vs1,475:1120,493:579,497:581},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1123,482:582,493:579,497:581},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,473:1125,474:575,475:576,478:577,482:582,493:579,497:581},o($VN3,[2,1163],{491:1126,132:[1,1127]}),o($VL3,[2,1162]),o($VO3,[2,1169],{495:1128,497:1129,152:$VT1}),o($VN3,[2,1168]),o($VO3,[2,746]),o($VO3,[2,1172]),o($VL3,[2,749]),o($VL3,[2,750]),o($VO3,[2,748]),o($VP3,[2,740]),{2:$V1,3:244,4:$V2,5:$V3,199:1130},{2:$V1,3:244,4:$V2,5:$V3,199:1131},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1132,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt4,[2,1139],{467:1133,113:1134,132:$VW,296:$Vj1}),o($VQ3,[2,1138]),{2:$V1,3:1135,4:$V2,5:$V3},{335:$Vu4,338:$Vv4,339:$Vw4,511:1136},{2:$V1,3:244,4:$V2,5:$V3,199:1140},o($VR3,[2,765]),o($VR3,[2,766]),o($VR3,[2,767]),{129:[1,1141]},{266:[1,1142]},{266:[1,1143]},o($VV1,[2,688]),o($VV1,[2,689],{124:[1,1144]}),{4:$VX3,7:879,272:1145,387:878,389:$VY3},o([2,4,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,542],{5:[1,1146]}),o([2,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,539],{4:[1,1148],77:[1,1147]}),{77:[1,1149]},o($Vx4,[2,4]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1150,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,588]),o($VH3,[2,568]),{2:$V1,3:1151,4:$V2,5:$V3,113:1152,132:$VW,296:$Vj1},o($VK,[2,564],{74:$Vy4}),o($VV1,[2,566]),o($VK,[2,613],{74:$Vy4}),o($VK,[2,668]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1154,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($Vz4,[2,376],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($V34,[2,377],{114:625,327:637,316:$Vj2}),o($Vz4,[2,378],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VA4,[2,379],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,314:[1,1155],316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VA4,[2,381],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,314:[1,1156],316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,383],{114:625,327:637}),o($V24,[2,384],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V24,[2,385],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($VB4,[2,386],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o($VB4,[2,387],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o($VB4,[2,388],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,123,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,389],{114:625,327:637,115:$V$1,116:$V02,136:$V42,312:$Vg2,316:$Vj2}),o($VC4,[2,390],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,391],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,392],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,393],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($Va4,[2,394],{77:$VN1}),o($VB1,[2,395]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1157,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,397]),o($Va4,[2,398],{77:$VN1}),o($VB1,[2,399]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1158,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,401]),o($VD4,[2,402],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,403],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,404],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,405],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o([2,4,5,10,53,72,89,99,124,139,140,146,154,156,170,171,189,266,267,290,306,310,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VE4,{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,407],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,408],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,409],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,410],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,411],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),{77:[1,1159]},{77:[2,446]},{77:[2,447]},{77:[2,448]},o($VF4,[2,414],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,415],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2}),{2:$V1,3:168,4:$V2,5:$V3,40:1160,56:165,77:$VU,78:[1,1162],79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1161,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,428]),o($VB1,[2,430]),o($VB1,[2,437]),o($VB1,[2,438]),{2:$V1,3:667,4:$V2,5:$V3,77:[1,1163]},{2:$V1,3:695,4:$V2,5:$V3,77:[1,1164],111:934,145:$V$3,156:$VL,200:935,202:1166,290:$VM,291:$VN,292:$VO,293:$VP,329:1165},o($VB1,[2,435]),o($VF4,[2,432],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o($VF4,[2,433],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,434],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,436]),o($VB1,[2,306]),o($VB1,[2,307]),o($VB1,[2,308]),o($VB1,[2,421]),{74:$Vx3,78:[1,1167]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1168,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1169,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,$VG4),o($VH4,[2,286]),o($VB1,[2,282]),{78:[1,1171],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1172]},{305:1173,306:$V44,307:957,308:$VC2,310:$V54},{306:[1,1174]},o($V64,[2,371]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1175,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1176],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{76:[1,1177],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1178]},o($VD2,[2,640]),{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,300:[1,1179],302:$Vn1,419:190,420:$Vr1,422:1180,423:686,424:$Vs1},{78:[1,1181],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1182,4:$V2,5:$V3,149:$V14},o($VB1,[2,364]),o($VD2,[2,637]),{2:$V1,3:704,4:$V2,5:$V3,131:$VF2,132:$VG2,426:[1,1183],428:1184},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1185,423:686,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1186,423:686,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1187,423:686,424:$Vs1},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1188,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,458],{74:$VJ4}),{149:$Vc4,341:1190,344:$Vd4},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,100:1191,111:1193,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1192,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,466]),o($VK4,[2,469]),o($VK4,[2,470]),o($VL4,[2,474]),o($VL4,[2,475]),{2:$V1,3:244,4:$V2,5:$V3,199:1195},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1196,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,462],{74:$VJ4}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1192,419:190,420:$Vr1,424:$Vs1},{308:$VM4,456:1197,458:1198,459:1199},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1201,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{230:[2,697]},o($VI2,[2,181],{3:1202,2:$V1,4:$V2,5:$V3,76:[1,1203]}),o($VI2,[2,182]),o($VI2,[2,1094]),o($VI2,[2,184]),o($VI2,[2,186]),o($VI2,[2,188]),o($VI2,[2,192]),o($VI2,[2,196]),o($VI2,[2,199]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,118,124,128,143,145,146,148,149,152,154,156,162,168,169,181,183,187,189,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,266,267,290,297,302,306,310,335,338,339,343,344,356,368,369,373,374,396,400,401,402,403,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,514,515,516,517,602,764],[2,201]),{2:$V1,3:1204,4:$V2,5:$V3},o($VN4,[2,1045],{83:1205,92:1206,93:[1,1207],98:[1,1208]}),{2:$V1,3:219,4:$V2,5:$V3,77:[1,1210],132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,203:1209,209:1211,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($VL2,[2,164]),o($VL2,[2,165]),o($VL2,[2,166]),o($VL2,[2,167]),o($VL2,[2,168]),{2:$V1,3:667,4:$V2,5:$V3},o($Vz1,[2,83],{74:[1,1212]}),o($VO4,[2,85]),o($VO4,[2,86]),{113:1213,132:$VW,296:$Vj1},o([10,72,74,78,93,98,118,124,128,162,168,169,183,198,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vy2,{116:$V94}),o($Vh4,[2,73]),o($Vh4,[2,1050]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1214,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,126]),o($Vl4,[2,144]),o($Vl4,[2,145]),o($Vl4,[2,146]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,78:[2,1065],94:260,111:149,113:153,127:1215,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1216,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1217]},o($Vl4,[2,94]),o([2,4,5,10,72,74,76,77,78,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,96],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o([2,4,5,10,72,74,76,77,78,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,97],{114:625,327:637,99:$VZ1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1218],112:$VS2,114:736,115:$V$1,116:$V02,117:1219,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},o($VP4,[2,1061],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1221,118:$VT2,122:$VU2,123:$VV2,124:$VW2,126:1220,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1222,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1223,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1224,4:$V2,5:$V3},o($Vl4,[2,110]),o($Vl4,[2,111]),o($Vl4,[2,112]),o($Vl4,[2,119]),{2:$V1,3:1225,4:$V2,5:$V3},{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1226,336:1064,337:1066},{2:$V1,3:1227,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1228,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,125]),o($VP4,[2,1067],{155:1229}),o($VP4,[2,1069],{157:1230}),o($VP4,[2,1071],{159:1231}),o($VP4,[2,1075],{161:1232}),o($VQ4,$VR4,{163:1233,178:1234}),{77:[1,1235]},o($VP4,[2,1077],{165:1236}),o($VP4,[2,1079],{167:1237}),o($VQ4,$VR4,{178:1234,163:1238}),o($VQ4,$VR4,{178:1234,163:1239}),o($VQ4,$VR4,{178:1234,163:1240}),o($VQ4,$VR4,{178:1234,163:1241}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1242,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1243,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VS4,[2,1081],{176:1244}),o($VK,[2,606],{183:[1,1245]}),o($VK,[2,602],{183:[1,1246]}),o($VK,[2,595]),{113:1247,132:$VW,296:$Vj1},o($VK,[2,604],{183:[1,1248]}),o($VK,[2,599]),o($VK,[2,600],{112:[1,1249]}),o($Vv3,[2,69]),{40:1250,79:75,89:$V7,184:99,189:$Vb},o($VK,[2,450],{74:$VT4,128:[1,1251]}),o($VU4,[2,451]),{124:[1,1253]},{2:$V1,3:1254,4:$V2,5:$V3},o($Vt1,[2,1115]),o($Vt1,[2,1116]),o($VK,[2,618]),o($Vy3,[2,355],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VD4,$VE4,{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VV1,[2,682]),o($VV1,[2,684]),o($VK,[2,650]),o($VK,[2,652],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1255,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1079,4:$V2,5:$V3,77:$Vo4,131:$Vp4,432:1256},o($VV4,[2,659]),o($VV4,[2,660]),o($VV4,[2,661]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1257,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1258,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{114:1077,115:$V$1,116:$V02,124:[1,1259]},o($VD3,[2,755]),o($VF3,[2,148],{74:$Vq4}),o($VF3,[2,149],{74:$Vq4}),o($VF3,[2,150],{74:$Vq4}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:1260,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1261,4:$V2,5:$V3,113:1263,131:[1,1262],132:$VW,296:$Vj1},o($Vr4,[2,275]),o($Vr4,[2,277]),o($Vr4,[2,279]),o($VH1,[2,160]),o($VH1,[2,1090]),{78:[1,1264]},o($VK1,[2,758]),{2:$V1,3:1265,4:$V2,5:$V3},{2:$V1,3:1266,4:$V2,5:$V3},{2:$V1,3:1268,4:$V2,5:$V3,384:1267},{2:$V1,3:1268,4:$V2,5:$V3,384:1269},{2:$V1,3:1270,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1271,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1272,4:$V2,5:$V3},{74:$Vx3,78:[1,1273]},o($Vz2,[2,347]),o($Vz2,[2,348]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1274,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1275,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1276,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1277,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VH3,[2,504]),o($VK,$VW4,{407:1278,76:$VX4,77:[1,1279]}),o($VK,$VW4,{407:1281,76:$VX4}),{77:[1,1282]},{2:$V1,3:244,4:$V2,5:$V3,199:1283},o($VD3,[2,731]),o($VD3,[2,733]),o($VD3,[2,1146]),{143:$VF1,145:$VG1,431:1284},o($VY4,[2,1147],{419:190,479:1285,144:1286,145:$VC1,420:$Vr1,424:$Vs1}),{76:$Vs4,139:[2,1151],481:1287,483:1288},o([10,74,76,78,132,139,145,152,306,310,420,424,602,764],$VM3,{490:851,493:852,137:$VS1}),o($VD3,[2,736]),o($VD3,$VK3),{74:$VI3,78:[1,1289]},o($VO3,[2,1165],{492:1290,497:1291,152:$VT1}),o($VN3,[2,1164]),o($VO3,[2,745]),o($VO3,[2,1170]),o($VK,[2,490],{77:[1,1292]}),{76:[1,1294],77:[1,1293]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,148:[1,1295],154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VI4,$VZ4,{79:75,184:99,468:1296,40:1299,89:$V7,146:$V_4,189:$Vb,470:$V$4}),o($Vt4,[2,1140]),o($VQ3,[2,723]),{230:[1,1300]},o($V05,[2,769]),o($V05,[2,770]),o($V05,[2,771]),o($VR3,$VS3,{510:1301,95:$VT3,514:$VU3,515:$VV3,516:$VW3}),o($VR3,[2,768]),o($VK,[2,312]),o($VK,[2,313]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1302,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VV1,[2,690],{124:[1,1303]}),o($Vx4,[2,541]),{131:[1,1305],388:1304,390:[1,1306]},o($Vx4,[2,5]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1307,419:190,420:$Vr1,424:$Vs1},o($VK,[2,455],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,589]),o($VK,[2,590]),{2:$V1,3:244,4:$V2,5:$V3,199:1308},o($VK,[2,670]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1309,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1310,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1311],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1312],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:168,4:$V2,5:$V3,40:1313,56:165,77:$VU,79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1314,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1315]},{74:$Vx3,78:[1,1316]},o($VB1,[2,426]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1317,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,40:1318,56:165,77:$VU,78:[1,1320],79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1319,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,429]),o($VB1,[2,431]),o($VB1,$V15,{275:1321,276:$V25}),{78:[1,1323],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1324],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1325,4:$V2,5:$V3,180:[1,1326]},o($VD2,[2,619]),o($VB1,[2,363]),{306:[1,1327]},o($VB1,[2,370]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,306:[2,374],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1328,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:1329,387:878,389:$VY3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1330,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD2,[2,641]),o($V74,[2,648]),o($V84,[2,636]),o($VH4,$VG4),o($VD2,[2,638]),o($Vb4,[2,643]),o($Vb4,[2,645]),o($Vb4,[2,646]),o($Vb4,[2,647]),o($VI4,[2,457],{74:$VJ4}),{77:[1,1332],143:$VY,144:1333,145:$VC1,152:$V$,181:$V31,201:1334,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,463]),{74:$V35,78:[1,1335]},{74:$V45,78:[1,1337]},o([74,78,99,112,115,116,123,124,133,136,138,139,140,141,142,154,170,171,179,180,311,312,313,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333],$V55),o($V65,[2,479],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{40:1341,77:$Ve4,79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:1339,342:1340,344:$Vd4,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,461],{74:$VJ4}),o($VK,[2,717],{457:1342,458:1343,459:1344,308:$VM4,464:[1,1345]}),o($V75,[2,701]),o($V75,[2,702]),{154:[1,1347],460:[1,1346]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,308:[2,698],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VI2,[2,179]),{2:$V1,3:1348,4:$V2,5:$V3},o($VK,[2,574]),o($V85,[2,238],{84:1349,128:[1,1350]}),o($VN4,[2,1046]),{77:[1,1351]},{77:[1,1352]},o($Vf4,[2,169],{204:1353,215:1355,205:1356,216:1357,221:1360,74:$V95,206:$Va5,208:$Vb5,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5}),{2:$V1,3:219,4:$V2,5:$V3,40:711,77:$Vw1,79:75,89:$V7,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,184:99,189:$Vb,199:213,200:215,201:214,202:217,203:1369,209:1211,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($Vk5,[2,177]),{2:$V1,3:1011,4:$V2,5:$V3,110:1370,111:1009,112:$Vg4},o($VO4,[2,87]),o($Vh4,[2,147],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{78:[1,1371]},{74:$Vx3,78:[2,1066]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,78:[2,1059],94:1376,111:149,113:153,120:1372,121:1373,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,242:[1,1375],254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,98]),o($VP4,[2,1062],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1377],112:$VS2,114:736,115:$V$1,116:$V02,117:1378,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},o($VP4,[2,1063],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{78:[1,1379],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1380],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1381]},o($Vl4,[2,120]),{74:$VT4,78:[1,1382]},o($Vl4,[2,122]),{74:$Vx3,78:[1,1383]},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1384],112:$VS2,114:736,115:$V$1,116:$V02,117:1385,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1386],112:$VS2,114:736,115:$V$1,116:$V02,117:1387,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1388],112:$VS2,114:736,115:$V$1,116:$V02,117:1389,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1390],112:$VS2,114:736,115:$V$1,116:$V02,117:1391,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{74:$Vl5,78:[1,1392]},o($V65,[2,143],{419:190,3:733,114:736,144:758,158:768,160:769,117:1394,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),o($VQ4,$VR4,{178:1234,163:1395}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1396],112:$VS2,114:736,115:$V$1,116:$V02,117:1397,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1398],112:$VS2,114:736,115:$V$1,116:$V02,117:1399,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{74:$Vl5,78:[1,1400]},{74:$Vl5,78:[1,1401]},{74:$Vl5,78:[1,1402]},{74:$Vl5,78:[1,1403]},{78:[1,1404],153:1015,179:$Vi4,180:$Vj4,181:$Vk4},{74:$Vq4,78:[1,1405]},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,74:[1,1406],76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1407,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1408,4:$V2,5:$V3},{2:$V1,3:1409,4:$V2,5:$V3},o($VK,[2,597]),{2:$V1,3:1410,4:$V2,5:$V3},{113:1411,132:$VW,296:$Vj1},{78:[1,1412]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1413,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,336:1414,337:1066},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1415,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{124:[1,1416]},o($VK,[2,653],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VV4,[2,658]),{78:[1,1417],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,[2,654],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1418,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vr4,[2,272]),o($Vr4,[2,274]),o($Vr4,[2,276]),o($Vr4,[2,278]),o($VH1,[2,161]),o($VK,[2,569]),{148:[1,1419]},o($VK,[2,570]),o($VD3,[2,536],{387:878,7:879,272:1420,4:$VX3,386:[1,1421],389:$VY3}),o($VK,[2,571]),o($VK,[2,573]),{74:$Vx3,78:[1,1422]},o($VK,[2,577]),o($Vz2,[2,345]),{74:[1,1423],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1424],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1425],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1426],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,[2,581]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1427,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1428,4:$V2,5:$V3},o($VK,[2,583]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1429,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1430]},{2:$V1,3:1431,4:$V2,5:$V3},{76:$Vs4,139:[2,1149],480:1432,483:1433},o($VY4,[2,1148]),{139:[1,1434]},{139:[2,1152]},o($VD3,[2,737]),o($VO3,[2,744]),o($VO3,[2,1166]),{2:$V1,3:1268,4:$V2,5:$V3,76:[1,1437],351:1435,358:1436,384:1438},{2:$V1,3:1011,4:$V2,5:$V3,100:1439,111:1440},{40:1441,79:75,89:$V7,184:99,189:$Vb},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1442,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,722]),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1443,336:1064,337:1066},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1444,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,727]),{2:$V1,3:244,4:$V2,5:$V3,199:1445},{335:$Vu4,338:$Vv4,339:$Vw4,511:1446},o($VV1,[2,691],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1447,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:[1,1448],78:[1,1449]},o($V65,[2,543]),o($V65,[2,544]),{74:$V45,78:[1,1450]},o($VV1,[2,565]),o($Vz4,[2,380],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($Vz4,[2,382],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,396]),o($VB1,[2,400]),{78:[1,1451]},{74:$Vx3,78:[1,1452]},o($VB1,[2,422]),o($VB1,[2,424]),{78:[1,1453],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1454]},{74:$Vx3,78:[1,1455]},o($VB1,[2,427]),o($VB1,[2,327]),{77:[1,1456]},o($VB1,$V15,{275:1457,276:$V25}),o($VB1,$V15,{275:1458,276:$V25}),o($VH4,[2,284]),o($VB1,[2,281]),o($VB1,[2,369]),o($V64,[2,373],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{74:[1,1460],78:[1,1459]},{74:[1,1462],78:[1,1461],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1325,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1463,419:190,420:$Vr1,424:$Vs1},o($VL4,[2,477]),o($VL4,[2,478]),{40:1466,77:$Ve4,79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:1464,342:1465,344:$Vd4,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,111:1467},o($VL4,[2,473]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1468,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1469,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,460],{74:$VJ4}),o($VI4,[2,467]),o($VK,[2,694]),o($V75,[2,699]),o($V75,[2,700]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1470,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{170:[1,1472],309:[1,1471]},{460:[1,1473]},o($VI2,[2,180]),o($Vm5,[2,240],{85:1474,232:[1,1475]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1476,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1477,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1478,4:$V2,5:$V3},o($Vf4,[2,170],{216:1357,221:1360,215:1479,205:1480,206:$Va5,208:$Vb5,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5}),{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:1481,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($Vn5,[2,205]),o($Vn5,[2,206]),{2:$V1,3:219,4:$V2,5:$V3,77:[1,1486],143:$VY,144:1484,145:$VZ,152:$V$,156:$VL,181:$V31,199:1483,200:1487,201:1485,202:1488,217:1482,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{207:[1,1489],223:$Vo5},{207:[1,1491],223:$Vp5},o($Vq5,[2,222]),{206:[1,1495],208:[1,1494],221:1493,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($Vq5,[2,224]),{223:[1,1496]},{208:[1,1498],223:[1,1497]},{208:[1,1500],223:[1,1499]},{208:[1,1501]},{223:[1,1502]},{223:[1,1503]},{74:$V95,204:1504,205:1356,206:$Va5,208:$Vb5,215:1355,216:1357,221:1360,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($VO4,[2,84]),o($Vl4,[2,100]),{74:$Vr5,78:[1,1505]},{78:[1,1507]},o($Vs5,[2,261]),{78:[2,1060]},o($Vs5,[2,263],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,242:[1,1508],243:[1,1509],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($Vl4,[2,99]),o($VP4,[2,1064],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,101]),o($Vl4,[2,102]),o($Vl4,[2,103]),o($Vl4,[2,121]),o($Vl4,[2,124]),o($Vl4,[2,127]),o($VP4,[2,1068],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,128]),o($VP4,[2,1070],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,129]),o($VP4,[2,1072],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,130]),o($VP4,[2,1076],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,131]),o($VQ4,[2,1083],{177:1510}),o($VQ4,[2,1086],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{74:$Vl5,78:[1,1511]},o($Vl4,[2,133]),o($VP4,[2,1078],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,134]),o($VP4,[2,1080],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,135]),o($Vl4,[2,136]),o($Vl4,[2,137]),o($Vl4,[2,138]),o($Vl4,[2,139]),o($Vl4,[2,140]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1512,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VS4,[2,1082],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($VK,[2,607]),o($VK,[2,603]),o($VK,[2,605]),o($VK,[2,601]),o($Vv3,[2,71]),o($VK,[2,449],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VU4,[2,452]),o($VU4,[2,453],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1513,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VV4,[2,662]),o($VK,[2,655],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:1514,4:$V2,5:$V3},o($VD3,[2,545],{385:1515,391:1516,392:1517,366:1525,154:$Vt5,187:$Vu5,230:$Vv5,297:$Vw5,343:$Vx5,356:$Vy5,368:$Vz5,369:$VA5,373:$VB5,374:$VC5}),o($VD3,[2,535]),o($VK,[2,576],{76:[1,1529]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1530,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1531,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1532,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1533,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:$Vx3,78:[1,1534]},o($VK,[2,585]),{74:$Vr5,78:[1,1535]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1536,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o([10,74,78,139,306,310,602,764],[2,741]),{139:[1,1537]},{139:[2,1150]},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1538,482:582,493:579,497:581},{78:[1,1539]},{74:[1,1540],78:[2,506]},{40:1541,79:75,89:$V7,184:99,189:$Vb},o($V65,[2,532]),{74:$V35,78:[1,1542]},o($Vk5,$V55),o($VK,[2,1133],{412:1543,413:1544,72:$VD5}),o($VI4,$VZ4,{79:75,184:99,114:625,327:637,40:1299,468:1546,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V_4,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,470:$V$4}),o($VI4,[2,725],{74:$VT4}),o($VI4,[2,726],{74:$Vx3}),o([10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],[2,1181],{512:1547,3:1548,2:$V1,4:$V2,5:$V3,76:[1,1549]}),o($VE5,[2,1183],{513:1550,76:[1,1551]}),o($VV1,[2,692],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{131:[1,1552]},o($Vx4,[2,538]),o($Vx4,[2,540]),o($VB1,[2,412]),o($VB1,[2,413]),o($VB1,[2,439]),o($VB1,[2,423]),o($VB1,[2,425]),{118:$VF5,277:1553,278:1554,279:[1,1555]},o($VB1,[2,328]),o($VB1,[2,329]),o($VB1,[2,316]),{131:[1,1557]},o($VB1,[2,318]),{131:[1,1558]},{74:$V45,78:[1,1559]},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1560,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,465],{74:$VJ4}),o($VI4,[2,468]),o($Vk5,[2,488]),o($V65,[2,480],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VI4,[2,459],{74:$VJ4}),o($VK,[2,718],{74:$Vq4,198:[1,1561]}),{335:$VG5,338:$VH5,461:1562},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1565,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{119:[1,1567],170:[1,1568],309:[1,1566]},o($VI5,[2,259],{86:1569,118:[1,1570]}),{119:[1,1571]},o($V85,[2,239],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{95:[1,1572],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{95:[1,1573]},o($Vn5,[2,203]),o($Vn5,[2,204]),o($Vk5,[2,178]),o($Vn5,[2,237],{218:1574,230:[1,1575],231:[1,1576]}),o($VJ5,[2,208],{3:1577,2:$V1,4:$V2,5:$V3,76:[1,1578]}),o($VK5,[2,1095],{219:1579,76:[1,1580]}),{2:$V1,3:1581,4:$V2,5:$V3,76:[1,1582]},{40:1583,79:75,89:$V7,184:99,189:$Vb},o($VJ5,[2,216],{3:1584,2:$V1,4:$V2,5:$V3,76:[1,1585]}),o($VJ5,[2,219],{3:1586,2:$V1,4:$V2,5:$V3,76:[1,1587]}),{77:[1,1588]},o($Vq5,[2,234]),{77:[1,1589]},o($Vq5,[2,230]),o($Vq5,[2,223]),{223:$Vp5},{223:$Vo5},o($Vq5,[2,225]),o($Vq5,[2,226]),{223:[1,1590]},o($Vq5,[2,228]),{223:[1,1591]},{223:[1,1592]},o($Vq5,[2,232]),o($Vq5,[2,233]),{78:[1,1593],205:1480,206:$Va5,208:$Vb5,215:1479,216:1357,221:1360,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($Vl4,[2,91]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1594,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,92]),o($Vs5,[2,264]),{244:[1,1595]},o($V65,[2,142],{419:190,3:733,114:736,144:758,158:768,160:769,117:1596,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),o($Vl4,[2,132]),{74:$Vx3,78:[1,1597]},o($VU4,[2,454],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,572]),o($VD3,[2,534]),o($VD3,[2,546],{366:1525,392:1598,154:$Vt5,187:$Vu5,230:$Vv5,297:$Vw5,343:$Vx5,356:$Vy5,368:$Vz5,369:$VA5,373:$VB5,374:$VC5}),o($Vw3,[2,548]),{370:[1,1599]},{370:[1,1600]},{2:$V1,3:244,4:$V2,5:$V3,199:1601},o($Vw3,[2,554],{77:[1,1602]}),{2:$V1,3:114,4:$V2,5:$V3,77:[1,1604],113:251,131:$VV,132:$VW,143:$VY,152:$V$,156:$VL,181:$V31,196:250,200:1605,201:254,257:252,258:253,265:$VD1,274:1603,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1},o($Vw3,[2,558]),{297:[1,1606]},o($Vw3,[2,560]),o($Vw3,[2,561]),{335:[1,1607]},{77:[1,1608]},{2:$V1,3:1609,4:$V2,5:$V3},{78:[1,1610],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1611],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1612],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1613],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,$VW4,{407:1614,76:$VX4}),o($VK,[2,591]),{74:$Vr5,78:[1,1615]},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1616,482:582,493:579,497:581},o($VD3,[2,735]),o($VK,[2,493],{352:1617,354:1618,355:1619,4:$VL5,243:$VM5,343:$VN5,356:$VO5}),o($VP5,$VQ5,{3:1268,359:1624,384:1625,360:1626,361:1627,2:$V1,4:$V2,5:$V3,367:$VR5}),{78:[2,507]},{76:[1,1629]},o($VK,[2,609]),o($VK,[2,1134]),{368:[1,1631],414:[1,1630]},o($VI4,[2,728]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1632,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,762]),o($VE5,[2,1182]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1633,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VE5,[2,1184]),{78:[1,1634]},{78:[1,1635],118:$VF5,278:1636},{78:[1,1637]},{119:[1,1638]},{119:[1,1639]},{78:[1,1640]},{78:[1,1641]},o($VL4,[2,476]),o($VI4,[2,464],{74:$VJ4}),{2:$V1,3:244,4:$V2,5:$V3,143:$VF1,145:$VG1,199:1643,431:1642},o($V75,[2,703]),o($V75,[2,705]),{146:[1,1644]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1645],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{339:$VS5,462:1646},{417:[1,1649],463:[1,1648]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1650,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VT5,[2,267],{87:1651,245:[1,1652],247:[1,1653]}),{119:[1,1654]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1655,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1661,4:$V2,5:$V3},{2:$V1,3:1662,4:$V2,5:$V3},o($Vn5,[2,207]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1663,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1664,111:1440},o($VJ5,[2,209]),{2:$V1,3:1665,4:$V2,5:$V3},o($VJ5,[2,1097],{220:1666,3:1667,2:$V1,4:$V2,5:$V3}),o($VK5,[2,1096]),o($VJ5,[2,212]),{2:$V1,3:1668,4:$V2,5:$V3},{78:[1,1669]},o($VJ5,[2,217]),{2:$V1,3:1670,4:$V2,5:$V3},o($VJ5,[2,220]),{2:$V1,3:1671,4:$V2,5:$V3},{40:1672,79:75,89:$V7,184:99,189:$Vb},{40:1673,79:75,89:$V7,184:99,189:$Vb},o($Vq5,[2,227]),o($Vq5,[2,229]),o($Vq5,[2,231]),o($Vf4,[2,171]),o($Vs5,[2,262]),o($Vs5,[2,265],{242:[1,1674]}),o($VQ4,[2,1084],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,141]),o($Vw3,[2,547]),o($Vw3,[2,550]),{374:[1,1675]},o($Vw3,[2,1127],{395:1676,393:1677,77:$VX5}),{131:$VV,196:1679},o($Vw3,[2,555]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1680,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vw3,[2,557]),o($Vw3,[2,559]),{2:$V1,3:114,4:$V2,5:$V3,77:[1,1682],113:251,131:$VV,132:$VW,143:$VY,152:$V$,156:$VL,181:$V31,196:250,200:255,201:254,257:252,258:253,265:$VD1,274:1681,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1683,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,578]),o($Vz2,[2,349]),o($Vz2,[2,350]),o($Vz2,[2,351]),o($Vz2,[2,352]),o($VK,[2,582]),o($VK,[2,592]),o($VD3,[2,734]),o($VK,[2,489]),o($VK,[2,494],{355:1684,4:$VL5,243:$VM5,343:$VN5,356:$VO5}),o($VY5,[2,496]),o($VY5,[2,497]),{124:[1,1685]},{124:[1,1686]},{124:[1,1687]},{74:[1,1688],78:[2,505]},o($V65,[2,533]),o($V65,[2,508]),{187:[1,1696],193:[1,1697],362:1689,363:1690,364:1691,365:1692,366:1693,368:$Vz5,369:[1,1694],370:[1,1698],373:[1,1695]},{2:$V1,3:1699,4:$V2,5:$V3},{40:1700,79:75,89:$V7,184:99,189:$Vb},{415:[1,1701]},{416:[1,1702]},o($VK,[2,761]),o($VK,[2,763]),o($Vx4,[2,537]),o($VB1,[2,331]),{78:[1,1703]},o($VB1,[2,332]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1704,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1705,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,317]),o($VB1,[2,319]),{2:$V1,3:1706,4:$V2,5:$V3},o($VK,[2,720],{77:[1,1707]}),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1708,336:1064,337:1066},{335:$VG5,338:$VH5,461:1709},o($V75,[2,707]),{77:[1,1711],343:[1,1712],344:[1,1710]},{170:[1,1714],309:[1,1713]},{170:[1,1716],309:[1,1715]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1717],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vh4,[2,250],{88:1718,162:[1,1719],168:[1,1721],169:[1,1720]}),{131:$VV,196:1722},{131:$VV,196:1723},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1724,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vm5,[2,248],{234:1725,74:$VZ5,239:[1,1727]}),o($V_5,[2,242]),{146:[1,1728]},{77:[1,1729]},{77:[1,1730]},o($V_5,[2,247],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{78:[2,1051],96:1731,99:[1,1733],102:1732},{99:[1,1734]},o($Vn5,[2,235],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($Vn5,[2,236],{74:$V35}),o($VJ5,[2,210]),o($VJ5,[2,211]),o($VJ5,[2,1098]),o($VJ5,[2,213]),{2:$V1,3:1735,4:$V2,5:$V3,76:[1,1736]},o($VJ5,[2,218]),o($VJ5,[2,221]),{78:[1,1737]},{78:[1,1738]},o($Vs5,[2,266]),{2:$V1,3:244,4:$V2,5:$V3,199:1739},o($Vw3,[2,552]),o($Vw3,[2,1128]),{2:$V1,3:1740,4:$V2,5:$V3},{74:[1,1741]},{78:[1,1742],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vw3,[2,562]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1743,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1744],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VY5,[2,495]),{2:$V1,3:1745,4:$V2,5:$V3},{131:$VV,196:1746},{2:$V1,3:1747,4:$V2,5:$V3},o($VP5,$VQ5,{361:1627,360:1748,367:$VR5}),o($VD3,[2,510]),o($VD3,[2,511]),o($VD3,[2,512]),o($VD3,[2,513]),o($VD3,[2,514]),{370:[1,1749]},{370:[1,1750]},o($V$5,[2,1121],{382:1751,370:[1,1752]}),{2:$V1,3:1753,4:$V2,5:$V3},{2:$V1,3:1754,4:$V2,5:$V3},o($VP5,[2,516]),o($VK,[2,1131],{411:1755,413:1756,72:$VD5}),o($VK,[2,610]),o($VK,[2,611],{367:[1,1757]}),o($VB1,[2,333]),o([78,118],[2,334],{74:$VZ5}),{74:$Vr5,78:[2,335]},o($VK,[2,719]),{2:$V1,3:1011,4:$V2,5:$V3,100:1758,111:1440},o($V75,[2,706],{74:$VT4}),o($V75,[2,704]),{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1759,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1760,111:1440},{344:[1,1761]},{339:$VS5,462:1762},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1763,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{339:$VS5,462:1764},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1765,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{339:$VS5,462:1766},o($Vh4,[2,72]),{40:1767,79:75,89:$V7,164:[1,1768],184:99,189:$Vb,240:[1,1769]},{40:1770,79:75,89:$V7,184:99,189:$Vb,240:[1,1771]},{40:1772,79:75,89:$V7,184:99,189:$Vb,240:[1,1773]},o($VT5,[2,270],{246:1774,247:[1,1775]}),{248:1776,249:[2,1099],766:[1,1777]},o($VI5,[2,260],{74:$Vr5}),o($Vm5,[2,241]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,235:1778,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1779,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1780]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1781,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1782,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1783]},{78:[2,1052]},{77:[1,1784]},{77:[1,1785]},o($VJ5,[2,214]),{2:$V1,3:1786,4:$V2,5:$V3},{2:$V1,3:1787,4:$V2,5:$V3,76:[1,1788]},{2:$V1,3:1789,4:$V2,5:$V3,76:[1,1790]},o($Vw3,[2,1125],{394:1791,393:1792,77:$VX5}),{78:[1,1793]},{131:$VV,196:1794},o($Vw3,[2,556]),{78:[1,1795],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vw3,[2,517]),o($VY5,[2,498]),o($VY5,[2,499]),o($VY5,[2,500]),o($V65,[2,509]),{2:$V1,3:1797,4:$V2,5:$V3,77:[2,1117],371:1796},{77:[1,1798]},{2:$V1,3:1800,4:$V2,5:$V3,77:[2,1123],383:1799},o($V$5,[2,1122]),{77:[1,1801]},{77:[1,1802]},o($VK,[2,608]),o($VK,[2,1132]),o($VP5,$VQ5,{361:1627,360:1803,367:$VR5}),{74:$V35,78:[1,1804]},o($V75,[2,713],{74:$VJ4}),{74:$V35,78:[1,1805]},o($V75,[2,715]),o($V75,[2,708]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1806],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($V75,[2,711]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1807],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($V75,[2,709]),o($Vh4,[2,251]),{40:1808,79:75,89:$V7,184:99,189:$Vb,240:[1,1809]},{40:1810,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,253]),{40:1811,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,254]),{40:1812,79:75,89:$V7,184:99,189:$Vb},o($VT5,[2,268]),{131:$VV,196:1813},{249:[1,1814]},{249:[2,1100]},o($V_5,[2,243]),o($Vm5,[2,249],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1815,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:$VZ5,78:[1,1816]},{74:$VZ5,78:[1,1817]},o($VN4,[2,1053],{97:1818,104:1819,3:1821,2:$V1,4:$V2,5:$V3,76:$V06}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1824,103:1822,105:1823,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1825,111:1440},o($VJ5,[2,215]),o($Vn5,[2,173]),{2:$V1,3:1826,4:$V2,5:$V3},o($Vn5,[2,175]),{2:$V1,3:1827,4:$V2,5:$V3},o($Vw3,[2,551]),o($Vw3,[2,1126]),o($Vw3,[2,549]),{78:[1,1828]},o($Vw3,[2,563]),{77:[1,1829]},{77:[2,1118]},{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1830},{77:[1,1833]},{77:[2,1124]},{2:$V1,3:1011,4:$V2,5:$V3,100:1834,111:1440},{2:$V1,3:1011,4:$V2,5:$V3,100:1835,111:1440},o($VK,[2,612]),o($VK,[2,721]),{343:[1,1837],344:[1,1836]},{339:$VS5,462:1838},{335:$VG5,338:$VH5,461:1839},o($Vh4,[2,252]),{40:1840,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,255]),o($Vh4,[2,257]),o($Vh4,[2,258]),o($VT5,[2,271]),{131:[2,1101],250:1841,645:[1,1842]},{74:$VZ5,78:[1,1843]},o($V_5,[2,245]),o($V_5,[2,246]),o($VN4,[2,74]),o($VN4,[2,1054]),{2:$V1,3:1844,4:$V2,5:$V3},o($VN4,[2,78]),{74:[1,1846],78:[1,1845]},o($V65,[2,80]),o($V65,[2,81],{114:625,327:637,76:[1,1847],99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{74:$V35,78:[1,1848]},o($Vn5,[2,174]),o($Vn5,[2,176]),o($Vw3,[2,553]),{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1849},{74:$V26,78:[1,1850]},o($V65,[2,528]),o($V65,[2,529]),{2:$V1,3:1011,4:$V2,5:$V3,100:1852,111:1440},{74:$V35,78:[1,1853]},{74:$V35,78:[1,1854]},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1855,419:190,420:$Vr1,424:$Vs1},{344:[1,1856]},o($V75,[2,710]),o($V75,[2,712]),o($Vh4,[2,256]),{131:$VV,196:1857},{131:[2,1102]},o($V_5,[2,244]),o($VN4,[2,77]),{78:[2,76]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1824,105:1858,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1859,4:$V2,5:$V3},{78:[1,1860]},{74:$V26,78:[1,1861]},{374:[1,1862]},{2:$V1,3:1863,4:$V2,5:$V3,132:[1,1864]},{74:$V35,78:[1,1865]},o($VD3,[2,526]),o($VD3,[2,527]),o($V75,[2,714],{74:$VJ4}),o($V75,[2,716]),o($V36,[2,1103],{251:1866,766:[1,1867]}),o($V65,[2,79]),o($V65,[2,82]),o($VN4,[2,1055],{3:1821,101:1868,104:1869,2:$V1,4:$V2,5:$V3,76:$V06}),o($VD3,[2,518]),{2:$V1,3:244,4:$V2,5:$V3,199:1870},o($V65,[2,530]),o($V65,[2,531]),o($VD3,[2,525]),o($VT5,[2,1105],{252:1871,415:[1,1872]}),o($V36,[2,1104]),o($VN4,[2,75]),o($VN4,[2,1056]),o($V46,[2,1119],{375:1873,377:1874,77:[1,1875]}),o($VT5,[2,269]),o($VT5,[2,1106]),o($VD3,[2,521],{376:1876,378:1877,230:[1,1878]}),o($V46,[2,1120]),{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1879},o($VD3,[2,519]),{230:[1,1881],379:1880},{338:[1,1882]},{74:$V26,78:[1,1883]},o($VD3,[2,522]),{335:[1,1884]},{380:[1,1885]},o($V46,[2,520]),{380:[1,1886]},{381:[1,1887]},{381:[1,1888]},{230:[2,523]},o($VD3,[2,524])],
-defaultActions: {105:[2,6],194:[2,336],195:[2,337],196:[2,338],197:[2,339],198:[2,340],199:[2,341],200:[2,342],201:[2,343],202:[2,344],209:[2,695],591:[2,1142],653:[2,1107],654:[2,1108],710:[2,696],780:[2,1073],781:[2,1074],926:[2,446],927:[2,447],928:[2,448],987:[2,697],1288:[2,1152],1375:[2,1060],1433:[2,1150],1541:[2,507],1732:[2,1052],1777:[2,1100],1797:[2,1118],1800:[2,1124],1842:[2,1102],1845:[2,76],1887:[2,523]},
-parseError: function parseError(str, hash) {
- if (hash.recoverable) {
- this.trace(str);
- } else {
- var error = new Error(str);
- error.hash = hash;
- throw error;
- }
-},
-parse: function parse(input) {
- var self = this,
- stack = [0],
- tstack = [], // token stack
- vstack = [null], // semantic value stack
- lstack = [], // location stack
- table = this.table,
- yytext = '',
- yylineno = 0,
- yyleng = 0,
- recovering = 0,
- TERROR = 2,
- EOF = 1;
-
- var args = lstack.slice.call(arguments, 1);
-
- //this.reductionCount = this.shiftCount = 0;
-
- var lexer = Object.create(this.lexer);
- var sharedState = { yy: {} };
- // copy state
- for (var k in this.yy) {
- if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
- sharedState.yy[k] = this.yy[k];
- }
- }
-
- lexer.setInput(input, sharedState.yy);
- sharedState.yy.lexer = lexer;
- sharedState.yy.parser = this;
- if (typeof lexer.yylloc == 'undefined') {
- lexer.yylloc = {};
- }
- var yyloc = lexer.yylloc;
- lstack.push(yyloc);
-
- var ranges = lexer.options && lexer.options.ranges;
-
- if (typeof sharedState.yy.parseError === 'function') {
- this.parseError = sharedState.yy.parseError;
- } else {
- this.parseError = Object.getPrototypeOf(this).parseError;
- }
-
- function popStack (n) {
- stack.length = stack.length - 2 * n;
- vstack.length = vstack.length - n;
- lstack.length = lstack.length - n;
- }
-
-_token_stack:
- var lex = function () {
- var token;
- token = lexer.lex() || EOF;
- // if token isn't its numeric value, convert
- if (typeof token !== 'number') {
- token = self.symbols_[token] || token;
- }
- return token;
- }
-
- var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
- while (true) {
- // retreive state number from top of stack
- state = stack[stack.length - 1];
-
- // use default actions if available
- if (this.defaultActions[state]) {
- action = this.defaultActions[state];
- } else {
- if (symbol === null || typeof symbol == 'undefined') {
- symbol = lex();
- }
- // read action for current state and first input
- action = table[state] && table[state][symbol];
- }
-
-_handle_error:
- // handle parse error
- if (typeof action === 'undefined' || !action.length || !action[0]) {
- var error_rule_depth;
- var errStr = '';
-
- // Return the rule stack depth where the nearest error rule can be found.
- // Return FALSE when no error recovery rule was found.
- function locateNearestErrorRecoveryRule(state) {
- var stack_probe = stack.length - 1;
- var depth = 0;
-
- // try to recover from error
- for(;;) {
- // check for error recovery rule in this state
- if ((TERROR.toString()) in table[state]) {
- return depth;
- }
- if (state === 0 || stack_probe < 2) {
- return false; // No suitable error recovery rule available.
- }
- stack_probe -= 2; // popStack(1): [symbol, action]
- state = stack[stack_probe];
- ++depth;
- }
- }
-
- if (!recovering) {
- // first see if there's any chance at hitting an error recovery rule:
- error_rule_depth = locateNearestErrorRecoveryRule(state);
-
- // Report error
- expected = [];
- for (p in table[state]) {
- if (this.terminals_[p] && p > TERROR) {
- expected.push("'"+this.terminals_[p]+"'");
- }
- }
- if (lexer.showPosition) {
- errStr = 'Parse error on line '+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + (this.terminals_[symbol] || symbol)+ "'";
- } else {
- errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
- (symbol == EOF ? "end of input" :
- ("'"+(this.terminals_[symbol] || symbol)+"'"));
- }
- this.parseError(errStr, {
- text: lexer.match,
- token: this.terminals_[symbol] || symbol,
- line: lexer.yylineno,
- loc: yyloc,
- expected: expected,
- recoverable: (error_rule_depth !== false)
- });
- } else if (preErrorSymbol !== EOF) {
- error_rule_depth = locateNearestErrorRecoveryRule(state);
- }
-
- // just recovered from another error
- if (recovering == 3) {
- if (symbol === EOF || preErrorSymbol === EOF) {
- throw new Error(errStr || 'Parsing halted while starting to recover from another error.');
- }
-
- // discard current lookahead and grab another
- yyleng = lexer.yyleng;
- yytext = lexer.yytext;
- yylineno = lexer.yylineno;
- yyloc = lexer.yylloc;
- symbol = lex();
- }
-
- // try to recover from error
- if (error_rule_depth === false) {
- throw new Error(errStr || 'Parsing halted. No suitable error recovery rule available.');
- }
- popStack(error_rule_depth);
-
- preErrorSymbol = (symbol == TERROR ? null : symbol); // save the lookahead token
- symbol = TERROR; // insert generic error symbol as new lookahead
- state = stack[stack.length-1];
- action = table[state] && table[state][TERROR];
- recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
- }
-
- // this shouldn't happen, unless resolve defaults are off
- if (action[0] instanceof Array && action.length > 1) {
- throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
- }
-
- switch (action[0]) {
- case 1: // shift
- //this.shiftCount++;
-
- stack.push(symbol);
- vstack.push(lexer.yytext);
- lstack.push(lexer.yylloc);
- stack.push(action[1]); // push state
- symbol = null;
- if (!preErrorSymbol) { // normal execution/no error
- yyleng = lexer.yyleng;
- yytext = lexer.yytext;
- yylineno = lexer.yylineno;
- yyloc = lexer.yylloc;
- if (recovering > 0) {
- recovering--;
- }
- } else {
- // error just occurred, resume old lookahead f/ before error
- symbol = preErrorSymbol;
- preErrorSymbol = null;
- }
- break;
-
- case 2:
- // reduce
- //this.reductionCount++;
-
- len = this.productions_[action[1]][1];
-
- // perform semantic action
- yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
- // default location, uses first token for firsts, last for lasts
- yyval._$ = {
- first_line: lstack[lstack.length-(len||1)].first_line,
- last_line: lstack[lstack.length-1].last_line,
- first_column: lstack[lstack.length-(len||1)].first_column,
- last_column: lstack[lstack.length-1].last_column
- };
- if (ranges) {
- yyval._$.range = [lstack[lstack.length-(len||1)].range[0], lstack[lstack.length-1].range[1]];
- }
- r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
-
- if (typeof r !== 'undefined') {
- return r;
- }
-
- // pop off stack
- if (len) {
- stack = stack.slice(0,-1*len*2);
- vstack = vstack.slice(0, -1*len);
- lstack = lstack.slice(0, -1*len);
- }
-
- stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)
- vstack.push(yyval.$);
- lstack.push(yyval._$);
- // goto new state = table[STATE][NONTERMINAL]
- newState = table[stack[stack.length-2]][stack[stack.length-1]];
- stack.push(newState);
- break;
-
- case 3:
- // accept
- return true;
- }
-
- }
-
- return true;
-}};
-
-// from https://www.postgresql.org/docs/current/static/sql-keywords-appendix.html
-// JSON.stringify([].slice.call(document.querySelectorAll('tr')).filter(x => x.children.length == 5 && x.children[2].innerText == 'reserved').map(x => x.children[0].innerText))
-
-var nonReserved = ["A","ABSENT","ABSOLUTE","ACCORDING","ACTION","ADA","ADD","ADMIN","AFTER","ALWAYS","ASC","ASSERTION","ASSIGNMENT","ATTRIBUTE","ATTRIBUTES","BASE64","BEFORE","BERNOULLI","BLOCKED","BOM","BREADTH","C","CASCADE","CATALOG","CATALOG_NAME","CHAIN","CHARACTERISTICS","CHARACTERS","CHARACTER_SET_CATALOG","CHARACTER_SET_NAME","CHARACTER_SET_SCHEMA","CLASS_ORIGIN","COBOL","COLLATION","COLLATION_CATALOG","COLLATION_NAME","COLLATION_SCHEMA","COLUMNS","COLUMN_NAME","COMMAND_FUNCTION","COMMAND_FUNCTION_CODE","COMMITTED","CONDITION_NUMBER","CONNECTION","CONNECTION_NAME","CONSTRAINTS","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONSTRUCTOR","CONTENT","CONTINUE","CONTROL","CURSOR_NAME","DATA","DATETIME_INTERVAL_CODE","DATETIME_INTERVAL_PRECISION","DB","DEFAULTS","DEFERRABLE","DEFERRED","DEFINED","DEFINER","DEGREE","DEPTH","DERIVED","DESC","DESCRIPTOR","DIAGNOSTICS","DISPATCH","DOCUMENT","DOMAIN","DYNAMIC_FUNCTION","DYNAMIC_FUNCTION_CODE","EMPTY","ENCODING","ENFORCED","EXCLUDE","EXCLUDING","EXPRESSION","FILE","FINAL","FIRST","FLAG","FOLLOWING","FORTRAN","FOUND","FS","G","GENERAL","GENERATED","GO","GOTO","GRANTED","HEX","HIERARCHY","ID","IGNORE","IMMEDIATE","IMMEDIATELY","IMPLEMENTATION","INCLUDING","INCREMENT","INDENT","INITIALLY","INPUT","INSTANCE","INSTANTIABLE","INSTEAD","INTEGRITY","INVOKER","ISOLATION","K","KEY","KEY_MEMBER","KEY_TYPE","LAST","LENGTH","LEVEL","LIBRARY","LIMIT","LINK","LOCATION","LOCATOR","M","MAP","MAPPING","MATCHED","MAXVALUE","MESSAGE_LENGTH","MESSAGE_OCTET_LENGTH","MESSAGE_TEXT","MINVALUE","MORE","MUMPS","NAME","NAMES","NAMESPACE","NESTING","NEXT","NFC","NFD","NFKC","NFKD","NIL","NORMALIZED","NULLABLE","NULLS","NUMBER","OBJECT","OCTETS","OFF","OPTION","OPTIONS","ORDERING","ORDINALITY","OTHERS","OUTPUT","OVERRIDING","P","PAD","PARAMETER_MODE","PARAMETER_NAME","PARAMETER_ORDINAL_POSITION","PARAMETER_SPECIFIC_CATALOG","PARAMETER_SPECIFIC_NAME","PARAMETER_SPECIFIC_SCHEMA","PARTIAL","PASCAL","PASSING","PASSTHROUGH","PATH","PERMISSION","PLACING","PLI","PRECEDING","PRESERVE","PRIOR","PRIVILEGES","PUBLIC","READ","RECOVERY","RELATIVE","REPEATABLE","REQUIRING","RESPECT","RESTART","RESTORE","RESTRICT","RETURNED_CARDINALITY","RETURNED_LENGTH","RETURNED_OCTET_LENGTH","RETURNED_SQLSTATE","RETURNING","ROLE","ROUTINE","ROUTINE_CATALOG","ROUTINE_NAME","ROUTINE_SCHEMA","ROW_COUNT","SCALE","SCHEMA","SCHEMA_NAME","SCOPE_CATALOG","SCOPE_NAME","SCOPE_SCHEMA","SECTION","SECURITY","SELECTIVE","SELF","SEQUENCE","SERIALIZABLE","SERVER","SERVER_NAME","SESSION","SETS","SIMPLE","SIZE","SOURCE","SPACE","SPECIFIC_NAME","STANDALONE","STATE","STATEMENT","STRIP","STRUCTURE","STYLE","SUBCLASS_ORIGIN","T","TABLE_NAME","TEMPORARY","TIES","TOKEN","TOP_LEVEL_COUNT","TRANSACTION","TRANSACTIONS_COMMITTED","TRANSACTIONS_ROLLED_BACK","TRANSACTION_ACTIVE","TRANSFORM","TRANSFORMS","TRIGGER_CATALOG","TRIGGER_NAME","TRIGGER_SCHEMA","TYPE","UNBOUNDED","UNCOMMITTED","UNDER","UNLINK","UNNAMED","UNTYPED","URI","USAGE","USER_DEFINED_TYPE_CATALOG","USER_DEFINED_TYPE_CODE","USER_DEFINED_TYPE_NAME","USER_DEFINED_TYPE_SCHEMA","VALID","VERSION","VIEW","WHITESPACE","WORK","WRAPPER","WRITE","XMLDECLARATION","XMLSCHEMA","YES","ZONE"]
-
-parser.parseError = function(str, hash) {
- if (hash.expected && hash.expected.indexOf("'LITERAL'") > -1 && /[a-zA-Z_][a-zA-Z_0-9]*/.test(hash.token) && nonReserved.indexOf(hash.token) > -1) {
- return
- }
- throw new SyntaxError(str)
-}
-/* generated by jison-lex 0.3.4 */
-var lexer = (function(){
-var lexer = ({
-
-EOF:1,
-
-parseError:function parseError(str, hash) {
- if (this.yy.parser) {
- this.yy.parser.parseError(str, hash);
- } else {
- throw new Error(str);
- }
- },
-
-// resets the lexer, sets new input
-setInput:function (input, yy) {
- this.yy = yy || this.yy || {};
- this._input = input;
- this._more = this._backtrack = this.done = false;
- this.yylineno = this.yyleng = 0;
- this.yytext = this.matched = this.match = '';
- this.conditionStack = ['INITIAL'];
- this.yylloc = {
- first_line: 1,
- first_column: 0,
- last_line: 1,
- last_column: 0
- };
- if (this.options.ranges) {
- this.yylloc.range = [0,0];
- }
- this.offset = 0;
- return this;
- },
-
-// consumes and returns one char from the input
-input:function () {
- var ch = this._input[0];
- this.yytext += ch;
- this.yyleng++;
- this.offset++;
- this.match += ch;
- this.matched += ch;
- var lines = ch.match(/(?:\r\n?|\n).*/g);
- if (lines) {
- this.yylineno++;
- this.yylloc.last_line++;
- } else {
- this.yylloc.last_column++;
- }
- if (this.options.ranges) {
- this.yylloc.range[1]++;
- }
-
- this._input = this._input.slice(1);
- return ch;
- },
-
-// unshifts one char (or a string) into the input
-unput:function (ch) {
- var len = ch.length;
- var lines = ch.split(/(?:\r\n?|\n)/g);
-
- this._input = ch + this._input;
- this.yytext = this.yytext.substr(0, this.yytext.length - len);
- //this.yyleng -= len;
- this.offset -= len;
- var oldLines = this.match.split(/(?:\r\n?|\n)/g);
- this.match = this.match.substr(0, this.match.length - 1);
- this.matched = this.matched.substr(0, this.matched.length - 1);
-
- if (lines.length - 1) {
- this.yylineno -= lines.length - 1;
- }
- var r = this.yylloc.range;
-
- this.yylloc = {
- first_line: this.yylloc.first_line,
- last_line: this.yylineno + 1,
- first_column: this.yylloc.first_column,
- last_column: lines ?
- (lines.length === oldLines.length ? this.yylloc.first_column : 0)
- + oldLines[oldLines.length - lines.length].length - lines[0].length :
- this.yylloc.first_column - len
- };
-
- if (this.options.ranges) {
- this.yylloc.range = [r[0], r[0] + this.yyleng - len];
- }
- this.yyleng = this.yytext.length;
- return this;
- },
-
-// When called from action, caches matched text and appends it on next action
-more:function () {
- this._more = true;
- return this;
- },
-
-// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
-reject:function () {
- if (this.options.backtrack_lexer) {
- this._backtrack = true;
- } else {
- return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
- text: "",
- token: null,
- line: this.yylineno
- });
-
- }
- return this;
- },
-
-// retain first n characters of the match
-less:function (n) {
- this.unput(this.match.slice(n));
- },
-
-// displays already matched input, i.e. for error messages
-pastInput:function () {
- var past = this.matched.substr(0, this.matched.length - this.match.length);
- return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
- },
-
-// displays upcoming input, i.e. for error messages
-upcomingInput:function () {
- var next = this.match;
- if (next.length < 20) {
- next += this._input.substr(0, 20-next.length);
- }
- return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
- },
-
-// displays the character position where the lexing error occurred, i.e. for error messages
-showPosition:function () {
- var pre = this.pastInput();
- var c = new Array(pre.length + 1).join("-");
- return pre + this.upcomingInput() + "\n" + c + "^";
- },
-
-// test the lexed token: return FALSE when not a match, otherwise return token
-test_match:function (match, indexed_rule) {
- var token,
- lines,
- backup;
-
- if (this.options.backtrack_lexer) {
- // save context
- backup = {
- yylineno: this.yylineno,
- yylloc: {
- first_line: this.yylloc.first_line,
- last_line: this.last_line,
- first_column: this.yylloc.first_column,
- last_column: this.yylloc.last_column
- },
- yytext: this.yytext,
- match: this.match,
- matches: this.matches,
- matched: this.matched,
- yyleng: this.yyleng,
- offset: this.offset,
- _more: this._more,
- _input: this._input,
- yy: this.yy,
- conditionStack: this.conditionStack.slice(0),
- done: this.done
- };
- if (this.options.ranges) {
- backup.yylloc.range = this.yylloc.range.slice(0);
- }
- }
-
- lines = match[0].match(/(?:\r\n?|\n).*/g);
- if (lines) {
- this.yylineno += lines.length;
- }
- this.yylloc = {
- first_line: this.yylloc.last_line,
- last_line: this.yylineno + 1,
- first_column: this.yylloc.last_column,
- last_column: lines ?
- lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
- this.yylloc.last_column + match[0].length
- };
- this.yytext += match[0];
- this.match += match[0];
- this.matches = match;
- this.yyleng = this.yytext.length;
- if (this.options.ranges) {
- this.yylloc.range = [this.offset, this.offset += this.yyleng];
- }
- this._more = false;
- this._backtrack = false;
- this._input = this._input.slice(match[0].length);
- this.matched += match[0];
- token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
- if (this.done && this._input) {
- this.done = false;
- }
- if (token) {
- return token;
- } else if (this._backtrack) {
- // recover context
- for (var k in backup) {
- this[k] = backup[k];
- }
- return false; // rule action called reject() implying the next rule should be tested instead.
- }
- return false;
- },
-
-// return next match in input
-next:function () {
- if (this.done) {
- return this.EOF;
- }
- if (!this._input) {
- this.done = true;
- }
-
- var token,
- match,
- tempMatch,
- index;
- if (!this._more) {
- this.yytext = '';
- this.match = '';
- }
- var rules = this._currentRules();
- for (var i = 0; i < rules.length; i++) {
- tempMatch = this._input.match(this.rules[rules[i]]);
- if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
- match = tempMatch;
- index = i;
- if (this.options.backtrack_lexer) {
- token = this.test_match(tempMatch, rules[i]);
- if (token !== false) {
- return token;
- } else if (this._backtrack) {
- match = false;
- continue; // rule action called reject() implying a rule MISmatch.
- } else {
- // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
- return false;
- }
- } else if (!this.options.flex) {
- break;
- }
- }
- }
- if (match) {
- token = this.test_match(match, rules[index]);
- if (token !== false) {
- return token;
- }
- // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
- return false;
- }
- if (this._input === "") {
- return this.EOF;
- } else {
- return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
- text: "",
- token: null,
- line: this.yylineno
- });
- }
- },
-
-// return next match that has a token
-lex:function lex() {
- var r = this.next();
- if (r) {
- return r;
- } else {
- return this.lex();
- }
- },
-
-// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
-begin:function begin(condition) {
- this.conditionStack.push(condition);
- },
-
-// pop the previously active lexer condition state off the condition stack
-popState:function popState() {
- var n = this.conditionStack.length - 1;
- if (n > 0) {
- return this.conditionStack.pop();
- } else {
- return this.conditionStack[0];
- }
- },
-
-// produce the lexer rule set which is active for the currently active lexer condition state
-_currentRules:function _currentRules() {
- if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
- return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
- } else {
- return this.conditions["INITIAL"].rules;
- }
- },
-
-// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
-topState:function topState(n) {
- n = this.conditionStack.length - 1 - Math.abs(n || 0);
- if (n >= 0) {
- return this.conditionStack[n];
- } else {
- return "INITIAL";
- }
- },
-
-// alias for begin(condition)
-pushState:function pushState(condition) {
- this.begin(condition);
- },
-
-// return the number of states currently on the stack
-stateStackSize:function stateStackSize() {
- return this.conditionStack.length;
- },
-options: {"case-insensitive":true},
-performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
-var YYSTATE=YY_START;
-switch($avoiding_name_collisions) {
-case 0:return 266
-break;
-case 1:return 302
-break;
-case 2:return 420
-break;
-case 3:return 299
-break;
-case 4:return 5
-break;
-case 5:return 5
-break;
-case 6:return 296
-break;
-case 7:return 296
-break;
-case 8:return 132
-break;
-case 9:return 132
-break;
-case 10:return /* its a COMMENT */
-break;
-case 11:/* skip whitespace */
-break;
-case 12:return 316
-break;
-case 13:return 319
-break;
-case 14:yy_.yytext = 'VALUE';return 89
-break;
-case 15:yy_.yytext = 'VALUE';return 189
-break;
-case 16:yy_.yytext = 'ROW';return 189
-break;
-case 17:yy_.yytext = 'COLUMN';return 189
-break;
-case 18:yy_.yytext = 'MATRIX';return 189
-break;
-case 19:yy_.yytext = 'INDEX';return 189
-break;
-case 20:yy_.yytext = 'RECORDSET';return 189
-break;
-case 21:yy_.yytext = 'TEXT';return 189
-break;
-case 22:yy_.yytext = 'SELECT';return 189
-break;
-case 23:return 520
-break;
-case 24:return 381
-break;
-case 25:return 402
-break;
-case 26:return 515
-break;
-case 27:return 287
-break;
-case 28:return 269
-break;
-case 29:return 269
-break;
-case 30:return 164
-break;
-case 31:return 400
-break;
-case 32:return 170
-break;
-case 33:return 229
-break;
-case 34:return 166
-break;
-case 35:return 207
-break;
-case 36:return 288
-break;
-case 37:return 76
-break;
-case 38:return 418
-break;
-case 39:return 242
-break;
-case 40:return 404
-break;
-case 41:return 356
-break;
-case 42:return 284
-break;
-case 43:return 514
-break;
-case 44:return 437
-break;
-case 45:return 330
-break;
-case 46:return 441
-break;
-case 47:return 331
-break;
-case 48:return 315
-break;
-case 49:return 119
-break;
-case 50:return 112
-break;
-case 51:return 315
-break;
-case 52:return 112
-break;
-case 53:return 315
-break;
-case 54:return 112
-break;
-case 55:return 315
-break;
-case 56:return 508
-break;
-case 57:return 303
-break;
-case 58:return 271
-break;
-case 59:return 368
-break;
-case 60:return 130
-break;
-case 61:return 'CLOSE'
-break;
-case 62:return 243
-break;
-case 63:return 190
-break;
-case 64:return 190
-break;
-case 65:return 434
-break;
-case 66:return 367
-break;
-case 67:return 470
-break;
-case 68:return 440
-break;
-case 69:return 273
-break;
-case 70:return 240
-break;
-case 71:return 281
-break;
-case 72:return 267
-break;
-case 73:return 206
-break;
-case 74:return 238
-break;
-case 75:return 265
-break;
-case 76:return 'CURSOR'
-break;
-case 77:return 405
-break;
-case 78:return 291
-break;
-case 79:return 292
-break;
-case 80:return 448
-break;
-case 81:return 343
-break;
-case 82:return 338
-break;
-case 83:return 'DELETED'
-break;
-case 84:return 242
-break;
-case 85:return 406
-break;
-case 86:return 185
-break;
-case 87:return 396
-break;
-case 88:return 447
-break;
-case 89:return 135
-break;
-case 90:return 306
-break;
-case 91:return 389
-break;
-case 92:return 310
-break;
-case 93:return 314
-break;
-case 94:return 169
-break;
-case 95:return 508
-break;
-case 96:return 508
-break;
-case 97:return 298
-break;
-case 98:return 14
-break;
-case 99:return 295
-break;
-case 100:return 249
-break;
-case 101:return 285
-break;
-case 102:return 95
-break;
-case 103:return 373
-break;
-case 104:return 183
-break;
-case 105:return 227
-break;
-case 106:return 268
-break;
-case 107:return 313
-break;
-case 108:return 602
-break;
-case 109:return 472
-break;
-case 110:return 232
-break;
-case 111:return 236
-break;
-case 112:return 239
-break;
-case 113:return 156
-break;
-case 114:return 356
-break;
-case 115:return 332
-break;
-case 116:return 99
-break;
-case 117:return 193
-break;
-case 118:return 212
-break;
-case 119:return 224
-break;
-case 120:return 516
-break;
-case 121:return 339
-break;
-case 122:return 213
-break;
-case 123:return 168
-break;
-case 124:return 293
-break;
-case 125:return 198
-break;
-case 126:return 223
-break;
-case 127:return 370
-break;
-case 128:return 286
-break;
-case 129:return 'LET'
-break;
-case 130:return 225
-break;
-case 131:return 112
-break;
-case 132:return 245
-break;
-case 133:return 460
-break;
-case 134:return 191
-break;
-case 135:return 283
-break;
-case 136:return 390
-break;
-case 137:return 282
-break;
-case 138:return 452
-break;
-case 139:return 169
-break;
-case 140:return 403
-break;
-case 141:return 222
-break;
-case 142:return 645
-break;
-case 143:return 270
-break;
-case 144:return 244
-break;
-case 145:return 380
-break;
-case 146:return 154
-break;
-case 147:return 297
-break;
-case 148:return 433
-break;
-case 149:return 230
-break;
-case 150:return 415
-break;
-case 151:return 129
-break;
-case 152:return 247
-break;
-case 153:return 'OPEN'
-break;
-case 154:return 416
-break;
-case 155:return 171
-break;
-case 156:return 118
-break;
-case 157:return 208
-break;
-case 158:return 276
-break;
-case 159:return 172
-break;
-case 160:return 279
-break;
-case 161:return 765
-break;
-case 162:return 93
-break;
-case 163:return 16
-break;
-case 164:return 369
-break;
-case 165:return 442
-break;
-case 166:return 678
-break;
-case 167:return 15
-break;
-case 168:return 414
-break;
-case 169:return 194
-break;
-case 170:return 'REDUCE'
-break;
-case 171:return 374
-break;
-case 172:return 311
-break;
-case 173:return 517
-break;
-case 174:return 682
-break;
-case 175:return 107
-break;
-case 176:return 401
-break;
-case 177:return 175
-break;
-case 178:return 290
-break;
-case 179:return 443
-break;
-case 180:return 687
-break;
-case 181:return 173
-break;
-case 182:return 173
-break;
-case 183:return 226
-break;
-case 184:return 436
-break;
-case 185:return 237
-break;
-case 186:return 150
-break;
-case 187:return 766
-break;
-case 188:return 405
-break;
-case 189:return 89
-break;
-case 190:return 228
-break;
-case 191:return 146
-break;
-case 192:return 146
-break;
-case 193:return 409
-break;
-case 194:return 334
-break;
-case 195:return 417
-break;
-case 196:return 'STRATEGY'
-break;
-case 197:return 'STORE'
-break;
-case 198:return 280
-break;
-case 199:return 353
-break;
-case 200:return 353
-break;
-case 201:return 463
-break;
-case 202:return 357
-break;
-case 203:return 357
-break;
-case 204:return 192
-break;
-case 205:return 309
-break;
-case 206:return 'TIMEOUT'
-break;
-case 207:return 148
-break;
-case 208:return 195
-break;
-case 209:return 435
-break;
-case 210:return 435
-break;
-case 211:return 509
-break;
-case 212:return 294
-break;
-case 213:return 451
-break;
-case 214:return 162
-break;
-case 215:return 187
-break;
-case 216:return 98
-break;
-case 217:return 335
-break;
-case 218:return 408
-break;
-case 219:return 231
-break;
-case 220:return 149
-break;
-case 221:return 344
-break;
-case 222:return 134
-break;
-case 223:return 410
-break;
-case 224:return 308
-break;
-case 225:return 128
-break;
-case 226:return 439
-break;
-case 227:return 72
-break;
-case 228:return 435 /* Is this keyword required? */
-break;
-case 229:return 131
-break;
-case 230:return 131
-break;
-case 231:return 115
-break;
-case 232:return 137
-break;
-case 233:return 179
-break;
-case 234:return 317
-break;
-case 235:return 180
-break;
-case 236:return 133
-break;
-case 237:return 138
-break;
-case 238:return 326
-break;
-case 239:return 323
-break;
-case 240:return 325
-break;
-case 241:return 322
-break;
-case 242:return 320
-break;
-case 243:return 318
-break;
-case 244:return 319
-break;
-case 245:return 142
-break;
-case 246:return 141
-break;
-case 247:return 139
-break;
-case 248:return 321
-break;
-case 249:return 324
-break;
-case 250:return 140
-break;
-case 251:return 124
-break;
-case 252:return 324
-break;
-case 253:return 77
-break;
-case 254:return 78
-break;
-case 255:return 145
-break;
-case 256:return 424
-break;
-case 257:return 426
-break;
-case 258:return 300
-break;
-case 259:return 505
-break;
-case 260:return 507
-break;
-case 261:return 122
-break;
-case 262:return 116
-break;
-case 263:return 74
-break;
-case 264:return 333
-break;
-case 265:return 152
-break;
-case 266:return 764
-break;
-case 267:return 143
-break;
-case 268:return 181
-break;
-case 269:return 136
-break;
-case 270:return 123
-break;
-case 271:return 312
-break;
-case 272:return 4
-break;
-case 273:return 10
-break;
-case 274:return 'INVALID'
-break;
-}
-},
-rules: [/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:ARRAY\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:\|)/i,/^(?:VALUE\s+OF\s+SEARCH\b)/i,/^(?:VALUE\s+OF\s+SELECT\b)/i,/^(?:ROW\s+OF\s+SELECT\b)/i,/^(?:COLUMN\s+OF\s+SELECT\b)/i,/^(?:MATRIX\s+OF\s+SELECT\b)/i,/^(?:INDEX\s+OF\s+SELECT\b)/i,/^(?:RECORDSET\s+OF\s+SELECT\b)/i,/^(?:TEXT\s+OF\s+SELECT\b)/i,/^(?:SELECT\b)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AFTER\b)/i,/^(?:AGGR\b)/i,/^(?:AGGREGATE\b)/i,/^(?:AGGREGATOR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTO(_)?INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEFORE\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:~~\*)/i,/^(?:!~~\*)/i,/^(?:~~)/i,/^(?:!~~)/i,/^(?:ILIKE\b)/i,/^(?:NOT\s+ILIKE\b)/i,/^(?:CALL\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHECK\b)/i,/^(?:CLASS\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTENT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:CORRESPONDING\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE(S)?)/i,/^(?:DATEADD\b)/i,/^(?:DATEDIFF\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:ECHO\b)/i,/^(?:EDGE\b)/i,/^(?:END\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:ESCAPE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXEC\b)/i,/^(?:EXECUTE\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOR\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:FULL\b)/i,/^(?:FUNCTION\b)/i,/^(?:GLOB\b)/i,/^(?:GO\b)/i,/^(?:GRAPH\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INDEXED\b)/i,/^(?:INNER\b)/i,/^(?:INSTEAD\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTERVAL\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LET\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX(\s+)?(?=\())/i,/^(?:MAX(\s+)?(?=(,|\))))/i,/^(?:MIN(\s+)?(?=\())/i,/^(?:MERGE\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:ONLY\b)/i,/^(?:OF\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OPTION\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PATH\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PIVOT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:READ\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:REGEXP\b)/i,/^(?:REINDEX\b)/i,/^(?:RELATIVE\b)/i,/^(?:REMOVE\b)/i,/^(?:RENAME\b)/i,/^(?:REPEAT\b)/i,/^(?:REPLACE\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RETURN\b)/i,/^(?:RETURNS\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:ROWS\b)/i,/^(?:SCHEMA(S)?)/i,/^(?:SEARCH\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:SOURCE\b)/i,/^(?:STRATEGY\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TEMP\b)/i,/^(?:TEMPORARY\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:THEN\b)/i,/^(?:TIMEOUT\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRIGGER\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UNPIVOT\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE\b)/i,/^(?:VALUES\b)/i,/^(?:VERTEX\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:#)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:&)/i,/^(?:\|)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?::-)/i,/^(?:\?-)/i,/^(?:\.\.)/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:!)/i,/^(?:\^)/i,/^(?:~)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],
-conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274],"inclusive":true}}
-});
-return lexer;
-})();
-parser.lexer = lexer;
-function Parser () {
- this.yy = {};
-}
-Parser.prototype = parser;parser.Parser = Parser;
-return new Parser;
-})();
-
-if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
-exports.parser = alasqlparser;
-exports.Parser = alasqlparser.Parser;
-exports.parse = function () { return alasqlparser.parse.apply(alasqlparser, arguments); };
-exports.main = function commonjsMain(args) {
- if (!args[1]) {
- console.log('Usage: '+args[0]+' FILE');
- process.exit(1);
- }
- var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8");
- return exports.parser.parse(source);
-};
-if (typeof module !== 'undefined' && require.main === module) {
- exports.main(process.argv.slice(1));
-}
+//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+/*
+@module alasql
+@version 0.4.11-develop-977878caundefined
+
+AlaSQL - JavaScript SQL database
+© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
+
+@license
+The MIT License (MIT)
+
+Copyright 2014-2016 Andrey Gershun (agershun@gmail.com) & Mathias Rangel Wulff (m@rawu.dk)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+/* eslint-disable */
+
+"use strict";
+
+/**
+ @fileoverview AlaSQL JavaScript SQL library
+ @see http://github.com/agershun/alasql
+*/
+
+/**
+ Callback from statement
+ @callback statement-callback
+ @param {object} data Result data
+*/
+
+/**
+ UMD envelope for AlaSQL
+*/
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([], factory);
+ } else if (typeof exports === 'object') {
+ /** alasql main function */
+ module.exports = factory();
+ } else {
+ root.alasql = factory();
+ }
+}(this, function () {
+
+/**
+ AlaSQL - Main Alasql class
+ @function
+ @param {string|function|object} sql - SQL-statement or data object for fuent interface
+ @param {object} params - SQL parameters
+ @param {function} cb - callback function
+ @param {object} scope - Scope for nested queries
+ @return {any} - Result data object
+
+ @example
+ Standard sync call:
+ alasql('CREATE TABLE one');
+ Query:
+ var res = alasql('SELECT * FROM one');
+ Call with parameters:
+ var res = alasql('SELECT * FROM ?',[data]);
+ Standard async call with callback function:
+ alasql('SELECT * FROM ?',[data],function(res){
+ console.log(data);
+ });
+ Call with scope for subquery (to pass common values):
+ var scope = {one:{a:2,b;20}}
+ alasql('SELECT * FROM ? two WHERE two.a = one.a',[data],null,scope);
+ Call for fluent interface with data object:
+ alasql(data).Where(function(x){return x.a == 10}).exec();
+ Call for fluent interface without data object:
+ alasql().From(data).Where(function(x){return x.a == 10}).exec();
+ */
+
+var alasql = function(sql, params, cb, scope) {
+
+ params = params||[];
+
+ if(typeof importScripts !== 'function' && alasql.webworker) {
+ var id = alasql.lastid++;
+ alasql.buffer[id] = cb;
+ alasql.webworker.postMessage({id:id,sql:sql,params:params});
+ return;
+ }
+
+ if(arguments.length === 0) {
+ // Without arguments - Fluent interface
+ return new yy.Select({
+ columns:[new yy.Column({columnid:'*'})],
+ from: [new yy.ParamValue({param:0})]
+ });
+ } else if(arguments.length === 1){
+ // Access promise notation without using `.promise(...)`
+ if(sql.constructor === Array){
+ return alasql.promise(sql);
+ }
+ }
+ // Avoid setting params if not needed even with callback
+ if(typeof params === 'function'){
+ scope = cb;
+ cb = params;
+ params = [];
+ }
+
+ if(typeof params !== 'object'){
+ params = [params];
+ }
+
+ // Standard interface
+ // alasql('#sql');
+ if(typeof sql === 'string' && sql[0]==='#' && typeof document === "object") {
+ sql = document.querySelector(sql).textContent;
+ } else if(typeof sql === 'object' && sql instanceof HTMLElement) {
+ sql = sql.textContent;
+ } else if(typeof sql === 'function') {
+ // to run multiline functions
+ sql = sql.toString();
+ sql = (/\/\*([\S\s]+)\*\//m.exec(sql) || ['','Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function.'])[1];
+ }
+ // Run SQL
+ return alasql.exec(sql, params, cb, scope);
+};
+
+/**
+ Current version of alasql
+ @constant {string}
+*/
+alasql.version = '0.4.11-develop-977878caundefined';
+
+/**
+ Debug flag
+ @type {boolean}
+*/
+alasql.debug = undefined; // Initial debug variable
+
+/*only-for-browser/*
+var require = function(){return null}; // as alasqlparser.js is generated, we can not "remove" referenses to
+var __dirname = '';
+//*/
+
+/* parser generated by jison 0.4.18 */
+/*
+ Returns a Parser object of the following structure:
+
+ Parser: {
+ yy: {}
+ }
+
+ Parser.prototype: {
+ yy: {},
+ trace: function(),
+ symbols_: {associative list: name ==> number},
+ terminals_: {associative list: number ==> name},
+ productions_: [...],
+ performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+ table: [...],
+ defaultActions: {...},
+ parseError: function(str, hash),
+ parse: function(input),
+
+ lexer: {
+ EOF: 1,
+ parseError: function(str, hash),
+ setInput: function(input),
+ input: function(),
+ unput: function(str),
+ more: function(),
+ less: function(n),
+ pastInput: function(),
+ upcomingInput: function(),
+ showPosition: function(),
+ test_match: function(regex_match_array, rule_index),
+ next: function(),
+ lex: function(),
+ begin: function(condition),
+ popState: function(),
+ _currentRules: function(),
+ topState: function(),
+ pushState: function(condition),
+
+ options: {
+ ranges: boolean (optional: true ==> token location info will include a .range[] member)
+ flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+ backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+ },
+
+ performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+ rules: [...],
+ conditions: {associative list: name ==> set},
+ }
+ }
+
+ token location info (@$, _$, etc.): {
+ first_line: n,
+ last_line: n,
+ first_column: n,
+ last_column: n,
+ range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
+ }
+
+ the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+ text: (matched text)
+ token: (the produced terminal token, if any)
+ line: (yylineno)
+ }
+ while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+ loc: (yylloc)
+ expected: (string describing the set of expected tokens)
+ recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+ }
+*/
+var alasqlparser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,13],$V1=[1,104],$V2=[1,102],$V3=[1,103],$V4=[1,6],$V5=[1,42],$V6=[1,79],$V7=[1,76],$V8=[1,94],$V9=[1,93],$Va=[1,69],$Vb=[1,101],$Vc=[1,85],$Vd=[1,64],$Ve=[1,71],$Vf=[1,84],$Vg=[1,66],$Vh=[1,70],$Vi=[1,68],$Vj=[1,61],$Vk=[1,74],$Vl=[1,62],$Vm=[1,67],$Vn=[1,83],$Vo=[1,77],$Vp=[1,86],$Vq=[1,87],$Vr=[1,81],$Vs=[1,82],$Vt=[1,80],$Vu=[1,88],$Vv=[1,89],$Vw=[1,90],$Vx=[1,91],$Vy=[1,92],$Vz=[1,98],$VA=[1,65],$VB=[1,78],$VC=[1,72],$VD=[1,96],$VE=[1,97],$VF=[1,63],$VG=[1,73],$VH=[1,108],$VI=[1,107],$VJ=[10,306,602,764],$VK=[10,306,310,602,764],$VL=[1,115],$VM=[1,116],$VN=[1,117],$VO=[1,118],$VP=[1,119],$VQ=[130,353,410],$VR=[1,127],$VS=[1,126],$VT=[1,134],$VU=[1,164],$VV=[1,175],$VW=[1,178],$VX=[1,173],$VY=[1,181],$VZ=[1,185],$V_=[1,160],$V$=[1,182],$V01=[1,169],$V11=[1,171],$V21=[1,174],$V31=[1,183],$V41=[1,166],$V51=[1,193],$V61=[1,188],$V71=[1,189],$V81=[1,194],$V91=[1,195],$Va1=[1,196],$Vb1=[1,197],$Vc1=[1,198],$Vd1=[1,199],$Ve1=[1,200],$Vf1=[1,201],$Vg1=[1,202],$Vh1=[1,176],$Vi1=[1,177],$Vj1=[1,179],$Vk1=[1,180],$Vl1=[1,186],$Vm1=[1,192],$Vn1=[1,184],$Vo1=[1,187],$Vp1=[1,172],$Vq1=[1,170],$Vr1=[1,191],$Vs1=[1,203],$Vt1=[2,4,5],$Vu1=[2,471],$Vv1=[1,206],$Vw1=[1,211],$Vx1=[1,220],$Vy1=[1,216],$Vz1=[10,72,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VA1=[2,4,5,10,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],$VB1=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VC1=[1,249],$VD1=[1,256],$VE1=[1,265],$VF1=[1,270],$VG1=[1,269],$VH1=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,168,169,179,180,181,183,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],$VI1=[2,162],$VJ1=[1,281],$VK1=[10,74,78,306,310,505,602,764],$VL1=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,193,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,302,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,344,356,368,369,370,373,374,386,389,396,400,401,402,403,404,405,406,408,409,417,418,420,424,426,433,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,514,515,516,517,602,764],$VM1=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VN1=[1,562],$VO1=[1,564],$VP1=[2,503],$VQ1=[1,569],$VR1=[1,580],$VS1=[1,583],$VT1=[1,584],$VU1=[10,78,89,132,137,146,189,296,306,310,470,602,764],$VV1=[10,74,306,310,602,764],$VW1=[2,567],$VX1=[1,602],$VY1=[2,4,5,156],$VZ1=[1,640],$V_1=[1,612],$V$1=[1,646],$V02=[1,647],$V12=[1,620],$V22=[1,631],$V32=[1,618],$V42=[1,626],$V52=[1,619],$V62=[1,627],$V72=[1,629],$V82=[1,621],$V92=[1,622],$Va2=[1,641],$Vb2=[1,638],$Vc2=[1,639],$Vd2=[1,615],$Ve2=[1,617],$Vf2=[1,609],$Vg2=[1,610],$Vh2=[1,611],$Vi2=[1,613],$Vj2=[1,614],$Vk2=[1,616],$Vl2=[1,623],$Vm2=[1,624],$Vn2=[1,628],$Vo2=[1,630],$Vp2=[1,632],$Vq2=[1,633],$Vr2=[1,634],$Vs2=[1,635],$Vt2=[1,636],$Vu2=[1,642],$Vv2=[1,643],$Vw2=[1,644],$Vx2=[1,645],$Vy2=[2,287],$Vz2=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VA2=[2,359],$VB2=[1,668],$VC2=[1,678],$VD2=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VE2=[1,694],$VF2=[1,703],$VG2=[1,702],$VH2=[2,4,5,10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VI2=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VJ2=[2,202],$VK2=[1,725],$VL2=[10,72,78,93,98,118,128,162,168,169,183,232,245,247,306,310,602,764],$VM2=[2,163],$VN2=[1,728],$VO2=[2,4,5,112],$VP2=[1,741],$VQ2=[1,760],$VR2=[1,740],$VS2=[1,739],$VT2=[1,734],$VU2=[1,735],$VV2=[1,737],$VW2=[1,738],$VX2=[1,742],$VY2=[1,743],$VZ2=[1,744],$V_2=[1,745],$V$2=[1,746],$V03=[1,747],$V13=[1,748],$V23=[1,749],$V33=[1,750],$V43=[1,751],$V53=[1,752],$V63=[1,753],$V73=[1,754],$V83=[1,755],$V93=[1,756],$Va3=[1,757],$Vb3=[1,759],$Vc3=[1,761],$Vd3=[1,762],$Ve3=[1,763],$Vf3=[1,764],$Vg3=[1,765],$Vh3=[1,766],$Vi3=[1,767],$Vj3=[1,770],$Vk3=[1,771],$Vl3=[1,772],$Vm3=[1,773],$Vn3=[1,774],$Vo3=[1,775],$Vp3=[1,776],$Vq3=[1,777],$Vr3=[1,778],$Vs3=[1,779],$Vt3=[1,780],$Vu3=[1,781],$Vv3=[74,89,189],$Vw3=[10,74,78,154,187,230,297,306,310,343,356,368,369,373,374,602,764],$Vx3=[1,798],$Vy3=[10,74,78,300,306,310,602,764],$Vz3=[1,799],$VA3=[1,805],$VB3=[1,806],$VC3=[1,810],$VD3=[10,74,78,306,310,602,764],$VE3=[2,4,5,77,131,132,137,143,145,149,152,154,156,179,180,181,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,312,317,420,424],$VF3=[10,72,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VG3=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],$VH3=[2,4,5,132,296],$VI3=[1,844],$VJ3=[10,74,76,78,306,310,602,764],$VK3=[2,738],$VL3=[10,74,76,78,132,139,141,145,152,306,310,420,424,602,764],$VM3=[2,1161],$VN3=[10,74,76,78,139,141,145,152,306,310,420,424,602,764],$VO3=[10,74,76,78,139,141,145,306,310,420,424,602,764],$VP3=[10,74,78,139,141,306,310,602,764],$VQ3=[10,78,89,132,146,189,296,306,310,470,602,764],$VR3=[335,338,339],$VS3=[2,764],$VT3=[1,869],$VU3=[1,870],$VV3=[1,871],$VW3=[1,872],$VX3=[1,881],$VY3=[1,880],$VZ3=[164,166,334],$V_3=[2,444],$V$3=[1,936],$V04=[2,4,5,77,131,156,290,291,292,293],$V14=[1,951],$V24=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$V34=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$V44=[2,375],$V54=[1,958],$V64=[306,308,310],$V74=[74,300],$V84=[74,300,426],$V94=[1,965],$Va4=[2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vb4=[74,426],$Vc4=[1,978],$Vd4=[1,977],$Ve4=[1,984],$Vf4=[10,72,78,93,98,118,128,162,168,169,232,245,247,306,310,602,764],$Vg4=[1,1010],$Vh4=[10,72,78,306,310,602,764],$Vi4=[1,1016],$Vj4=[1,1017],$Vk4=[1,1018],$Vl4=[2,4,5,10,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],$Vm4=[1,1068],$Vn4=[1,1067],$Vo4=[1,1081],$Vp4=[1,1080],$Vq4=[1,1088],$Vr4=[10,72,74,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$Vs4=[1,1119],$Vt4=[10,78,89,146,189,306,310,470,602,764],$Vu4=[1,1139],$Vv4=[1,1138],$Vw4=[1,1137],$Vx4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy4=[1,1153],$Vz4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VA4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VB4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VC4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VD4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VE4=[2,406],$VF4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VG4=[2,285],$VH4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VI4=[10,78,306,310,602,764],$VJ4=[1,1189],$VK4=[10,77,78,143,145,152,181,302,306,310,420,424,602,764],$VL4=[10,74,78,306,308,310,464,602,764],$VM4=[1,1200],$VN4=[10,72,78,118,128,162,168,169,232,245,247,306,310,602,764],$VO4=[10,72,74,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VP4=[2,4,5,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VQ4=[2,4,5,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VR4=[2,1085],$VS4=[2,4,5,72,74,76,77,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VT4=[1,1252],$VU4=[10,74,78,128,306,308,310,464,602,764],$VV4=[115,116,124],$VW4=[2,584],$VX4=[1,1280],$VY4=[76,139],$VZ4=[2,724],$V_4=[1,1297],$V$4=[1,1298],$V05=[2,4,5,10,53,72,76,89,124,146,156,189,230,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$V15=[2,330],$V25=[1,1322],$V35=[1,1336],$V45=[1,1338],$V55=[2,487],$V65=[74,78],$V75=[10,306,308,310,464,602,764],$V85=[10,72,78,118,162,168,169,232,245,247,306,310,602,764],$V95=[1,1354],$Va5=[1,1358],$Vb5=[1,1359],$Vc5=[1,1361],$Vd5=[1,1362],$Ve5=[1,1363],$Vf5=[1,1364],$Vg5=[1,1365],$Vh5=[1,1366],$Vi5=[1,1367],$Vj5=[1,1368],$Vk5=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vl5=[1,1393],$Vm5=[10,72,78,118,162,168,169,245,247,306,310,602,764],$Vn5=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vo5=[1,1490],$Vp5=[1,1492],$Vq5=[2,4,5,77,143,145,152,156,181,290,291,292,293,302,420,424],$Vr5=[1,1506],$Vs5=[10,72,74,78,162,168,169,245,247,306,310,602,764],$Vt5=[1,1524],$Vu5=[1,1526],$Vv5=[1,1527],$Vw5=[1,1523],$Vx5=[1,1522],$Vy5=[1,1521],$Vz5=[1,1528],$VA5=[1,1518],$VB5=[1,1519],$VC5=[1,1520],$VD5=[1,1545],$VE5=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VF5=[1,1556],$VG5=[1,1564],$VH5=[1,1563],$VI5=[10,72,78,162,168,169,245,247,306,310,602,764],$VJ5=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VK5=[2,4,5,10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VL5=[1,1621],$VM5=[1,1623],$VN5=[1,1620],$VO5=[1,1622],$VP5=[187,193,368,369,370,373],$VQ5=[2,515],$VR5=[1,1628],$VS5=[1,1647],$VT5=[10,72,78,162,168,169,306,310,602,764],$VU5=[1,1657],$VV5=[1,1658],$VW5=[1,1659],$VX5=[1,1678],$VY5=[4,10,243,306,310,343,356,602,764],$VZ5=[1,1726],$V_5=[10,72,74,78,118,162,168,169,239,245,247,306,310,602,764],$V$5=[2,4,5,77],$V06=[1,1820],$V16=[1,1832],$V26=[1,1851],$V36=[10,72,78,162,168,169,306,310,415,602,764],$V46=[10,74,78,230,306,310,602,764];
+var parser = {trace: function trace() { },
+yy: {},
+symbols_: {"error":2,"Literal":3,"LITERAL":4,"BRALITERAL":5,"NonReserved":6,"LiteralWithSpaces":7,"main":8,"Statements":9,"EOF":10,"Statements_group0":11,"AStatement":12,"ExplainStatement":13,"EXPLAIN":14,"QUERY":15,"PLAN":16,"Statement":17,"AlterTable":18,"AttachDatabase":19,"Call":20,"CreateDatabase":21,"CreateIndex":22,"CreateGraph":23,"CreateTable":24,"CreateView":25,"CreateEdge":26,"CreateVertex":27,"Declare":28,"Delete":29,"DetachDatabase":30,"DropDatabase":31,"DropIndex":32,"DropTable":33,"DropView":34,"If":35,"Insert":36,"Merge":37,"Reindex":38,"RenameTable":39,"Select":40,"ShowCreateTable":41,"ShowColumns":42,"ShowDatabases":43,"ShowIndex":44,"ShowTables":45,"TruncateTable":46,"WithSelect":47,"CreateTrigger":48,"DropTrigger":49,"BeginTransaction":50,"CommitTransaction":51,"RollbackTransaction":52,"EndTransaction":53,"UseDatabase":54,"Update":55,"JavaScript":56,"Source":57,"Assert":58,"While":59,"Continue":60,"Break":61,"BeginEnd":62,"Print":63,"Require":64,"SetVariable":65,"ExpressionStatement":66,"AddRule":67,"Query":68,"Echo":69,"CreateFunction":70,"CreateAggregate":71,"WITH":72,"WithTablesList":73,"COMMA":74,"WithTable":75,"AS":76,"LPAR":77,"RPAR":78,"SelectClause":79,"Select_option0":80,"IntoClause":81,"FromClause":82,"Select_option1":83,"WhereClause":84,"GroupClause":85,"OrderClause":86,"LimitClause":87,"UnionClause":88,"SEARCH":89,"Select_repetition0":90,"Select_option2":91,"PivotClause":92,"PIVOT":93,"Expression":94,"FOR":95,"PivotClause_option0":96,"PivotClause_option1":97,"UNPIVOT":98,"IN":99,"ColumnsList":100,"PivotClause_option2":101,"PivotClause2":102,"AsList":103,"AsLiteral":104,"AsPart":105,"RemoveClause":106,"REMOVE":107,"RemoveClause_option0":108,"RemoveColumnsList":109,"RemoveColumn":110,"Column":111,"LIKE":112,"StringValue":113,"ArrowDot":114,"ARROW":115,"DOT":116,"SearchSelector":117,"ORDER":118,"BY":119,"OrderExpressionsList":120,"SearchSelector_option0":121,"DOTDOT":122,"CARET":123,"EQ":124,"SearchSelector_repetition_plus0":125,"SearchSelector_repetition_plus1":126,"SearchSelector_option1":127,"WHERE":128,"OF":129,"CLASS":130,"NUMBER":131,"STRING":132,"SLASH":133,"VERTEX":134,"EDGE":135,"EXCLAMATION":136,"SHARP":137,"MODULO":138,"GT":139,"LT":140,"GTGT":141,"LTLT":142,"DOLLAR":143,"Json":144,"AT":145,"SET":146,"SetColumnsList":147,"TO":148,"VALUE":149,"ROW":150,"ExprList":151,"COLON":152,"PlusStar":153,"NOT":154,"SearchSelector_repetition2":155,"IF":156,"SearchSelector_repetition3":157,"Aggregator":158,"SearchSelector_repetition4":159,"SearchSelector_group0":160,"SearchSelector_repetition5":161,"UNION":162,"SearchSelectorList":163,"ALL":164,"SearchSelector_repetition6":165,"ANY":166,"SearchSelector_repetition7":167,"INTERSECT":168,"EXCEPT":169,"AND":170,"OR":171,"PATH":172,"RETURN":173,"ResultColumns":174,"REPEAT":175,"SearchSelector_repetition8":176,"SearchSelectorList_repetition0":177,"SearchSelectorList_repetition1":178,"PLUS":179,"STAR":180,"QUESTION":181,"SearchFrom":182,"FROM":183,"SelectModifier":184,"DISTINCT":185,"TopClause":186,"UNIQUE":187,"SelectClause_option0":188,"SELECT":189,"COLUMN":190,"MATRIX":191,"TEXTSTRING":192,"INDEX":193,"RECORDSET":194,"TOP":195,"NumValue":196,"TopClause_option0":197,"INTO":198,"Table":199,"FuncValue":200,"ParamValue":201,"VarValue":202,"FromTablesList":203,"JoinTablesList":204,"ApplyClause":205,"CROSS":206,"APPLY":207,"OUTER":208,"FromTable":209,"FromTable_option0":210,"FromTable_option1":211,"INDEXED":212,"INSERTED":213,"FromString":214,"JoinTable":215,"JoinMode":216,"JoinTableAs":217,"OnClause":218,"JoinTableAs_option0":219,"JoinTableAs_option1":220,"JoinModeMode":221,"NATURAL":222,"JOIN":223,"INNER":224,"LEFT":225,"RIGHT":226,"FULL":227,"SEMI":228,"ANTI":229,"ON":230,"USING":231,"GROUP":232,"GroupExpressionsList":233,"HavingClause":234,"GroupExpression":235,"GROUPING":236,"ROLLUP":237,"CUBE":238,"HAVING":239,"CORRESPONDING":240,"OrderExpression":241,"DIRECTION":242,"COLLATE":243,"NOCASE":244,"LIMIT":245,"OffsetClause":246,"OFFSET":247,"LimitClause_option0":248,"FETCH":249,"LimitClause_option1":250,"LimitClause_option2":251,"LimitClause_option3":252,"ResultColumn":253,"Star":254,"AggrValue":255,"Op":256,"LogicValue":257,"NullValue":258,"ExistsValue":259,"CaseValue":260,"CastClause":261,"ArrayValue":262,"NewClause":263,"Expression_group0":264,"CURRENT_TIMESTAMP":265,"JAVASCRIPT":266,"CREATE":267,"FUNCTION":268,"AGGREGATE":269,"NEW":270,"CAST":271,"ColumnType":272,"CONVERT":273,"PrimitiveValue":274,"OverClause":275,"OVER":276,"OverPartitionClause":277,"OverOrderByClause":278,"PARTITION":279,"SUM":280,"COUNT":281,"MIN":282,"MAX":283,"AVG":284,"FIRST":285,"LAST":286,"AGGR":287,"ARRAY":288,"FuncValue_option0":289,"REPLACE":290,"DATEADD":291,"DATEDIFF":292,"INTERVAL":293,"TRUE":294,"FALSE":295,"NSTRING":296,"NULL":297,"EXISTS":298,"ARRAYLBRA":299,"RBRA":300,"ParamValue_group0":301,"BRAQUESTION":302,"CASE":303,"WhensList":304,"ElseClause":305,"END":306,"When":307,"WHEN":308,"THEN":309,"ELSE":310,"REGEXP":311,"TILDA":312,"GLOB":313,"ESCAPE":314,"NOT_LIKE":315,"BARBAR":316,"MINUS":317,"AMPERSAND":318,"BAR":319,"GE":320,"LE":321,"EQEQ":322,"EQEQEQ":323,"NE":324,"NEEQEQ":325,"NEEQEQEQ":326,"CondOp":327,"AllSome":328,"ColFunc":329,"BETWEEN":330,"NOT_BETWEEN":331,"IS":332,"DOUBLECOLON":333,"SOME":334,"UPDATE":335,"SetColumn":336,"SetColumn_group0":337,"DELETE":338,"INSERT":339,"Into":340,"Values":341,"ValuesListsList":342,"DEFAULT":343,"VALUES":344,"ValuesList":345,"Value":346,"DateValue":347,"TemporaryClause":348,"TableClass":349,"IfNotExists":350,"CreateTableDefClause":351,"CreateTableOptionsClause":352,"TABLE":353,"CreateTableOptions":354,"CreateTableOption":355,"IDENTITY":356,"TEMP":357,"ColumnDefsList":358,"ConstraintsList":359,"Constraint":360,"ConstraintName":361,"PrimaryKey":362,"ForeignKey":363,"UniqueKey":364,"IndexKey":365,"Check":366,"CONSTRAINT":367,"CHECK":368,"PRIMARY":369,"KEY":370,"PrimaryKey_option0":371,"ColsList":372,"FOREIGN":373,"REFERENCES":374,"ForeignKey_option0":375,"OnForeignKeyClause":376,"ParColsList":377,"OnDeleteClause":378,"OnUpdateClause":379,"NO":380,"ACTION":381,"UniqueKey_option0":382,"UniqueKey_option1":383,"ColumnDef":384,"ColumnConstraintsClause":385,"ColumnConstraints":386,"SingularColumnType":387,"NumberMax":388,"ENUM":389,"MAXNUM":390,"ColumnConstraintsList":391,"ColumnConstraint":392,"ParLiteral":393,"ColumnConstraint_option0":394,"ColumnConstraint_option1":395,"DROP":396,"DropTable_group0":397,"IfExists":398,"TablesList":399,"ALTER":400,"RENAME":401,"ADD":402,"MODIFY":403,"ATTACH":404,"DATABASE":405,"DETACH":406,"AsClause":407,"USE":408,"SHOW":409,"VIEW":410,"CreateView_option0":411,"CreateView_option1":412,"SubqueryRestriction":413,"READ":414,"ONLY":415,"OPTION":416,"SOURCE":417,"ASSERT":418,"JsonObject":419,"ATLBRA":420,"JsonArray":421,"JsonValue":422,"JsonPrimitiveValue":423,"LCUR":424,"JsonPropertiesList":425,"RCUR":426,"JsonElementsList":427,"JsonProperty":428,"OnOff":429,"SetPropsList":430,"AtDollar":431,"SetProp":432,"OFF":433,"COMMIT":434,"TRANSACTION":435,"ROLLBACK":436,"BEGIN":437,"ElseStatement":438,"WHILE":439,"CONTINUE":440,"BREAK":441,"PRINT":442,"REQUIRE":443,"StringValuesList":444,"PluginsList":445,"Plugin":446,"ECHO":447,"DECLARE":448,"DeclaresList":449,"DeclareItem":450,"TRUNCATE":451,"MERGE":452,"MergeInto":453,"MergeUsing":454,"MergeOn":455,"MergeMatchedList":456,"OutputClause":457,"MergeMatched":458,"MergeNotMatched":459,"MATCHED":460,"MergeMatchedAction":461,"MergeNotMatchedAction":462,"TARGET":463,"OUTPUT":464,"CreateVertex_option0":465,"CreateVertex_option1":466,"CreateVertex_option2":467,"CreateVertexSet":468,"SharpValue":469,"CONTENT":470,"CreateEdge_option0":471,"GRAPH":472,"GraphList":473,"GraphVertexEdge":474,"GraphElement":475,"GraphVertexEdge_option0":476,"GraphVertexEdge_option1":477,"GraphElementVar":478,"GraphVertexEdge_option2":479,"GraphVertexEdge_option3":480,"GraphVertexEdge_option4":481,"GraphVar":482,"GraphAsClause":483,"GraphAtClause":484,"GraphElement2":485,"GraphElement2_option0":486,"GraphElement2_option1":487,"GraphElement2_option2":488,"GraphElement2_option3":489,"GraphElement_option0":490,"GraphElement_option1":491,"GraphElement_option2":492,"SharpLiteral":493,"GraphElement_option3":494,"GraphElement_option4":495,"GraphElement_option5":496,"ColonLiteral":497,"DeleteVertex":498,"DeleteVertex_option0":499,"DeleteEdge":500,"DeleteEdge_option0":501,"DeleteEdge_option1":502,"DeleteEdge_option2":503,"Term":504,"COLONDASH":505,"TermsList":506,"QUESTIONDASH":507,"CALL":508,"TRIGGER":509,"BeforeAfter":510,"InsertDeleteUpdate":511,"CreateTrigger_option0":512,"CreateTrigger_option1":513,"BEFORE":514,"AFTER":515,"INSTEAD":516,"REINDEX":517,"A":518,"ABSENT":519,"ABSOLUTE":520,"ACCORDING":521,"ADA":522,"ADMIN":523,"ALWAYS":524,"ASC":525,"ASSERTION":526,"ASSIGNMENT":527,"ATTRIBUTE":528,"ATTRIBUTES":529,"BASE64":530,"BERNOULLI":531,"BLOCKED":532,"BOM":533,"BREADTH":534,"C":535,"CASCADE":536,"CATALOG":537,"CATALOG_NAME":538,"CHAIN":539,"CHARACTERISTICS":540,"CHARACTERS":541,"CHARACTER_SET_CATALOG":542,"CHARACTER_SET_NAME":543,"CHARACTER_SET_SCHEMA":544,"CLASS_ORIGIN":545,"COBOL":546,"COLLATION":547,"COLLATION_CATALOG":548,"COLLATION_NAME":549,"COLLATION_SCHEMA":550,"COLUMNS":551,"COLUMN_NAME":552,"COMMAND_FUNCTION":553,"COMMAND_FUNCTION_CODE":554,"COMMITTED":555,"CONDITION_NUMBER":556,"CONNECTION":557,"CONNECTION_NAME":558,"CONSTRAINTS":559,"CONSTRAINT_CATALOG":560,"CONSTRAINT_NAME":561,"CONSTRAINT_SCHEMA":562,"CONSTRUCTOR":563,"CONTROL":564,"CURSOR_NAME":565,"DATA":566,"DATETIME_INTERVAL_CODE":567,"DATETIME_INTERVAL_PRECISION":568,"DB":569,"DEFAULTS":570,"DEFERRABLE":571,"DEFERRED":572,"DEFINED":573,"DEFINER":574,"DEGREE":575,"DEPTH":576,"DERIVED":577,"DESC":578,"DESCRIPTOR":579,"DIAGNOSTICS":580,"DISPATCH":581,"DOCUMENT":582,"DOMAIN":583,"DYNAMIC_FUNCTION":584,"DYNAMIC_FUNCTION_CODE":585,"EMPTY":586,"ENCODING":587,"ENFORCED":588,"EXCLUDE":589,"EXCLUDING":590,"EXPRESSION":591,"FILE":592,"FINAL":593,"FLAG":594,"FOLLOWING":595,"FORTRAN":596,"FOUND":597,"FS":598,"G":599,"GENERAL":600,"GENERATED":601,"GO":602,"GOTO":603,"GRANTED":604,"HEX":605,"HIERARCHY":606,"ID":607,"IGNORE":608,"IMMEDIATE":609,"IMMEDIATELY":610,"IMPLEMENTATION":611,"INCLUDING":612,"INCREMENT":613,"INDENT":614,"INITIALLY":615,"INPUT":616,"INSTANCE":617,"INSTANTIABLE":618,"INTEGRITY":619,"INVOKER":620,"ISOLATION":621,"K":622,"KEY_MEMBER":623,"KEY_TYPE":624,"LENGTH":625,"LEVEL":626,"LIBRARY":627,"LINK":628,"LOCATION":629,"LOCATOR":630,"M":631,"MAP":632,"MAPPING":633,"MAXVALUE":634,"MESSAGE_LENGTH":635,"MESSAGE_OCTET_LENGTH":636,"MESSAGE_TEXT":637,"MINVALUE":638,"MORE":639,"MUMPS":640,"NAME":641,"NAMES":642,"NAMESPACE":643,"NESTING":644,"NEXT":645,"NFC":646,"NFD":647,"NFKC":648,"NFKD":649,"NIL":650,"NORMALIZED":651,"NULLABLE":652,"NULLS":653,"OBJECT":654,"OCTETS":655,"OPTIONS":656,"ORDERING":657,"ORDINALITY":658,"OTHERS":659,"OVERRIDING":660,"P":661,"PAD":662,"PARAMETER_MODE":663,"PARAMETER_NAME":664,"PARAMETER_ORDINAL_POSITION":665,"PARAMETER_SPECIFIC_CATALOG":666,"PARAMETER_SPECIFIC_NAME":667,"PARAMETER_SPECIFIC_SCHEMA":668,"PARTIAL":669,"PASCAL":670,"PASSING":671,"PASSTHROUGH":672,"PERMISSION":673,"PLACING":674,"PLI":675,"PRECEDING":676,"PRESERVE":677,"PRIOR":678,"PRIVILEGES":679,"PUBLIC":680,"RECOVERY":681,"RELATIVE":682,"REPEATABLE":683,"REQUIRING":684,"RESPECT":685,"RESTART":686,"RESTORE":687,"RESTRICT":688,"RETURNED_CARDINALITY":689,"RETURNED_LENGTH":690,"RETURNED_OCTET_LENGTH":691,"RETURNED_SQLSTATE":692,"RETURNING":693,"ROLE":694,"ROUTINE":695,"ROUTINE_CATALOG":696,"ROUTINE_NAME":697,"ROUTINE_SCHEMA":698,"ROW_COUNT":699,"SCALE":700,"SCHEMA":701,"SCHEMA_NAME":702,"SCOPE_CATALOG":703,"SCOPE_NAME":704,"SCOPE_SCHEMA":705,"SECTION":706,"SECURITY":707,"SELECTIVE":708,"SELF":709,"SEQUENCE":710,"SERIALIZABLE":711,"SERVER":712,"SERVER_NAME":713,"SESSION":714,"SETS":715,"SIMPLE":716,"SIZE":717,"SPACE":718,"SPECIFIC_NAME":719,"STANDALONE":720,"STATE":721,"STATEMENT":722,"STRIP":723,"STRUCTURE":724,"STYLE":725,"SUBCLASS_ORIGIN":726,"T":727,"TABLE_NAME":728,"TEMPORARY":729,"TIES":730,"TOKEN":731,"TOP_LEVEL_COUNT":732,"TRANSACTIONS_COMMITTED":733,"TRANSACTIONS_ROLLED_BACK":734,"TRANSACTION_ACTIVE":735,"TRANSFORM":736,"TRANSFORMS":737,"TRIGGER_CATALOG":738,"TRIGGER_NAME":739,"TRIGGER_SCHEMA":740,"TYPE":741,"UNBOUNDED":742,"UNCOMMITTED":743,"UNDER":744,"UNLINK":745,"UNNAMED":746,"UNTYPED":747,"URI":748,"USAGE":749,"USER_DEFINED_TYPE_CATALOG":750,"USER_DEFINED_TYPE_CODE":751,"USER_DEFINED_TYPE_NAME":752,"USER_DEFINED_TYPE_SCHEMA":753,"VALID":754,"VERSION":755,"WHITESPACE":756,"WORK":757,"WRAPPER":758,"WRITE":759,"XMLDECLARATION":760,"XMLSCHEMA":761,"YES":762,"ZONE":763,"SEMICOLON":764,"PERCENT":765,"ROWS":766,"FuncValue_option0_group0":767,"$accept":0,"$end":1},
+terminals_: {2:"error",4:"LITERAL",5:"BRALITERAL",10:"EOF",14:"EXPLAIN",15:"QUERY",16:"PLAN",53:"EndTransaction",72:"WITH",74:"COMMA",76:"AS",77:"LPAR",78:"RPAR",89:"SEARCH",93:"PIVOT",95:"FOR",98:"UNPIVOT",99:"IN",107:"REMOVE",112:"LIKE",115:"ARROW",116:"DOT",118:"ORDER",119:"BY",122:"DOTDOT",123:"CARET",124:"EQ",128:"WHERE",129:"OF",130:"CLASS",131:"NUMBER",132:"STRING",133:"SLASH",134:"VERTEX",135:"EDGE",136:"EXCLAMATION",137:"SHARP",138:"MODULO",139:"GT",140:"LT",141:"GTGT",142:"LTLT",143:"DOLLAR",145:"AT",146:"SET",148:"TO",149:"VALUE",150:"ROW",152:"COLON",154:"NOT",156:"IF",162:"UNION",164:"ALL",166:"ANY",168:"INTERSECT",169:"EXCEPT",170:"AND",171:"OR",172:"PATH",173:"RETURN",175:"REPEAT",179:"PLUS",180:"STAR",181:"QUESTION",183:"FROM",185:"DISTINCT",187:"UNIQUE",189:"SELECT",190:"COLUMN",191:"MATRIX",192:"TEXTSTRING",193:"INDEX",194:"RECORDSET",195:"TOP",198:"INTO",206:"CROSS",207:"APPLY",208:"OUTER",212:"INDEXED",213:"INSERTED",222:"NATURAL",223:"JOIN",224:"INNER",225:"LEFT",226:"RIGHT",227:"FULL",228:"SEMI",229:"ANTI",230:"ON",231:"USING",232:"GROUP",236:"GROUPING",237:"ROLLUP",238:"CUBE",239:"HAVING",240:"CORRESPONDING",242:"DIRECTION",243:"COLLATE",244:"NOCASE",245:"LIMIT",247:"OFFSET",249:"FETCH",265:"CURRENT_TIMESTAMP",266:"JAVASCRIPT",267:"CREATE",268:"FUNCTION",269:"AGGREGATE",270:"NEW",271:"CAST",273:"CONVERT",276:"OVER",279:"PARTITION",280:"SUM",281:"COUNT",282:"MIN",283:"MAX",284:"AVG",285:"FIRST",286:"LAST",287:"AGGR",288:"ARRAY",290:"REPLACE",291:"DATEADD",292:"DATEDIFF",293:"INTERVAL",294:"TRUE",295:"FALSE",296:"NSTRING",297:"NULL",298:"EXISTS",299:"ARRAYLBRA",300:"RBRA",302:"BRAQUESTION",303:"CASE",306:"END",308:"WHEN",309:"THEN",310:"ELSE",311:"REGEXP",312:"TILDA",313:"GLOB",314:"ESCAPE",315:"NOT_LIKE",316:"BARBAR",317:"MINUS",318:"AMPERSAND",319:"BAR",320:"GE",321:"LE",322:"EQEQ",323:"EQEQEQ",324:"NE",325:"NEEQEQ",326:"NEEQEQEQ",330:"BETWEEN",331:"NOT_BETWEEN",332:"IS",333:"DOUBLECOLON",334:"SOME",335:"UPDATE",338:"DELETE",339:"INSERT",343:"DEFAULT",344:"VALUES",347:"DateValue",353:"TABLE",356:"IDENTITY",357:"TEMP",367:"CONSTRAINT",368:"CHECK",369:"PRIMARY",370:"KEY",373:"FOREIGN",374:"REFERENCES",380:"NO",381:"ACTION",386:"ColumnConstraints",389:"ENUM",390:"MAXNUM",396:"DROP",400:"ALTER",401:"RENAME",402:"ADD",403:"MODIFY",404:"ATTACH",405:"DATABASE",406:"DETACH",408:"USE",409:"SHOW",410:"VIEW",414:"READ",415:"ONLY",416:"OPTION",417:"SOURCE",418:"ASSERT",420:"ATLBRA",424:"LCUR",426:"RCUR",433:"OFF",434:"COMMIT",435:"TRANSACTION",436:"ROLLBACK",437:"BEGIN",439:"WHILE",440:"CONTINUE",441:"BREAK",442:"PRINT",443:"REQUIRE",447:"ECHO",448:"DECLARE",451:"TRUNCATE",452:"MERGE",460:"MATCHED",463:"TARGET",464:"OUTPUT",470:"CONTENT",472:"GRAPH",505:"COLONDASH",507:"QUESTIONDASH",508:"CALL",509:"TRIGGER",514:"BEFORE",515:"AFTER",516:"INSTEAD",517:"REINDEX",518:"A",519:"ABSENT",520:"ABSOLUTE",521:"ACCORDING",522:"ADA",523:"ADMIN",524:"ALWAYS",525:"ASC",526:"ASSERTION",527:"ASSIGNMENT",528:"ATTRIBUTE",529:"ATTRIBUTES",530:"BASE64",531:"BERNOULLI",532:"BLOCKED",533:"BOM",534:"BREADTH",535:"C",536:"CASCADE",537:"CATALOG",538:"CATALOG_NAME",539:"CHAIN",540:"CHARACTERISTICS",541:"CHARACTERS",542:"CHARACTER_SET_CATALOG",543:"CHARACTER_SET_NAME",544:"CHARACTER_SET_SCHEMA",545:"CLASS_ORIGIN",546:"COBOL",547:"COLLATION",548:"COLLATION_CATALOG",549:"COLLATION_NAME",550:"COLLATION_SCHEMA",551:"COLUMNS",552:"COLUMN_NAME",553:"COMMAND_FUNCTION",554:"COMMAND_FUNCTION_CODE",555:"COMMITTED",556:"CONDITION_NUMBER",557:"CONNECTION",558:"CONNECTION_NAME",559:"CONSTRAINTS",560:"CONSTRAINT_CATALOG",561:"CONSTRAINT_NAME",562:"CONSTRAINT_SCHEMA",563:"CONSTRUCTOR",564:"CONTROL",565:"CURSOR_NAME",566:"DATA",567:"DATETIME_INTERVAL_CODE",568:"DATETIME_INTERVAL_PRECISION",569:"DB",570:"DEFAULTS",571:"DEFERRABLE",572:"DEFERRED",573:"DEFINED",574:"DEFINER",575:"DEGREE",576:"DEPTH",577:"DERIVED",578:"DESC",579:"DESCRIPTOR",580:"DIAGNOSTICS",581:"DISPATCH",582:"DOCUMENT",583:"DOMAIN",584:"DYNAMIC_FUNCTION",585:"DYNAMIC_FUNCTION_CODE",586:"EMPTY",587:"ENCODING",588:"ENFORCED",589:"EXCLUDE",590:"EXCLUDING",591:"EXPRESSION",592:"FILE",593:"FINAL",594:"FLAG",595:"FOLLOWING",596:"FORTRAN",597:"FOUND",598:"FS",599:"G",600:"GENERAL",601:"GENERATED",602:"GO",603:"GOTO",604:"GRANTED",605:"HEX",606:"HIERARCHY",607:"ID",608:"IGNORE",609:"IMMEDIATE",610:"IMMEDIATELY",611:"IMPLEMENTATION",612:"INCLUDING",613:"INCREMENT",614:"INDENT",615:"INITIALLY",616:"INPUT",617:"INSTANCE",618:"INSTANTIABLE",619:"INTEGRITY",620:"INVOKER",621:"ISOLATION",622:"K",623:"KEY_MEMBER",624:"KEY_TYPE",625:"LENGTH",626:"LEVEL",627:"LIBRARY",628:"LINK",629:"LOCATION",630:"LOCATOR",631:"M",632:"MAP",633:"MAPPING",634:"MAXVALUE",635:"MESSAGE_LENGTH",636:"MESSAGE_OCTET_LENGTH",637:"MESSAGE_TEXT",638:"MINVALUE",639:"MORE",640:"MUMPS",641:"NAME",642:"NAMES",643:"NAMESPACE",644:"NESTING",645:"NEXT",646:"NFC",647:"NFD",648:"NFKC",649:"NFKD",650:"NIL",651:"NORMALIZED",652:"NULLABLE",653:"NULLS",654:"OBJECT",655:"OCTETS",656:"OPTIONS",657:"ORDERING",658:"ORDINALITY",659:"OTHERS",660:"OVERRIDING",661:"P",662:"PAD",663:"PARAMETER_MODE",664:"PARAMETER_NAME",665:"PARAMETER_ORDINAL_POSITION",666:"PARAMETER_SPECIFIC_CATALOG",667:"PARAMETER_SPECIFIC_NAME",668:"PARAMETER_SPECIFIC_SCHEMA",669:"PARTIAL",670:"PASCAL",671:"PASSING",672:"PASSTHROUGH",673:"PERMISSION",674:"PLACING",675:"PLI",676:"PRECEDING",677:"PRESERVE",678:"PRIOR",679:"PRIVILEGES",680:"PUBLIC",681:"RECOVERY",682:"RELATIVE",683:"REPEATABLE",684:"REQUIRING",685:"RESPECT",686:"RESTART",687:"RESTORE",688:"RESTRICT",689:"RETURNED_CARDINALITY",690:"RETURNED_LENGTH",691:"RETURNED_OCTET_LENGTH",692:"RETURNED_SQLSTATE",693:"RETURNING",694:"ROLE",695:"ROUTINE",696:"ROUTINE_CATALOG",697:"ROUTINE_NAME",698:"ROUTINE_SCHEMA",699:"ROW_COUNT",700:"SCALE",701:"SCHEMA",702:"SCHEMA_NAME",703:"SCOPE_CATALOG",704:"SCOPE_NAME",705:"SCOPE_SCHEMA",706:"SECTION",707:"SECURITY",708:"SELECTIVE",709:"SELF",710:"SEQUENCE",711:"SERIALIZABLE",712:"SERVER",713:"SERVER_NAME",714:"SESSION",715:"SETS",716:"SIMPLE",717:"SIZE",718:"SPACE",719:"SPECIFIC_NAME",720:"STANDALONE",721:"STATE",722:"STATEMENT",723:"STRIP",724:"STRUCTURE",725:"STYLE",726:"SUBCLASS_ORIGIN",727:"T",728:"TABLE_NAME",729:"TEMPORARY",730:"TIES",731:"TOKEN",732:"TOP_LEVEL_COUNT",733:"TRANSACTIONS_COMMITTED",734:"TRANSACTIONS_ROLLED_BACK",735:"TRANSACTION_ACTIVE",736:"TRANSFORM",737:"TRANSFORMS",738:"TRIGGER_CATALOG",739:"TRIGGER_NAME",740:"TRIGGER_SCHEMA",741:"TYPE",742:"UNBOUNDED",743:"UNCOMMITTED",744:"UNDER",745:"UNLINK",746:"UNNAMED",747:"UNTYPED",748:"URI",749:"USAGE",750:"USER_DEFINED_TYPE_CATALOG",751:"USER_DEFINED_TYPE_CODE",752:"USER_DEFINED_TYPE_NAME",753:"USER_DEFINED_TYPE_SCHEMA",754:"VALID",755:"VERSION",756:"WHITESPACE",757:"WORK",758:"WRAPPER",759:"WRITE",760:"XMLDECLARATION",761:"XMLSCHEMA",762:"YES",763:"ZONE",764:"SEMICOLON",765:"PERCENT",766:"ROWS"},
+productions_: [0,[3,1],[3,1],[3,2],[7,1],[7,2],[8,2],[9,3],[9,1],[9,1],[13,2],[13,4],[12,1],[17,0],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[47,3],[73,3],[73,1],[75,5],[40,10],[40,4],[92,8],[92,11],[102,4],[104,2],[104,1],[103,3],[103,1],[105,1],[105,3],[106,3],[109,3],[109,1],[110,1],[110,2],[114,1],[114,1],[117,1],[117,5],[117,5],[117,1],[117,2],[117,1],[117,2],[117,2],[117,3],[117,4],[117,4],[117,4],[117,4],[117,4],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,2],[117,2],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,3],[117,4],[117,3],[117,1],[117,4],[117,2],[117,2],[117,4],[117,4],[117,4],[117,4],[117,4],[117,5],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,6],[163,3],[163,1],[153,1],[153,1],[153,1],[182,2],[79,4],[79,4],[79,4],[79,3],[184,1],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[186,3],[186,4],[186,0],[81,0],[81,2],[81,2],[81,2],[81,2],[81,2],[82,2],[82,3],[82,5],[82,0],[205,6],[205,7],[205,6],[205,7],[203,1],[203,3],[209,4],[209,5],[209,3],[209,3],[209,2],[209,3],[209,1],[209,3],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,2],[209,3],[214,1],[199,3],[199,1],[204,2],[204,2],[204,1],[204,1],[215,3],[217,1],[217,2],[217,3],[217,3],[217,2],[217,3],[217,4],[217,5],[217,1],[217,2],[217,3],[217,1],[217,2],[217,3],[216,1],[216,2],[221,1],[221,2],[221,2],[221,3],[221,2],[221,3],[221,2],[221,3],[221,2],[221,2],[221,2],[218,2],[218,2],[218,0],[84,0],[84,2],[85,0],[85,4],[233,1],[233,3],[235,5],[235,4],[235,4],[235,1],[234,0],[234,2],[88,0],[88,2],[88,3],[88,2],[88,2],[88,3],[88,4],[88,3],[88,3],[86,0],[86,3],[120,1],[120,3],[241,1],[241,2],[241,3],[241,4],[87,0],[87,3],[87,8],[246,0],[246,2],[174,3],[174,1],[253,3],[253,2],[253,3],[253,2],[253,3],[253,2],[253,1],[254,5],[254,3],[254,1],[111,5],[111,3],[111,3],[111,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,3],[94,3],[94,3],[94,1],[94,1],[56,1],[70,5],[71,5],[263,2],[263,2],[261,6],[261,8],[261,6],[261,8],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[255,5],[255,6],[255,6],[275,0],[275,4],[275,4],[275,5],[277,3],[278,3],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[200,5],[200,3],[200,4],[200,4],[200,8],[200,8],[200,8],[200,8],[200,3],[151,1],[151,3],[196,1],[257,1],[257,1],[113,1],[113,1],[258,1],[202,2],[259,4],[262,3],[201,2],[201,2],[201,1],[201,1],[260,5],[260,4],[304,2],[304,1],[307,4],[305,2],[305,0],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,6],[256,6],[256,3],[256,3],[256,2],[256,2],[256,2],[256,2],[256,2],[256,3],[256,5],[256,6],[256,5],[256,6],[256,4],[256,5],[256,3],[256,4],[256,3],[256,4],[256,3],[256,3],[256,3],[256,3],[256,3],[329,1],[329,1],[329,4],[327,1],[327,1],[327,1],[327,1],[327,1],[327,1],[328,1],[328,1],[328,1],[55,6],[55,4],[147,1],[147,3],[336,3],[336,4],[29,5],[29,3],[36,5],[36,4],[36,7],[36,6],[36,5],[36,4],[36,5],[36,8],[36,7],[36,4],[36,6],[36,7],[341,1],[341,1],[340,0],[340,1],[342,3],[342,1],[342,1],[342,5],[342,3],[342,3],[345,1],[345,3],[346,1],[346,1],[346,1],[346,1],[346,1],[346,1],[100,1],[100,3],[24,9],[24,5],[349,1],[349,1],[352,0],[352,1],[354,2],[354,1],[355,1],[355,3],[355,3],[355,3],[348,0],[348,1],[350,0],[350,3],[351,3],[351,1],[351,2],[359,1],[359,3],[360,2],[360,2],[360,2],[360,2],[360,2],[361,0],[361,2],[366,4],[362,6],[363,9],[377,3],[376,0],[376,2],[378,4],[379,4],[364,6],[365,5],[365,5],[372,1],[372,1],[372,3],[372,3],[358,1],[358,3],[384,3],[384,2],[384,1],[387,6],[387,4],[387,1],[387,4],[272,2],[272,1],[388,1],[388,1],[385,0],[385,1],[391,2],[391,1],[393,3],[392,2],[392,5],[392,3],[392,6],[392,1],[392,2],[392,4],[392,2],[392,1],[392,2],[392,1],[392,1],[392,3],[392,5],[33,4],[399,3],[399,1],[398,0],[398,2],[18,6],[18,6],[18,6],[18,8],[18,6],[39,5],[19,4],[19,7],[19,6],[19,9],[30,3],[21,4],[21,6],[21,9],[21,6],[407,0],[407,2],[54,3],[54,2],[31,4],[31,5],[31,5],[22,8],[22,9],[32,3],[43,2],[43,4],[43,3],[43,5],[45,2],[45,4],[45,4],[45,6],[42,4],[42,6],[44,4],[44,6],[41,4],[41,6],[25,11],[25,8],[413,3],[413,3],[413,5],[34,4],[66,2],[57,2],[58,2],[58,2],[58,4],[144,4],[144,2],[144,2],[144,2],[144,2],[144,1],[144,2],[144,2],[422,1],[422,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,3],[419,3],[419,4],[419,2],[421,2],[421,3],[421,1],[425,3],[425,1],[428,3],[428,3],[428,3],[427,3],[427,1],[65,4],[65,3],[65,4],[65,5],[65,5],[65,6],[431,1],[431,1],[430,3],[430,2],[432,1],[432,1],[432,3],[429,1],[429,1],[51,2],[52,2],[50,2],[35,4],[35,3],[438,2],[59,3],[60,1],[61,1],[62,3],[63,2],[63,2],[64,2],[64,2],[446,1],[446,1],[69,2],[444,3],[444,1],[445,3],[445,1],[28,2],[449,1],[449,3],[450,3],[450,4],[450,5],[450,6],[46,3],[37,6],[453,1],[453,2],[454,2],[455,2],[456,2],[456,2],[456,1],[456,1],[458,4],[458,6],[461,1],[461,3],[459,5],[459,7],[459,7],[459,9],[459,7],[459,9],[462,3],[462,6],[462,3],[462,6],[457,0],[457,2],[457,5],[457,4],[457,7],[27,6],[469,2],[468,0],[468,2],[468,2],[468,1],[26,8],[23,3],[23,4],[473,3],[473,1],[474,3],[474,7],[474,6],[474,3],[474,4],[478,1],[478,1],[482,2],[483,3],[484,2],[485,4],[475,4],[475,3],[475,2],[475,1],[497,2],[493,2],[493,2],[498,4],[500,6],[67,3],[67,2],[506,3],[506,1],[504,1],[504,4],[68,2],[20,2],[48,9],[48,8],[48,9],[510,0],[510,1],[510,1],[510,1],[510,2],[511,1],[511,1],[511,1],[49,3],[38,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[11,1],[11,1],[80,0],[80,1],[83,0],[83,1],[90,0],[90,2],[91,0],[91,1],[96,0],[96,1],[97,0],[97,1],[101,0],[101,1],[108,0],[108,1],[121,0],[121,1],[125,1],[125,2],[126,1],[126,2],[127,0],[127,1],[155,0],[155,2],[157,0],[157,2],[159,0],[159,2],[160,1],[160,1],[161,0],[161,2],[165,0],[165,2],[167,0],[167,2],[176,0],[176,2],[177,0],[177,2],[178,0],[178,2],[188,0],[188,1],[197,0],[197,1],[210,0],[210,1],[211,0],[211,1],[219,0],[219,1],[220,0],[220,1],[248,0],[248,1],[250,0],[250,1],[251,0],[251,1],[252,0],[252,1],[264,1],[264,1],[767,1],[767,1],[289,0],[289,1],[301,1],[301,1],[337,1],[337,1],[371,0],[371,1],[375,0],[375,1],[382,0],[382,1],[383,0],[383,1],[394,0],[394,1],[395,0],[395,1],[397,1],[397,1],[411,0],[411,1],[412,0],[412,1],[465,0],[465,1],[466,0],[466,1],[467,0],[467,1],[471,0],[471,1],[476,0],[476,1],[477,0],[477,1],[479,0],[479,1],[480,0],[480,1],[481,0],[481,1],[486,0],[486,1],[487,0],[487,1],[488,0],[488,1],[489,0],[489,1],[490,0],[490,1],[491,0],[491,1],[492,0],[492,1],[494,0],[494,1],[495,0],[495,1],[496,0],[496,1],[499,0],[499,2],[501,0],[501,2],[502,0],[502,2],[503,0],[503,2],[512,0],[512,1],[513,0],[513,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 1:
+
+ if (alasql.options.casesensitive) this.$ = $$[$0];
+ else this.$ = $$[$0].toLowerCase();
+
+break;
+case 2:
+ this.$ = doubleq($$[$0].substr(1,$$[$0].length-2));
+break;
+case 3:
+ this.$ = $$[$0].toLowerCase()
+break;
+case 4:
+ this.$ = $$[$0]
+break;
+case 5:
+ this.$ = $$[$0] ? $$[$0-1] + ' ' + $$[$0] : $$[$0-1]
+break;
+case 6:
+ return new yy.Statements({statements:$$[$0-1]});
+break;
+case 7:
+ this.$ = $$[$0-2]; if($$[$0]) $$[$0-2].push($$[$0]);
+break;
+case 8: case 9: case 70: case 80: case 85: case 143: case 177: case 205: case 206: case 242: case 261: case 273: case 354: case 372: case 451: case 474: case 475: case 479: case 487: case 528: case 529: case 566: case 649: case 659: case 683: case 685: case 687: case 701: case 702: case 732: case 756:
+ this.$ = [$$[$0]];
+break;
+case 10:
+ this.$ = $$[$0]; $$[$0].explain = true;
+break;
+case 11:
+ this.$ = $$[$0]; $$[$0].explain = true;
+break;
+case 12:
+
+ this.$ = $$[$0];
+
+ // TODO combine exists and queries
+ if(yy.exists) this.$.exists = yy.exists;
+ delete yy.exists;
+ if(yy.queries) this.$.queries = yy.queries;
+ delete yy.queries;
+
+break;
+case 13: case 162: case 172: case 237: case 238: case 240: case 248: case 250: case 259: case 267: case 270: case 375: case 491: case 501: case 503: case 515: case 521: case 522: case 567:
+ this.$ = undefined;
+break;
+case 68:
+ this.$ = new yy.WithSelect({withs: $$[$0-1], select:$$[$0]});
+break;
+case 69: case 565:
+ $$[$0-2].push($$[$0]); this.$=$$[$0-2];
+break;
+case 71:
+ this.$ = {name:$$[$0-4], select:$$[$0-1]};
+break;
+case 72:
+
+ yy.extend(this.$,$$[$0-9]); yy.extend(this.$,$$[$0-8]); yy.extend(this.$,$$[$0-7]); yy.extend(this.$,$$[$0-6]);
+ yy.extend(this.$,$$[$0-5]); yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);
+ yy.extend(this.$,$$[$0-2]); yy.extend(this.$,$$[$0-1]); yy.extend(this.$,$$[$0]);
+ this.$ = $$[$0-9];
+/* if(yy.exists) this.$.exists = yy.exists;
+ delete yy.exists;
+ if(yy.queries) this.$.queries = yy.queries;
+ delete yy.queries;
+*/
+break;
+case 73:
+
+ this.$ = new yy.Search({selectors:$$[$0-2], from:$$[$0]});
+ yy.extend(this.$,$$[$0-1]);
+
+break;
+case 74:
+ this.$ = {pivot:{expr:$$[$0-5], columnid:$$[$0-3], inlist:$$[$0-2], as:$$[$0]}};
+break;
+case 75:
+ this.$ = {unpivot:{tocolumnid:$$[$0-8], forcolumnid:$$[$0-6], inlist:$$[$0-3], as:$$[$0]}};
+break;
+case 76: case 520: case 549: case 585: case 619: case 636: case 637: case 640: case 662:
+ this.$ = $$[$0-1];
+break;
+case 77: case 78: case 86: case 147: case 185: case 247: case 280: case 288: case 289: case 290: case 291: case 292: case 293: case 294: case 295: case 296: case 297: case 298: case 299: case 300: case 301: case 304: case 305: case 320: case 321: case 322: case 323: case 324: case 325: case 374: case 440: case 441: case 442: case 443: case 444: case 445: case 516: case 542: case 546: case 548: case 623: case 624: case 625: case 626: case 627: case 628: case 632: case 634: case 635: case 644: case 660: case 661: case 723: case 738: case 739: case 741: case 742: case 748: case 749:
+ this.$ = $$[$0];
+break;
+case 79: case 84: case 731: case 755:
+ this.$ = $$[$0-2]; this.$.push($$[$0]);
+break;
+case 81:
+ this.$ = {expr:$$[$0]};
+break;
+case 82:
+ this.$ = {expr:$$[$0-2],as:$$[$0]};
+break;
+case 83:
+ this.$ = {removecolumns:$$[$0]};
+break;
+case 87:
+ this.$ = {like:$$[$0]};
+break;
+case 90: case 104:
+ this.$ = {srchid:"PROP", args: [$$[$0]]};
+break;
+case 91:
+ this.$ = {srchid:"ORDERBY", args: $$[$0-1]};
+break;
+case 92:
+
+ var dir = $$[$0-1];
+ if(!dir) dir = 'ASC';
+ this.$ = {srchid:"ORDERBY", args: [{expression: new yy.Column({columnid:'_'}), direction:dir}]};
+
+break;
+case 93:
+ this.$ = {srchid:"PARENT"};
+break;
+case 94:
+ this.$ = {srchid:"APROP", args: [$$[$0]]};
+break;
+case 95:
+ this.$ = {selid:"ROOT"};
+break;
+case 96:
+ this.$ = {srchid:"EQ", args: [$$[$0]]};
+break;
+case 97:
+ this.$ = {srchid:"LIKE", args: [$$[$0]]};
+break;
+case 98: case 99:
+ this.$ = {selid:"WITH", args: $$[$0-1]};
+break;
+case 100:
+ this.$ = {srchid:$$[$0-3].toUpperCase(), args:$$[$0-1]};
+break;
+case 101:
+ this.$ = {srchid:"WHERE", args:[$$[$0-1]]};
+break;
+case 102:
+ this.$ = {selid:"OF", args:[$$[$0-1]]};
+break;
+case 103:
+ this.$ = {srchid:"CLASS", args:[$$[$0-1]]};
+break;
+case 105:
+ this.$ = {srchid:"NAME", args: [$$[$0].substr(1,$$[$0].length-2)]};
+break;
+case 106:
+ this.$ = {srchid:"CHILD"};
+break;
+case 107:
+ this.$ = {srchid:"VERTEX"};
+break;
+case 108:
+ this.$ = {srchid:"EDGE"};
+break;
+case 109:
+ this.$ = {srchid:"REF"};
+break;
+case 110:
+ this.$ = {srchid:"SHARP", args:[$$[$0]]};
+break;
+case 111:
+ this.$ = {srchid:"ATTR", args:((typeof $$[$0] == 'undefined')?undefined:[$$[$0]])};
+break;
+case 112:
+ this.$ = {srchid:"ATTR"};
+break;
+case 113:
+ this.$ = {srchid:"OUT"};
+break;
+case 114:
+ this.$ = {srchid:"IN"};
+break;
+case 115:
+ this.$ = {srchid:"OUTOUT"};
+break;
+case 116:
+ this.$ = {srchid:"ININ"};
+break;
+case 117:
+ this.$ = {srchid:"CONTENT"};
+break;
+case 118:
+ this.$ = {srchid:"EX",args:[new yy.Json({value:$$[$0]})]};
+break;
+case 119:
+ this.$ = {srchid:"AT", args:[$$[$0]]};
+break;
+case 120:
+ this.$ = {srchid:"AS", args:[$$[$0]]};
+break;
+case 121:
+ this.$ = {srchid:"SET", args:$$[$0-1]};
+break;
+case 122:
+ this.$ = {selid:"TO", args:[$$[$0]]};
+break;
+case 123:
+ this.$ = {srchid:"VALUE"};
+break;
+case 124:
+ this.$ = {srchid:"ROW", args:$$[$0-1]};
+break;
+case 125:
+ this.$ = {srchid:"CLASS", args:[$$[$0]]};
+break;
+case 126:
+ this.$ = {selid:$$[$0],args:[$$[$0-1]] };
+break;
+case 127:
+ this.$ = {selid:"NOT",args:$$[$0-1] };
+break;
+case 128:
+ this.$ = {selid:"IF",args:$$[$0-1] };
+break;
+case 129:
+ this.$ = {selid:$$[$0-3],args:$$[$0-1] };
+break;
+case 130:
+ this.$ = {selid:'DISTINCT',args:$$[$0-1] };
+break;
+case 131:
+ this.$ = {selid:'UNION',args:$$[$0-1] };
+break;
+case 132:
+ this.$ = {selid:'UNIONALL',args:$$[$0-1] };
+break;
+case 133:
+ this.$ = {selid:'ALL',args:[$$[$0-1]] };
+break;
+case 134:
+ this.$ = {selid:'ANY',args:[$$[$0-1]] };
+break;
+case 135:
+ this.$ = {selid:'INTERSECT',args:$$[$0-1] };
+break;
+case 136:
+ this.$ = {selid:'EXCEPT',args:$$[$0-1] };
+break;
+case 137:
+ this.$ = {selid:'AND',args:$$[$0-1] };
+break;
+case 138:
+ this.$ = {selid:'OR',args:$$[$0-1] };
+break;
+case 139:
+ this.$ = {selid:'PATH',args:[$$[$0-1]] };
+break;
+case 140:
+ this.$ = {srchid:'RETURN',args:$$[$0-1] };
+break;
+case 141:
+ this.$ = {selid:'REPEAT',sels:$$[$0-3], args:$$[$0-1] };
+break;
+case 142:
+ this.$ = $$[$0-2]; this.$.push($$[$0]);
+break;
+case 144:
+ this.$ = "PLUS";
+break;
+case 145:
+ this.$ = "STAR";
+break;
+case 146:
+ this.$ = "QUESTION";
+break;
+case 148:
+ this.$ = new yy.Select({ columns:$$[$0], distinct: true }); yy.extend(this.$, $$[$0-3]); yy.extend(this.$, $$[$0-1]);
+break;
+case 149:
+ this.$ = new yy.Select({ columns:$$[$0], distinct: true }); yy.extend(this.$, $$[$0-3]);yy.extend(this.$, $$[$0-1]);
+break;
+case 150:
+ this.$ = new yy.Select({ columns:$$[$0], all:true }); yy.extend(this.$, $$[$0-3]);yy.extend(this.$, $$[$0-1]);
+break;
+case 151:
+
+ if(!$$[$0]) {
+ this.$ = new yy.Select({columns:[new yy.Column({columnid:'_',})], modifier:'COLUMN'});
+ } else {
+ this.$ = new yy.Select({ columns:$$[$0] }); yy.extend(this.$, $$[$0-2]);yy.extend(this.$, $$[$0-1]);
+ }
+
+break;
+case 152:
+ if($$[$0]=='SELECT') this.$ = undefined; else this.$ = {modifier: $$[$0]};
+break;
+case 153:
+ this.$ = {modifier:'VALUE'}
+break;
+case 154:
+ this.$ = {modifier:'ROW'}
+break;
+case 155:
+ this.$ = {modifier:'COLUMN'}
+break;
+case 156:
+ this.$ = {modifier:'MATRIX'}
+break;
+case 157:
+ this.$ = {modifier:'TEXTSTRING'}
+break;
+case 158:
+ this.$ = {modifier:'INDEX'}
+break;
+case 159:
+ this.$ = {modifier:'RECORDSET'}
+break;
+case 160:
+ this.$ = {top: $$[$0-1], percent:(typeof $$[$0] != 'undefined'?true:undefined)};
+break;
+case 161:
+ this.$ = {top: $$[$0-1]};
+break;
+case 163: case 330: case 523: case 524: case 724:
+this.$ = undefined;
+break;
+case 164: case 165: case 166: case 167:
+this.$ = {into: $$[$0]}
+break;
+case 168:
+
+ var s = $$[$0];
+ s = s.substr(1,s.length-2);
+ var x3 = s.substr(-3).toUpperCase();
+ var x4 = s.substr(-4).toUpperCase();
+ if(s[0] == '#') {
+ this.$ = {into: new yy.FuncValue({funcid: 'HTML', args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
+ } else if(x3=='XLS' || x3 == 'CSV' || x3=='TAB') {
+ this.$ = {into: new yy.FuncValue({funcid: x3, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
+ } else if(x4=='XLSX' || x4 == 'JSON') {
+ this.$ = {into: new yy.FuncValue({funcid: x4, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
+ }
+
+break;
+case 169:
+ this.$ = { from: $$[$0] };
+break;
+case 170:
+ this.$ = { from: $$[$0-1], joins: $$[$0] };
+break;
+case 171:
+ this.$ = { from: $$[$0-2], joins: $$[$0-1] };
+break;
+case 173:
+ this.$ = new yy.Apply({select: $$[$0-2], applymode:'CROSS', as:$$[$0]});
+break;
+case 174:
+ this.$ = new yy.Apply({select: $$[$0-3], applymode:'CROSS', as:$$[$0]});
+break;
+case 175:
+ this.$ = new yy.Apply({select: $$[$0-2], applymode:'OUTER', as:$$[$0]});
+break;
+case 176:
+ this.$ = new yy.Apply({select: $$[$0-3], applymode:'OUTER', as:$$[$0]});
+break;
+case 178: case 243: case 452: case 530: case 531:
+ this.$ = $$[$0-2]; $$[$0-2].push($$[$0]);
+break;
+case 179:
+ this.$ = $$[$0-2]; this.$.as = $$[$0]
+break;
+case 180:
+ this.$ = $$[$0-3]; this.$.as = $$[$0]
+break;
+case 181:
+ this.$ = $$[$0-1]; this.$.as = 'default'
+break;
+case 182:
+ this.$ = new yy.Json({value:$$[$0-2]}); $$[$0-2].as = $$[$0]
+break;
+case 183:
+ this.$ = $$[$0-1]; $$[$0-1].as = $$[$0]
+break;
+case 184:
+ this.$ = $$[$0-2]; $$[$0-2].as = $$[$0]
+break;
+case 186: case 638: case 641:
+ this.$ = $$[$0-2];
+break;
+case 187: case 191: case 195: case 198:
+ this.$ = $$[$0-1]; $$[$0-1].as = $$[$0];
+break;
+case 188: case 192: case 196: case 199:
+ this.$ = $$[$0-2]; $$[$0-2].as = $$[$0];
+break;
+case 189: case 190: case 194: case 197:
+ this.$ = $$[$0]; $$[$0].as = 'default';
+break;
+case 193:
+ this.$ = {inserted:true}; /*$$[$0].as = 'default'*/;
+break;
+case 200:
+
+ var s = $$[$0];
+ s = s.substr(1,s.length-2);
+ var x3 = s.substr(-3).toUpperCase();
+ var x4 = s.substr(-4).toUpperCase();
+ var r;
+ if(s[0] == '#') {
+ r = new yy.FuncValue({funcid: 'HTML', args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
+ } else if(x3=='XLS' || x3 == 'CSV' || x3=='TAB') {
+ r = new yy.FuncValue({funcid: x3, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
+ } else if(x4=='XLSX' || x4 == 'JSON') {
+ r = new yy.FuncValue({funcid: x4, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
+ } else {
+ throw new Error('Unknown string in FROM clause');
+ };
+ this.$ = r;
+
+break;
+case 201:
+
+ if($$[$0-2] == 'INFORMATION_SCHEMA') {
+ this.$ = new yy.FuncValue({funcid: $$[$0-2], args:[new yy.StringValue({value:$$[$0]})]});
+ } else {
+ this.$ = new yy.Table({databaseid: $$[$0-2], tableid:$$[$0]});
+ }
+
+break;
+case 202:
+ this.$ = new yy.Table({tableid: $$[$0]});
+break;
+case 203: case 204:
+ this.$ = $$[$0-1]; $$[$0-1].push($$[$0]);
+break;
+case 207:
+ this.$ = new yy.Join($$[$0-2]); yy.extend(this.$, $$[$0-1]); yy.extend(this.$, $$[$0]);
+break;
+case 208:
+ this.$ = {table: $$[$0]};
+break;
+case 209:
+ this.$ = {table: $$[$0-1], as: $$[$0] } ;
+break;
+case 210:
+ this.$ = {table: $$[$0-2], as: $$[$0] } ;
+break;
+case 211:
+ this.$ = {json:new yy.Json({value:$$[$0-2],as:$$[$0]})};
+break;
+case 212:
+ this.$ = {param: $$[$0-1], as: $$[$0] } ;
+break;
+case 213:
+ this.$ = {param: $$[$0-2], as: $$[$0] } ;
+break;
+case 214:
+ this.$ = {select: $$[$0-2], as: $$[$0]} ;
+break;
+case 215:
+ this.$ = {select: $$[$0-3], as: $$[$0] } ;
+break;
+case 216:
+ this.$ = {func:$$[$0], as:'default'};
+break;
+case 217:
+ this.$ = {func:$$[$0-1], as: $$[$0]};
+break;
+case 218:
+ this.$ = {func:$$[$0-2], as: $$[$0]};
+break;
+case 219:
+ this.$ = {variable:$$[$0],as:'default'};
+break;
+case 220:
+ this.$ = {variable:$$[$0-1],as:$$[$0]};
+break;
+case 221:
+ this.$ = {variable:$$[$0-2],as:$$[$0]}
+break;
+case 222:
+ this.$ = { joinmode: $$[$0] } ;
+break;
+case 223:
+ this.$ = {joinmode: $$[$0-1], natural:true} ;
+break;
+case 224: case 225:
+ this.$ = "INNER";
+break;
+case 226: case 227:
+ this.$ = "LEFT";
+break;
+case 228: case 229:
+ this.$ = "RIGHT";
+break;
+case 230: case 231:
+ this.$ = "OUTER";
+break;
+case 232:
+ this.$ = "SEMI";
+break;
+case 233:
+ this.$ = "ANTI";
+break;
+case 234:
+ this.$ = "CROSS";
+break;
+case 235:
+ this.$ = {on: $$[$0]};
+break;
+case 236: case 697:
+ this.$ = {using: $$[$0]};
+break;
+case 239:
+ this.$ = {where: new yy.Expression({expression:$$[$0]})};
+break;
+case 241:
+ this.$ = {group:$$[$0-1]}; yy.extend(this.$,$$[$0]);
+break;
+case 244:
+ this.$ = new yy.GroupExpression({type:'GROUPING SETS', group: $$[$0-1]});
+break;
+case 245:
+ this.$ = new yy.GroupExpression({type:'ROLLUP', group: $$[$0-1]});
+break;
+case 246:
+ this.$ = new yy.GroupExpression({type:'CUBE', group: $$[$0-1]});
+break;
+case 249:
+ this.$ = {having:$$[$0]}
+break;
+case 251:
+ this.$ = {union: $$[$0]} ;
+break;
+case 252:
+ this.$ = {unionall: $$[$0]} ;
+break;
+case 253:
+ this.$ = {except: $$[$0]} ;
+break;
+case 254:
+ this.$ = {intersect: $$[$0]} ;
+break;
+case 255:
+ this.$ = {union: $$[$0], corresponding:true} ;
+break;
+case 256:
+ this.$ = {unionall: $$[$0], corresponding:true} ;
+break;
+case 257:
+ this.$ = {except: $$[$0], corresponding:true} ;
+break;
+case 258:
+ this.$ = {intersect: $$[$0], corresponding:true} ;
+break;
+case 260:
+ this.$ = {order:$$[$0]}
+break;
+case 262:
+ this.$ = $$[$0-2]; $$[$0-2].push($$[$0])
+break;
+case 263:
+ this.$ = new yy.Expression({expression: $$[$0], direction:'ASC'})
+break;
+case 264:
+ this.$ = new yy.Expression({expression: $$[$0-1], direction:$$[$0].toUpperCase()})
+break;
+case 265:
+ this.$ = new yy.Expression({expression: $$[$0-2], direction:'ASC', nocase:true})
+break;
+case 266:
+ this.$ = new yy.Expression({expression: $$[$0-3], direction:$$[$0].toUpperCase(), nocase:true})
+break;
+case 268:
+ this.$ = {limit:$$[$0-1]}; yy.extend(this.$, $$[$0]);
+break;
+case 269:
+ this.$ = {limit:$$[$0-2],offset:$$[$0-6]};
+break;
+case 271:
+ this.$ = {offset:$$[$0]};
+break;
+case 272: case 509: case 533: case 648: case 658: case 682: case 684: case 688:
+ $$[$0-2].push($$[$0]); this.$ = $$[$0-2];
+break;
+case 274: case 276: case 278:
+ $$[$0-2].as = $$[$0]; this.$ = $$[$0-2];
+break;
+case 275: case 277: case 279:
+ $$[$0-1].as = $$[$0]; this.$ = $$[$0-1];
+break;
+case 281:
+ this.$ = new yy.Column({columid: $$[$0], tableid: $$[$0-2], databaseid:$$[$0-4]});
+break;
+case 282:
+ this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2]});
+break;
+case 283:
+ this.$ = new yy.Column({columnid:$$[$0]});
+break;
+case 284:
+ this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2], databaseid:$$[$0-4]});
+break;
+case 285: case 286:
+ this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2]});
+break;
+case 287:
+ this.$ = new yy.Column({columnid: $$[$0]});
+break;
+case 302:
+ this.$ = new yy.DomainValueValue();
+break;
+case 303:
+ this.$ = new yy.Json({value:$$[$0]});
+break;
+case 306: case 307: case 308:
+
+ if(!yy.queries) yy.queries = [];
+ yy.queries.push($$[$0-1]);
+ $$[$0-1].queriesidx = yy.queries.length;
+ this.$ = $$[$0-1];
+
+break;
+case 309:
+this.$ = $$[$0]
+break;
+case 310:
+ this.$ = new yy.FuncValue({funcid:'CURRENT_TIMESTAMP'});
+break;
+case 311:
+ this.$ = new yy.JavaScript({value:$$[$0].substr(2,$$[$0].length-4)});
+break;
+case 312:
+ this.$ = new yy.JavaScript({value:'alasql.fn["'+$$[$0-2]+'"] = '+$$[$0].substr(2,$$[$0].length-4)});
+break;
+case 313:
+ this.$ = new yy.JavaScript({value:'alasql.aggr["'+$$[$0-2]+'"] = '+$$[$0].substr(2,$$[$0].length-4)});
+break;
+case 314:
+ this.$ = new yy.FuncValue({funcid:$$[$0], newid:true});
+break;
+case 315:
+ this.$ = $$[$0]; yy.extend(this.$,{newid:true});
+break;
+case 316:
+ this.$ = new yy.Convert({expression:$$[$0-3]}) ; yy.extend(this.$,$$[$0-1]) ;
+break;
+case 317:
+ this.$ = new yy.Convert({expression:$$[$0-5], style:$$[$0-1]}) ; yy.extend(this.$,$$[$0-3]) ;
+break;
+case 318:
+ this.$ = new yy.Convert({expression:$$[$0-1]}) ; yy.extend(this.$,$$[$0-3]) ;
+break;
+case 319:
+ this.$ = new yy.Convert({expression:$$[$0-3], style:$$[$0-1]}) ; yy.extend(this.$,$$[$0-5]) ;
+break;
+case 326:
+ this.$ = new yy.FuncValue({funcid:'CURRENT_TIMESTAMP'});
+break;
+case 327:
+
+ if($$[$0-2].length > 1 && ($$[$0-4].toUpperCase() == 'MAX' || $$[$0-4].toUpperCase() == 'MIN')) {
+ this.$ = new yy.FuncValue({funcid:$$[$0-4],args:$$[$0-2]});
+ } else {
+ this.$ = new yy.AggrValue({aggregatorid: $$[$0-4].toUpperCase(), expression: $$[$0-2].pop(), over:$$[$0]});
+ }
+
+break;
+case 328:
+ this.$ = new yy.AggrValue({aggregatorid: $$[$0-5].toUpperCase(), expression: $$[$0-2], distinct:true, over:$$[$0]});
+break;
+case 329:
+ this.$ = new yy.AggrValue({aggregatorid: $$[$0-5].toUpperCase(), expression: $$[$0-2],
+ over:$$[$0]});
+break;
+case 331: case 332:
+ this.$ = new yy.Over(); yy.extend(this.$,$$[$0-1]);
+break;
+case 333:
+ this.$ = new yy.Over(); yy.extend(this.$,$$[$0-2]); yy.extend(this.$,$$[$0-1]);
+break;
+case 334:
+ this.$ = {partition:$$[$0]};
+break;
+case 335:
+ this.$ = {order:$$[$0]};
+break;
+case 336:
+ this.$ = "SUM";
+break;
+case 337:
+ this.$ = "COUNT";
+break;
+case 338:
+ this.$ = "MIN";
+break;
+case 339: case 544:
+ this.$ = "MAX";
+break;
+case 340:
+ this.$ = "AVG";
+break;
+case 341:
+ this.$ = "FIRST";
+break;
+case 342:
+ this.$ = "LAST";
+break;
+case 343:
+ this.$ = "AGGR";
+break;
+case 344:
+ this.$ = "ARRAY";
+break;
+case 345:
+
+ var funcid = $$[$0-4];
+ var exprlist = $$[$0-1];
+ if(exprlist.length > 1 && (funcid.toUpperCase() == 'MIN' || funcid.toUpperCase() == 'MAX')) {
+ this.$ = new yy.FuncValue({funcid: funcid, args: exprlist});
+ } else if(alasql.aggr[$$[$0-4]]) {
+ this.$ = new yy.AggrValue({aggregatorid: 'REDUCE',
+ funcid: funcid, expression: exprlist.pop(),distinct:($$[$0-2]=='DISTINCT') });
+ } else {
+ this.$ = new yy.FuncValue({funcid: funcid, args: exprlist});
+ };
+
+break;
+case 346:
+ this.$ = new yy.FuncValue({ funcid: $$[$0-2] })
+break;
+case 347:
+ this.$ = new yy.FuncValue({ funcid: 'IIF', args:$$[$0-1] })
+break;
+case 348:
+ this.$ = new yy.FuncValue({ funcid: 'REPLACE', args:$$[$0-1] })
+break;
+case 349:
+ this.$ = new yy.FuncValue({ funcid: 'DATEADD', args:[new yy.StringValue({value:$$[$0-5]}),$$[$0-3],$$[$0-1]]})
+break;
+case 350:
+ this.$ = new yy.FuncValue({ funcid: 'DATEADD', args:[$$[$0-5],$$[$0-3],$$[$0-1]]})
+break;
+case 351:
+ this.$ = new yy.FuncValue({ funcid: 'DATEDIFF', args:[new yy.StringValue({value:$$[$0-5]}),$$[$0-3],$$[$0-1]]})
+break;
+case 352:
+ this.$ = new yy.FuncValue({ funcid: 'DATEDIFF', args:[$$[$0-5],$$[$0-3],$$[$0-1]]})
+break;
+case 353:
+ this.$ = new yy.FuncValue({ funcid: 'INTERVAL', args:[$$[$0-1],new yy.StringValue({value:($$[$0]).toLowerCase()})]});
+break;
+case 355:
+ $$[$0-2].push($$[$0]); this.$ = $$[$0-2]
+break;
+case 356:
+ this.$ = new yy.NumValue({value:+$$[$0]});
+break;
+case 357:
+ this.$ = new yy.LogicValue({value:true});
+break;
+case 358:
+ this.$ = new yy.LogicValue({value:false});
+break;
+case 359:
+ this.$ = new yy.StringValue({value: $$[$0].substr(1,$$[$0].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});
+break;
+case 360:
+ this.$ = new yy.StringValue({value: $$[$0].substr(2,$$[$0].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});
+break;
+case 361:
+ this.$ = new yy.NullValue({value:undefined});
+break;
+case 362:
+ this.$ = new yy.VarValue({variable:$$[$0]});
+break;
+case 363:
+
+ if(!yy.exists) yy.exists = [];
+ this.$ = new yy.ExistsValue({value:$$[$0-1], existsidx:yy.exists.length});
+ yy.exists.push($$[$0-1]);
+
+break;
+case 364:
+ this.$ = new yy.ArrayValue({value:$$[$0-1]});
+break;
+case 365: case 366:
+ this.$ = new yy.ParamValue({param: $$[$0]});
+break;
+case 367:
+
+ if(typeof yy.question == 'undefined') yy.question = 0;
+ this.$ = new yy.ParamValue({param: yy.question++});
+
+break;
+case 368:
+
+ if(typeof yy.question == 'undefined') yy.question = 0;
+ this.$ = new yy.ParamValue({param: yy.question++, array:true});
+
+break;
+case 369:
+ this.$ = new yy.CaseValue({expression:$$[$0-3], whens: $$[$0-2], elses: $$[$0-1]});
+break;
+case 370:
+ this.$ = new yy.CaseValue({whens: $$[$0-2], elses: $$[$0-1]});
+break;
+case 371: case 699: case 700:
+ this.$ = $$[$0-1]; this.$.push($$[$0]);
+break;
+case 373:
+ this.$ = {when: $$[$0-2], then: $$[$0] };
+break;
+case 376: case 377:
+ this.$ = new yy.Op({left:$$[$0-2], op:'REGEXP', right:$$[$0]});
+break;
+case 378:
+ this.$ = new yy.Op({left:$$[$0-2], op:'GLOB', right:$$[$0]});
+break;
+case 379:
+ this.$ = new yy.Op({left:$$[$0-2], op:'LIKE', right:$$[$0]});
+break;
+case 380:
+ this.$ = new yy.Op({left:$$[$0-4], op:'LIKE', right:$$[$0-2], escape:$$[$0]});
+break;
+case 381:
+ this.$ = new yy.Op({left:$$[$0-2], op:'NOT LIKE', right:$$[$0] });
+break;
+case 382:
+ this.$ = new yy.Op({left:$$[$0-4], op:'NOT LIKE', right:$$[$0-2], escape:$$[$0] });
+break;
+case 383:
+ this.$ = new yy.Op({left:$$[$0-2], op:'||', right:$$[$0]});
+break;
+case 384:
+ this.$ = new yy.Op({left:$$[$0-2], op:'+', right:$$[$0]});
+break;
+case 385:
+ this.$ = new yy.Op({left:$$[$0-2], op:'-', right:$$[$0]});
+break;
+case 386:
+ this.$ = new yy.Op({left:$$[$0-2], op:'*', right:$$[$0]});
+break;
+case 387:
+ this.$ = new yy.Op({left:$$[$0-2], op:'/', right:$$[$0]});
+break;
+case 388:
+ this.$ = new yy.Op({left:$$[$0-2], op:'%', right:$$[$0]});
+break;
+case 389:
+ this.$ = new yy.Op({left:$$[$0-2], op:'^', right:$$[$0]});
+break;
+case 390:
+ this.$ = new yy.Op({left:$$[$0-2], op:'>>', right:$$[$0]});
+break;
+case 391:
+ this.$ = new yy.Op({left:$$[$0-2], op:'<<', right:$$[$0]});
+break;
+case 392:
+ this.$ = new yy.Op({left:$$[$0-2], op:'&', right:$$[$0]});
+break;
+case 393:
+ this.$ = new yy.Op({left:$$[$0-2], op:'|', right:$$[$0]});
+break;
+case 394: case 395: case 397:
+ this.$ = new yy.Op({left:$$[$0-2], op:'->' , right:$$[$0]});
+break;
+case 396:
+ this.$ = new yy.Op({left:$$[$0-4], op:'->' , right:$$[$0-1]});
+break;
+case 398: case 399: case 401:
+ this.$ = new yy.Op({left:$$[$0-2], op:'!' , right:$$[$0]});
+break;
+case 400:
+ this.$ = new yy.Op({left:$$[$0-4], op:'!' , right:$$[$0-1]});
+break;
+case 402:
+ this.$ = new yy.Op({left:$$[$0-2], op:'>' , right:$$[$0]});
+break;
+case 403:
+ this.$ = new yy.Op({left:$$[$0-2], op:'>=' , right:$$[$0]});
+break;
+case 404:
+ this.$ = new yy.Op({left:$$[$0-2], op:'<' , right:$$[$0]});
+break;
+case 405:
+ this.$ = new yy.Op({left:$$[$0-2], op:'<=' , right:$$[$0]});
+break;
+case 406:
+ this.$ = new yy.Op({left:$$[$0-2], op:'=' , right:$$[$0]});
+break;
+case 407:
+ this.$ = new yy.Op({left:$$[$0-2], op:'==' , right:$$[$0]});
+break;
+case 408:
+ this.$ = new yy.Op({left:$$[$0-2], op:'===' , right:$$[$0]});
+break;
+case 409:
+ this.$ = new yy.Op({left:$$[$0-2], op:'!=' , right:$$[$0]});
+break;
+case 410:
+ this.$ = new yy.Op({left:$$[$0-2], op:'!==' , right:$$[$0]});
+break;
+case 411:
+ this.$ = new yy.Op({left:$$[$0-2], op:'!===' , right:$$[$0]});
+break;
+case 412:
+
+ if(!yy.queries) yy.queries = [];
+ this.$ = new yy.Op({left:$$[$0-5], op:$$[$0-4] , allsome:$$[$0-3], right:$$[$0-1], queriesidx: yy.queries.length});
+ yy.queries.push($$[$0-1]);
+
+break;
+case 413:
+
+ this.$ = new yy.Op({left:$$[$0-5], op:$$[$0-4] , allsome:$$[$0-3], right:$$[$0-1]});
+
+break;
+case 414:
+
+ if($$[$0-2].op == 'BETWEEN1') {
+
+ if($$[$0-2].left.op == 'AND') {
+ this.$ = new yy.Op({left:$$[$0-2].left.left,op:'AND',right:
+ new yy.Op({left:$$[$0-2].left.right, op:'BETWEEN',
+ right1:$$[$0-2].right, right2:$$[$0]})
+ });
+ } else {
+ this.$ = new yy.Op({left:$$[$0-2].left, op:'BETWEEN',
+ right1:$$[$0-2].right, right2:$$[$0]});
+ }
+
+ } else if($$[$0-2].op == 'NOT BETWEEN1') {
+ if($$[$0-2].left.op == 'AND') {
+ this.$ = new yy.Op({left:$$[$0-2].left.left,op:'AND',right:
+ new yy.Op({left:$$[$0-2].left.right, op:'NOT BETWEEN',
+ right1:$$[$0-2].right, right2:$$[$0]})
+ });
+ } else {
+ this.$ = new yy.Op({left:$$[$0-2].left, op:'NOT BETWEEN',
+ right1:$$[$0-2].right, right2:$$[$0]});
+ }
+ } else {
+ this.$ = new yy.Op({left:$$[$0-2], op:'AND', right:$$[$0]});
+ }
+
+break;
+case 415:
+ this.$ = new yy.Op({left:$$[$0-2], op:'OR' , right:$$[$0]});
+break;
+case 416:
+ this.$ = new yy.UniOp({op:'NOT' , right:$$[$0]});
+break;
+case 417:
+ this.$ = new yy.UniOp({op:'-' , right:$$[$0]});
+break;
+case 418:
+ this.$ = new yy.UniOp({op:'+' , right:$$[$0]});
+break;
+case 419:
+ this.$ = new yy.UniOp({op:'~' , right:$$[$0]});
+break;
+case 420:
+ this.$ = new yy.UniOp({op:'#' , right:$$[$0]});
+break;
+case 421:
+ this.$ = new yy.UniOp({right: $$[$0-1]});
+break;
+case 422:
+
+ if(!yy.queries) yy.queries = [];
+ this.$ = new yy.Op({left: $$[$0-4], op:'IN', right:$$[$0-1], queriesidx: yy.queries.length});
+ yy.queries.push($$[$0-1]);
+
+break;
+case 423:
+
+ if(!yy.queries) yy.queries = [];
+ this.$ = new yy.Op({left: $$[$0-5], op:'NOT IN', right:$$[$0-1], queriesidx: yy.queries.length});
+ yy.queries.push($$[$0-1]);
+
+break;
+case 424:
+ this.$ = new yy.Op({left: $$[$0-4], op:'IN', right:$$[$0-1]});
+break;
+case 425:
+ this.$ = new yy.Op({left: $$[$0-5], op:'NOT IN', right:$$[$0-1]});
+break;
+case 426:
+ this.$ = new yy.Op({left: $$[$0-3], op:'IN', right:[]});
+break;
+case 427:
+ this.$ = new yy.Op({left: $$[$0-4], op:'NOT IN', right:[]});
+break;
+case 428: case 430:
+ this.$ = new yy.Op({left: $$[$0-2], op:'IN', right:$$[$0]});
+break;
+case 429: case 431:
+ this.$ = new yy.Op({left: $$[$0-3], op:'NOT IN', right:$$[$0]});
+break;
+case 432:
+
+/* var expr = $$[$0];
+ if(expr.left && expr.left.op == 'AND') {
+ this.$ = new yy.Op({left:new yy.Op({left:$$[$0-2], op:'BETWEEN', right:expr.left}), op:'AND', right:expr.right });
+ } else {
+*/
+ this.$ = new yy.Op({left:$$[$0-2], op:'BETWEEN1', right:$$[$0] });
+
+break;
+case 433:
+
+ this.$ = new yy.Op({left:$$[$0-2], op:'NOT BETWEEN1', right:$$[$0] });
+
+break;
+case 434:
+ this.$ = new yy.Op({op:'IS' , left:$$[$0-2], right:$$[$0]});
+break;
+case 435:
+
+ this.$ = new yy.Op({
+ op:'IS',
+ left:$$[$0-2],
+ right: new yy.UniOp({
+ op:'NOT',
+ right:new yy.NullValue({value:undefined})
+ })
+ });
+
+break;
+case 436:
+ this.$ = new yy.Convert({expression:$$[$0-2]}) ; yy.extend(this.$,$$[$0]) ;
+break;
+case 437: case 438:
+ this.$ = $$[$0];
+break;
+case 439:
+ this.$ = $$[$0-1];
+break;
+case 446:
+ this.$ = 'ALL';
+break;
+case 447:
+ this.$ = 'SOME';
+break;
+case 448:
+ this.$ = 'ANY';
+break;
+case 449:
+ this.$ = new yy.Update({table:$$[$0-4], columns:$$[$0-2], where:$$[$0]});
+break;
+case 450:
+ this.$ = new yy.Update({table:$$[$0-2], columns:$$[$0]});
+break;
+case 453:
+ this.$ = new yy.SetColumn({column:$$[$0-2], expression:$$[$0]})
+break;
+case 454:
+ this.$ = new yy.SetColumn({variable:$$[$0-2], expression:$$[$0], method:$$[$0-3]})
+break;
+case 455:
+ this.$ = new yy.Delete({table:$$[$0-2], where:$$[$0]});
+break;
+case 456:
+ this.$ = new yy.Delete({table:$$[$0]});
+break;
+case 457:
+ this.$ = new yy.Insert({into:$$[$0-2], values: $$[$0]});
+break;
+case 458:
+ this.$ = new yy.Insert({into:$$[$0-1], values: $$[$0]});
+break;
+case 459: case 461:
+ this.$ = new yy.Insert({into:$$[$0-2], values: $$[$0], orreplace:true});
+break;
+case 460: case 462:
+ this.$ = new yy.Insert({into:$$[$0-1], values: $$[$0], orreplace:true});
+break;
+case 463:
+ this.$ = new yy.Insert({into:$$[$0-2], "default": true}) ;
+break;
+case 464:
+ this.$ = new yy.Insert({into:$$[$0-5], columns: $$[$0-3], values: $$[$0]});
+break;
+case 465:
+ this.$ = new yy.Insert({into:$$[$0-4], columns: $$[$0-2], values: $$[$0]});
+break;
+case 466:
+ this.$ = new yy.Insert({into:$$[$0-1], select: $$[$0]});
+break;
+case 467:
+ this.$ = new yy.Insert({into:$$[$0-1], select: $$[$0], orreplace:true});
+break;
+case 468:
+ this.$ = new yy.Insert({into:$$[$0-4], columns: $$[$0-2], select: $$[$0]});
+break;
+case 473:
+ this.$ = [$$[$0-1]];
+break;
+case 476:
+this.$ = $$[$0-4]; $$[$0-4].push($$[$0-1])
+break;
+case 477: case 478: case 480: case 488:
+this.$ = $$[$0-2]; $$[$0-2].push($$[$0])
+break;
+case 489:
+
+ this.$ = new yy.CreateTable({table:$$[$0-4]});
+ yy.extend(this.$,$$[$0-7]);
+ yy.extend(this.$,$$[$0-6]);
+ yy.extend(this.$,$$[$0-5]);
+ yy.extend(this.$,$$[$0-2]);
+ yy.extend(this.$,$$[$0]);
+
+break;
+case 490:
+
+ this.$ = new yy.CreateTable({table:$$[$0]});
+ yy.extend(this.$,$$[$0-3]);
+ yy.extend(this.$,$$[$0-2]);
+ yy.extend(this.$,$$[$0-1]);
+
+break;
+case 492:
+ this.$ = {class:true};
+break;
+case 502:
+ this.$ = {temporary:true};
+break;
+case 504:
+ this.$ = {ifnotexists: true};
+break;
+case 505:
+ this.$ = {columns: $$[$0-2], constraints: $$[$0]};
+break;
+case 506:
+ this.$ = {columns: $$[$0]};
+break;
+case 507:
+ this.$ = {as: $$[$0]}
+break;
+case 508: case 532:
+ this.$ = [$$[$0]];
+break;
+case 510: case 511: case 512: case 513: case 514:
+ $$[$0].constraintid = $$[$0-1]; this.$ = $$[$0];
+break;
+case 517:
+ this.$ = {type: 'CHECK', expression: $$[$0-1]};
+break;
+case 518:
+ this.$ = {type: 'PRIMARY KEY', columns: $$[$0-1], clustered:($$[$0-3]+'').toUpperCase()};
+break;
+case 519:
+ this.$ = {type: 'FOREIGN KEY', columns: $$[$0-5], fktable: $$[$0-2], fkcolumns: $$[$0-1]};
+break;
+case 525:
+
+ this.$ = {type: 'UNIQUE', columns: $$[$0-1], clustered:($$[$0-3]+'').toUpperCase()};
+
+break;
+case 534:
+ this.$ = new yy.ColumnDef({columnid:$$[$0-2]}); yy.extend(this.$,$$[$0-1]); yy.extend(this.$,$$[$0]);
+break;
+case 535:
+ this.$ = new yy.ColumnDef({columnid:$$[$0-1]}); yy.extend(this.$,$$[$0]);
+break;
+case 536:
+ this.$ = new yy.ColumnDef({columnid:$$[$0], dbtypeid: ''});
+break;
+case 537:
+ this.$ = {dbtypeid: $$[$0-5], dbsize: $$[$0-3], dbprecision: +$$[$0-1]}
+break;
+case 538:
+ this.$ = {dbtypeid: $$[$0-3], dbsize: $$[$0-1]}
+break;
+case 539:
+ this.$ = {dbtypeid: $$[$0]}
+break;
+case 540:
+ this.$ = {dbtypeid: 'ENUM', enumvalues: $$[$0-1]}
+break;
+case 541:
+ this.$ = $$[$0-1]; $$[$0-1].dbtypeid += '[' + $$[$0] + ']';
+break;
+case 543: case 750:
+ this.$ = +$$[$0];
+break;
+case 545:
+this.$ = undefined
+break;
+case 547:
+
+ yy.extend($$[$0-1],$$[$0]); this.$ = $$[$0-1];
+
+break;
+case 550:
+this.$ = {primarykey:true};
+break;
+case 551: case 552:
+this.$ = {foreignkey:{table:$$[$0-1], columnid: $$[$0]}};
+break;
+case 553:
+ this.$ = {identity: {value:$$[$0-3],step:$$[$0-1]}}
+break;
+case 554:
+ this.$ = {identity: {value:1,step:1}}
+break;
+case 555: case 557:
+this.$ = {"default":$$[$0]};
+break;
+case 556:
+this.$ = {"default":$$[$0-1]};
+break;
+case 558:
+this.$ = {null:true};
+break;
+case 559:
+this.$ = {notnull:true};
+break;
+case 560:
+this.$ = {check:$$[$0]};
+break;
+case 561:
+this.$ = {unique:true};
+break;
+case 562:
+this.$ = {"onupdate":$$[$0]};
+break;
+case 563:
+this.$ = {"onupdate":$$[$0-1]};
+break;
+case 564:
+ this.$ = new yy.DropTable({tables:$$[$0],type:$$[$0-2]}); yy.extend(this.$, $$[$0-1]);
+break;
+case 568:
+ this.$ = {ifexists: true};
+break;
+case 569:
+ this.$ = new yy.AlterTable({table:$$[$0-3], renameto: $$[$0]});
+break;
+case 570:
+ this.$ = new yy.AlterTable({table:$$[$0-3], addcolumn: $$[$0]});
+break;
+case 571:
+ this.$ = new yy.AlterTable({table:$$[$0-3], modifycolumn: $$[$0]});
+break;
+case 572:
+ this.$ = new yy.AlterTable({table:$$[$0-5], renamecolumn: $$[$0-2], to: $$[$0]});
+break;
+case 573:
+ this.$ = new yy.AlterTable({table:$$[$0-3], dropcolumn: $$[$0]});
+break;
+case 574:
+ this.$ = new yy.AlterTable({table:$$[$0-2], renameto: $$[$0]});
+break;
+case 575:
+ this.$ = new yy.AttachDatabase({databaseid:$$[$0], engineid:$$[$0-2].toUpperCase() });
+break;
+case 576:
+ this.$ = new yy.AttachDatabase({databaseid:$$[$0-3], engineid:$$[$0-5].toUpperCase(), args:$$[$0-1] });
+break;
+case 577:
+ this.$ = new yy.AttachDatabase({databaseid:$$[$0-2], engineid:$$[$0-4].toUpperCase(), as:$$[$0] });
+break;
+case 578:
+ this.$ = new yy.AttachDatabase({databaseid:$$[$0-5], engineid:$$[$0-7].toUpperCase(), as:$$[$0], args:$$[$0-3]});
+break;
+case 579:
+ this.$ = new yy.DetachDatabase({databaseid:$$[$0]});
+break;
+case 580:
+ this.$ = new yy.CreateDatabase({databaseid:$$[$0] }); yy.extend(this.$,$$[$0]);
+break;
+case 581:
+ this.$ = new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(), databaseid:$$[$0-1], as:$$[$0] }); yy.extend(this.$,$$[$0-2]);
+break;
+case 582:
+ this.$ = new yy.CreateDatabase({engineid:$$[$0-7].toUpperCase(), databaseid:$$[$0-4], args:$$[$0-2], as:$$[$0] }); yy.extend(this.$,$$[$0-5]);
+break;
+case 583:
+ this.$ = new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),
+ as:$$[$0], args:[$$[$0-1]] }); yy.extend(this.$,$$[$0-2]);
+break;
+case 584:
+this.$ = undefined;
+break;
+case 586: case 587:
+ this.$ = new yy.UseDatabase({databaseid: $$[$0] });
+break;
+case 588:
+ this.$ = new yy.DropDatabase({databaseid: $$[$0] }); yy.extend(this.$,$$[$0-1]);
+break;
+case 589: case 590:
+ this.$ = new yy.DropDatabase({databaseid: $$[$0], engineid:$$[$0-3].toUpperCase() }); yy.extend(this.$,$$[$0-1]);
+break;
+case 591:
+ this.$ = new yy.CreateIndex({indexid:$$[$0-5], table:$$[$0-3], columns:$$[$0-1]})
+break;
+case 592:
+ this.$ = new yy.CreateIndex({indexid:$$[$0-5], table:$$[$0-3], columns:$$[$0-1], unique:true})
+break;
+case 593:
+ this.$ = new yy.DropIndex({indexid:$$[$0]});
+break;
+case 594:
+ this.$ = new yy.ShowDatabases();
+break;
+case 595:
+ this.$ = new yy.ShowDatabases({like:$$[$0]});
+break;
+case 596:
+ this.$ = new yy.ShowDatabases({engineid:$$[$0-1].toUpperCase() });
+break;
+case 597:
+ this.$ = new yy.ShowDatabases({engineid:$$[$0-3].toUpperCase() , like:$$[$0]});
+break;
+case 598:
+ this.$ = new yy.ShowTables();
+break;
+case 599:
+ this.$ = new yy.ShowTables({like:$$[$0]});
+break;
+case 600:
+ this.$ = new yy.ShowTables({databaseid: $$[$0]});
+break;
+case 601:
+ this.$ = new yy.ShowTables({like:$$[$0], databaseid: $$[$0-2]});
+break;
+case 602:
+ this.$ = new yy.ShowColumns({table: $$[$0]});
+break;
+case 603:
+ this.$ = new yy.ShowColumns({table: $$[$0-2], databaseid:$$[$0]});
+break;
+case 604:
+ this.$ = new yy.ShowIndex({table: $$[$0]});
+break;
+case 605:
+ this.$ = new yy.ShowIndex({table: $$[$0-2], databaseid: $$[$0]});
+break;
+case 606:
+ this.$ = new yy.ShowCreateTable({table: $$[$0]});
+break;
+case 607:
+ this.$ = new yy.ShowCreateTable({table: $$[$0-2], databaseid:$$[$0]});
+break;
+case 608:
+
+ this.$ = new yy.CreateTable({table:$$[$0-6],view:true,select:$$[$0-1],viewcolumns:$$[$0-4]});
+ yy.extend(this.$,$$[$0-9]);
+ yy.extend(this.$,$$[$0-7]);
+
+break;
+case 609:
+
+ this.$ = new yy.CreateTable({table:$$[$0-3],view:true,select:$$[$0-1]});
+ yy.extend(this.$,$$[$0-6]);
+ yy.extend(this.$,$$[$0-4]);
+
+break;
+case 613:
+ this.$ = new yy.DropTable({tables:$$[$0], view:true}); yy.extend(this.$, $$[$0-1]);
+break;
+case 614: case 760:
+ this.$ = new yy.ExpressionStatement({expression:$$[$0]});
+break;
+case 615:
+ this.$ = new yy.Source({url:$$[$0].value});
+break;
+case 616:
+ this.$ = new yy.Assert({value:$$[$0]});
+break;
+case 617:
+ this.$ = new yy.Assert({value:$$[$0].value});
+break;
+case 618:
+ this.$ = new yy.Assert({value:$$[$0], message:$$[$0-2]});
+break;
+case 620: case 631: case 633:
+ this.$ = $$[$0].value;
+break;
+case 621: case 629:
+ this.$ = +$$[$0].value;
+break;
+case 622:
+ this.$ = (!!$$[$0].value);
+break;
+case 630:
+ this.$ = ""+$$[$0].value;
+break;
+case 639:
+ this.$ = {};
+break;
+case 642:
+ this.$ = [];
+break;
+case 643:
+ yy.extend($$[$0-2],$$[$0]); this.$ = $$[$0-2];
+break;
+case 645:
+ this.$ = {}; this.$[$$[$0-2].substr(1,$$[$0-2].length-2)] = $$[$0];
+break;
+case 646: case 647:
+ this.$ = {}; this.$[$$[$0-2]] = $$[$0];
+break;
+case 650:
+ this.$ = new yy.SetVariable({variable:$$[$0-2].toLowerCase(), value:$$[$0]});
+break;
+case 651:
+ this.$ = new yy.SetVariable({variable:$$[$0-1].toLowerCase(), value:$$[$0]});
+break;
+case 652:
+ this.$ = new yy.SetVariable({variable:$$[$0-2], expression:$$[$0]});
+break;
+case 653:
+ this.$ = new yy.SetVariable({variable:$$[$0-3], props: $$[$0-2], expression:$$[$0]});
+break;
+case 654:
+ this.$ = new yy.SetVariable({variable:$$[$0-2], expression:$$[$0], method:$$[$0-3]});
+break;
+case 655:
+ this.$ = new yy.SetVariable({variable:$$[$0-3], props: $$[$0-2], expression:$$[$0], method:$$[$0-4]});
+break;
+case 656:
+this.$ = '@';
+break;
+case 657:
+this.$ = '$';
+break;
+case 663:
+ this.$ = true;
+break;
+case 664:
+ this.$ = false;
+break;
+case 665:
+ this.$ = new yy.CommitTransaction();
+break;
+case 666:
+ this.$ = new yy.RollbackTransaction();
+break;
+case 667:
+ this.$ = new yy.BeginTransaction();
+break;
+case 668:
+ this.$ = new yy.If({expression:$$[$0-2],thenstat:$$[$0-1], elsestat:$$[$0]});
+ if($$[$0-1].exists) this.$.exists = $$[$0-1].exists;
+ if($$[$0-1].queries) this.$.queries = $$[$0-1].queries;
+
+break;
+case 669:
+
+ this.$ = new yy.If({expression:$$[$0-1],thenstat:$$[$0]});
+ if($$[$0].exists) this.$.exists = $$[$0].exists;
+ if($$[$0].queries) this.$.queries = $$[$0].queries;
+
+break;
+case 670:
+this.$ = $$[$0];
+break;
+case 671:
+ this.$ = new yy.While({expression:$$[$0-1],loopstat:$$[$0]});
+ if($$[$0].exists) this.$.exists = $$[$0].exists;
+ if($$[$0].queries) this.$.queries = $$[$0].queries;
+
+break;
+case 672:
+ this.$ = new yy.Continue();
+break;
+case 673:
+ this.$ = new yy.Break();
+break;
+case 674:
+ this.$ = new yy.BeginEnd({statements:$$[$0-1]});
+break;
+case 675:
+ this.$ = new yy.Print({exprs:$$[$0]});
+break;
+case 676:
+ this.$ = new yy.Print({select:$$[$0]});
+break;
+case 677:
+ this.$ = new yy.Require({paths:$$[$0]});
+break;
+case 678:
+ this.$ = new yy.Require({plugins:$$[$0]});
+break;
+case 679: case 680:
+this.$ = $$[$0].toUpperCase();
+break;
+case 681:
+ this.$ = new yy.Echo({expr:$$[$0]});
+break;
+case 686:
+ this.$ = new yy.Declare({declares:$$[$0]});
+break;
+case 689:
+ this.$ = {variable: $$[$0-1]}; yy.extend(this.$,$$[$0]);
+break;
+case 690:
+ this.$ = {variable: $$[$0-2]}; yy.extend(this.$,$$[$0]);
+break;
+case 691:
+ this.$ = {variable: $$[$0-3], expression:$$[$0]}; yy.extend(this.$,$$[$0-2]);
+break;
+case 692:
+ this.$ = {variable: $$[$0-4], expression:$$[$0]}; yy.extend(this.$,$$[$0-2]);
+break;
+case 693:
+ this.$ = new yy.TruncateTable({table:$$[$0]});
+break;
+case 694:
+
+ this.$ = new yy.Merge(); yy.extend(this.$,$$[$0-4]); yy.extend(this.$,$$[$0-3]);
+ yy.extend(this.$,$$[$0-2]);
+ yy.extend(this.$,{matches:$$[$0-1]});yy.extend(this.$,$$[$0]);
+
+break;
+case 695: case 696:
+ this.$ = {into: $$[$0]};
+break;
+case 698:
+ this.$ = {on:$$[$0]};
+break;
+case 703:
+ this.$ = {matched:true, action:$$[$0]}
+break;
+case 704:
+ this.$ = {matched:true, expr: $$[$0-2], action:$$[$0]}
+break;
+case 705:
+ this.$ = {delete:true};
+break;
+case 706:
+ this.$ = {update:$$[$0]};
+break;
+case 707: case 708:
+ this.$ = {matched:false, bytarget: true, action:$$[$0]}
+break;
+case 709: case 710:
+ this.$ = {matched:false, bytarget: true, expr:$$[$0-2], action:$$[$0]}
+break;
+case 711:
+ this.$ = {matched:false, bysource: true, action:$$[$0]}
+break;
+case 712:
+ this.$ = {matched:false, bysource: true, expr:$$[$0-2], action:$$[$0]}
+break;
+case 713:
+ this.$ = {insert:true, values:$$[$0]};
+break;
+case 714:
+ this.$ = {insert:true, values:$$[$0], columns:$$[$0-3]};
+break;
+case 715:
+ this.$ = {insert:true, defaultvalues:true};
+break;
+case 716:
+ this.$ = {insert:true, defaultvalues:true, columns:$$[$0-3]};
+break;
+case 718:
+ this.$ = {output:{columns:$$[$0]}}
+break;
+case 719:
+ this.$ = {output:{columns:$$[$0-3], intovar: $$[$0], method:$$[$0-1]}}
+break;
+case 720:
+ this.$ = {output:{columns:$$[$0-2], intotable: $$[$0]}}
+break;
+case 721:
+ this.$ = {output:{columns:$$[$0-5], intotable: $$[$0-3], intocolumns:$$[$0-1]}}
+break;
+case 722:
+
+ this.$ = new yy.CreateVertex({class:$$[$0-3],sharp:$$[$0-2], name:$$[$0-1]});
+ yy.extend(this.$,$$[$0]);
+
+break;
+case 725:
+ this.$ = {sets:$$[$0]};
+break;
+case 726:
+ this.$ = {content:$$[$0]};
+break;
+case 727:
+ this.$ = {select:$$[$0]};
+break;
+case 728:
+
+ this.$ = new yy.CreateEdge({from:$$[$0-3],to:$$[$0-1],name:$$[$0-5]});
+ yy.extend(this.$,$$[$0]);
+
+break;
+case 729:
+ this.$ = new yy.CreateGraph({graph:$$[$0]});
+break;
+case 730:
+ this.$ = new yy.CreateGraph({from:$$[$0]});
+break;
+case 733:
+
+ this.$ = $$[$0-2];
+ if($$[$0-1]) this.$.json = new yy.Json({value:$$[$0-1]});
+ if($$[$0]) this.$.as = $$[$0];
+
+break;
+case 734:
+
+ this.$ = {source:$$[$0-6], target: $$[$0]};
+ if($$[$0-3]) this.$.json = new yy.Json({value:$$[$0-3]});
+ if($$[$0-2]) this.$.as = $$[$0-2];
+ yy.extend(this.$,$$[$0-4]);
+
+break;
+case 735:
+
+ this.$ = {source:$$[$0-5], target: $$[$0]};
+ if($$[$0-2]) this.$.json = new yy.Json({value:$$[$0-3]});
+ if($$[$0-1]) this.$.as = $$[$0-2];
+
+break;
+case 736:
+
+ this.$ = {source:$$[$0-2], target: $$[$0]};
+
+break;
+case 740:
+ this.$ = {vars:$$[$0], method:$$[$0-1]};
+break;
+case 743: case 744:
+
+ var s3 = $$[$0-1];
+ this.$ = {prop:$$[$0-3], sharp:$$[$0-2], name:(typeof s3 == 'undefined')?undefined:s3.substr(1,s3.length-2), class:$$[$0]};
+
+break;
+case 745:
+
+ var s2 = $$[$0-1];
+ this.$ = {sharp:$$[$0-2], name:(typeof s2 == 'undefined')?undefined:s2.substr(1,s2.length-2), class:$$[$0]};
+
+break;
+case 746:
+
+ var s1 = $$[$0-1];
+ this.$ = {name:(typeof s1 == 'undefined')?undefined:s1.substr(1,s1.length-2), class:$$[$0]};
+
+break;
+case 747:
+
+ this.$ = {class:$$[$0]};
+
+break;
+case 753:
+ this.$ = new yy.AddRule({left:$$[$0-2], right:$$[$0]});
+break;
+case 754:
+ this.$ = new yy.AddRule({right:$$[$0]});
+break;
+case 757:
+ this.$ = new yy.Term({termid:$$[$0]});
+break;
+case 758:
+ this.$ = new yy.Term({termid:$$[$0-3],args:$$[$0-1]});
+break;
+case 761:
+
+ this.$ = new yy.CreateTrigger({trigger:$$[$0-6], when:$$[$0-5], action:$$[$0-4], table:$$[$0-2], statement:$$[$0]});
+ if($$[$0].exists) this.$.exists = $$[$0].exists;
+ if($$[$0].queries) this.$.queries = $$[$0].queries;
+
+break;
+case 762:
+
+ this.$ = new yy.CreateTrigger({trigger:$$[$0-5], when:$$[$0-4], action:$$[$0-3], table:$$[$0-1], funcid:$$[$0]});
+
+break;
+case 763:
+
+ this.$ = new yy.CreateTrigger({trigger:$$[$0-6], when:$$[$0-4], action:$$[$0-3], table:$$[$0-5], statement:$$[$0]});
+ if($$[$0].exists) this.$.exists = $$[$0].exists;
+ if($$[$0].queries) this.$.queries = $$[$0].queries;
+
+break;
+case 764: case 765: case 767:
+ this.$ = 'AFTER';
+break;
+case 766:
+ this.$ = 'BEFORE';
+break;
+case 768:
+ this.$ = 'INSTEADOF';
+break;
+case 769:
+ this.$ = 'INSERT';
+break;
+case 770:
+ this.$ = 'DELETE';
+break;
+case 771:
+ this.$ = 'UPDATE';
+break;
+case 772:
+ this.$ = new yy.DropTrigger({trigger:$$[$0]});
+break;
+case 773:
+ this.$ = new yy.Reindex({indexid:$$[$0]});
+break;
+case 1047: case 1067: case 1069: case 1071: case 1075: case 1077: case 1079: case 1081: case 1083: case 1085:
+this.$ = [];
+break;
+case 1048: case 1062: case 1064: case 1068: case 1070: case 1072: case 1076: case 1078: case 1080: case 1082: case 1084: case 1086:
+$$[$0-1].push($$[$0]);
+break;
+case 1061: case 1063:
+this.$ = [$$[$0]];
+break;
+}
+},
+table: [o([10,602,764],$V0,{8:1,9:2,12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,2:$V1,4:$V2,5:$V3,14:$V4,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{1:[3]},{10:[1,105],11:106,602:$VH,764:$VI},o($VJ,[2,8]),o($VJ,[2,9]),o($VK,[2,12]),o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:109,2:$V1,4:$V2,5:$V3,15:[1,110],53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,14]),o($VK,[2,15]),o($VK,[2,16]),o($VK,[2,17]),o($VK,[2,18]),o($VK,[2,19]),o($VK,[2,20]),o($VK,[2,21]),o($VK,[2,22]),o($VK,[2,23]),o($VK,[2,24]),o($VK,[2,25]),o($VK,[2,26]),o($VK,[2,27]),o($VK,[2,28]),o($VK,[2,29]),o($VK,[2,30]),o($VK,[2,31]),o($VK,[2,32]),o($VK,[2,33]),o($VK,[2,34]),o($VK,[2,35]),o($VK,[2,36]),o($VK,[2,37]),o($VK,[2,38]),o($VK,[2,39]),o($VK,[2,40]),o($VK,[2,41]),o($VK,[2,42]),o($VK,[2,43]),o($VK,[2,44]),o($VK,[2,45]),o($VK,[2,46]),o($VK,[2,47]),o($VK,[2,48]),o($VK,[2,49]),o($VK,[2,50]),o($VK,[2,51]),o($VK,[2,52]),o($VK,[2,53]),o($VK,[2,54]),o($VK,[2,55]),o($VK,[2,56]),o($VK,[2,57]),o($VK,[2,58]),o($VK,[2,59]),o($VK,[2,60]),o($VK,[2,61]),o($VK,[2,62]),o($VK,[2,63]),o($VK,[2,64]),o($VK,[2,65]),o($VK,[2,66]),o($VK,[2,67]),{353:[1,111]},{2:$V1,3:112,4:$V2,5:$V3},{2:$V1,3:114,4:$V2,5:$V3,156:$VL,200:113,290:$VM,291:$VN,292:$VO,293:$VP},o($VQ,[2,501],{3:121,348:125,2:$V1,4:$V2,5:$V3,134:$VR,135:$VS,187:[1,123],193:[1,122],268:[1,129],269:[1,130],357:[1,131],405:[1,120],472:[1,124],509:[1,128]}),{145:$VT,449:132,450:133},{183:[1,135]},{405:[1,136]},{2:$V1,3:138,4:$V2,5:$V3,130:[1,144],193:[1,139],353:[1,143],397:140,405:[1,137],410:[1,141],509:[1,142]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:145,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt1,$Vu1,{340:204,171:[1,205],198:$Vv1}),o($Vt1,$Vu1,{340:207,198:$Vv1}),{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,198:[1,210],199:213,200:215,201:214,202:217,209:209,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1,453:208},{2:$V1,3:221,4:$V2,5:$V3},{353:[1,222]},o($Vz1,[2,1043],{80:223,106:224,107:[1,225]}),o($VA1,[2,1047],{90:226}),{2:$V1,3:230,4:$V2,5:$V3,190:[1,228],193:[1,231],267:[1,227],353:[1,232],405:[1,229]},{353:[1,233]},{2:$V1,3:236,4:$V2,5:$V3,73:234,75:235},o([306,602,764],$V0,{12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,9:238,2:$V1,4:$V2,5:$V3,14:$V4,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,435:[1,237],436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{435:[1,239]},{435:[1,240]},{2:$V1,3:242,4:$V2,5:$V3,405:[1,241]},{2:$V1,3:244,4:$V2,5:$V3,199:243},o($VB1,[2,311]),{113:245,132:$VW,296:$Vj1},{2:$V1,3:114,4:$V2,5:$V3,113:251,131:$VV,132:[1,248],143:$VY,144:246,145:$VC1,152:$V$,156:$VL,181:$V31,196:250,200:255,201:254,257:252,258:253,265:$VD1,274:247,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:257,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,672]),o($VK,[2,673]),{2:$V1,3:168,4:$V2,5:$V3,40:259,56:165,77:$VU,79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:258,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:266,4:$V2,5:$V3,113:263,132:$VW,296:$Vj1,444:261,445:262,446:264,447:$VE1},{2:$V1,3:267,4:$V2,5:$V3,143:$VF1,145:$VG1,431:268},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:271,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{505:[1,272]},{2:$V1,3:100,4:$V2,5:$V3,504:274,506:273},{2:$V1,3:114,4:$V2,5:$V3,156:$VL,200:275,290:$VM,291:$VN,292:$VO,293:$VP},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:276,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VH1,$VI1,{186:280,164:[1,279],185:[1,277],187:[1,278],195:$VJ1}),o($VK1,[2,757],{77:[1,282]}),o([2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],[2,152],{149:[1,283],150:[1,284],190:[1,285],191:[1,286],192:[1,287],193:[1,288],194:[1,289]}),o($VL1,[2,1]),o($VL1,[2,2]),{6:290,131:[1,439],172:[1,462],245:[1,411],285:[1,373],286:[1,407],370:[1,404],381:[1,295],402:[1,297],410:[1,549],414:[1,471],416:[1,443],417:[1,509],433:[1,442],435:[1,525],440:[1,342],460:[1,418],464:[1,448],470:[1,341],514:[1,307],515:[1,299],516:[1,399],518:[1,291],519:[1,292],520:[1,293],521:[1,294],522:[1,296],523:[1,298],524:[1,300],525:[1,301],526:[1,302],527:[1,303],528:[1,304],529:[1,305],530:[1,306],531:[1,308],532:[1,309],533:[1,310],534:[1,311],535:[1,312],536:[1,313],537:[1,314],538:[1,315],539:[1,316],540:[1,317],541:[1,318],542:[1,319],543:[1,320],544:[1,321],545:[1,322],546:[1,323],547:[1,324],548:[1,325],549:[1,326],550:[1,327],551:[1,328],552:[1,329],553:[1,330],554:[1,331],555:[1,332],556:[1,333],557:[1,334],558:[1,335],559:[1,336],560:[1,337],561:[1,338],562:[1,339],563:[1,340],564:[1,343],565:[1,344],566:[1,345],567:[1,346],568:[1,347],569:[1,348],570:[1,349],571:[1,350],572:[1,351],573:[1,352],574:[1,353],575:[1,354],576:[1,355],577:[1,356],578:[1,357],579:[1,358],580:[1,359],581:[1,360],582:[1,361],583:[1,362],584:[1,363],585:[1,364],586:[1,365],587:[1,366],588:[1,367],589:[1,368],590:[1,369],591:[1,370],592:[1,371],593:[1,372],594:[1,374],595:[1,375],596:[1,376],597:[1,377],598:[1,378],599:[1,379],600:[1,380],601:[1,381],602:[1,382],603:[1,383],604:[1,384],605:[1,385],606:[1,386],607:[1,387],608:[1,388],609:[1,389],610:[1,390],611:[1,391],612:[1,392],613:[1,393],614:[1,394],615:[1,395],616:[1,396],617:[1,397],618:[1,398],619:[1,400],620:[1,401],621:[1,402],622:[1,403],623:[1,405],624:[1,406],625:[1,408],626:[1,409],627:[1,410],628:[1,412],629:[1,413],630:[1,414],631:[1,415],632:[1,416],633:[1,417],634:[1,419],635:[1,420],636:[1,421],637:[1,422],638:[1,423],639:[1,424],640:[1,425],641:[1,426],642:[1,427],643:[1,428],644:[1,429],645:[1,430],646:[1,431],647:[1,432],648:[1,433],649:[1,434],650:[1,435],651:[1,436],652:[1,437],653:[1,438],654:[1,440],655:[1,441],656:[1,444],657:[1,445],658:[1,446],659:[1,447],660:[1,449],661:[1,450],662:[1,451],663:[1,452],664:[1,453],665:[1,454],666:[1,455],667:[1,456],668:[1,457],669:[1,458],670:[1,459],671:[1,460],672:[1,461],673:[1,463],674:[1,464],675:[1,465],676:[1,466],677:[1,467],678:[1,468],679:[1,469],680:[1,470],681:[1,472],682:[1,473],683:[1,474],684:[1,475],685:[1,476],686:[1,477],687:[1,478],688:[1,479],689:[1,480],690:[1,481],691:[1,482],692:[1,483],693:[1,484],694:[1,485],695:[1,486],696:[1,487],697:[1,488],698:[1,489],699:[1,490],700:[1,491],701:[1,492],702:[1,493],703:[1,494],704:[1,495],705:[1,496],706:[1,497],707:[1,498],708:[1,499],709:[1,500],710:[1,501],711:[1,502],712:[1,503],713:[1,504],714:[1,505],715:[1,506],716:[1,507],717:[1,508],718:[1,510],719:[1,511],720:[1,512],721:[1,513],722:[1,514],723:[1,515],724:[1,516],725:[1,517],726:[1,518],727:[1,519],728:[1,520],729:[1,521],730:[1,522],731:[1,523],732:[1,524],733:[1,526],734:[1,527],735:[1,528],736:[1,529],737:[1,530],738:[1,531],739:[1,532],740:[1,533],741:[1,534],742:[1,535],743:[1,536],744:[1,537],745:[1,538],746:[1,539],747:[1,540],748:[1,541],749:[1,542],750:[1,543],751:[1,544],752:[1,545],753:[1,546],754:[1,547],755:[1,548],756:[1,550],757:[1,551],758:[1,552],759:[1,553],760:[1,554],761:[1,555],762:[1,556],763:[1,557]},{1:[2,6]},o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:558,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VM1,[2,1041]),o($VM1,[2,1042]),o($VJ,[2,10]),{16:[1,559]},{2:$V1,3:244,4:$V2,5:$V3,199:560},{405:[1,561]},o($VK,[2,760]),{77:$VN1},{77:[1,563]},{77:$VO1},{77:[1,565]},{77:[1,566]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:567,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt1,$VP1,{350:568,156:$VQ1}),{405:[1,570]},{2:$V1,3:571,4:$V2,5:$V3},{193:[1,572]},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,183:[1,574],431:585,473:573,474:575,475:576,478:577,482:582,493:579,497:581},{130:[1,589],349:586,353:[1,588],410:[1,587]},{113:591,132:$VW,183:[2,1141],296:$Vj1,471:590},o($VU1,[2,1135],{465:592,3:593,2:$V1,4:$V2,5:$V3}),{2:$V1,3:594,4:$V2,5:$V3},{4:[1,595]},{4:[1,596]},o($VQ,[2,502]),o($VK,[2,686],{74:[1,597]}),o($VV1,[2,687]),{2:$V1,3:598,4:$V2,5:$V3},{2:$V1,3:244,4:$V2,5:$V3,199:599},{2:$V1,3:600,4:$V2,5:$V3},o($Vt1,$VW1,{398:601,156:$VX1}),{405:[1,603]},{2:$V1,3:604,4:$V2,5:$V3},o($Vt1,$VW1,{398:605,156:$VX1}),o($Vt1,$VW1,{398:606,156:$VX1}),{2:$V1,3:607,4:$V2,5:$V3},o($VY1,[2,1129]),o($VY1,[2,1130]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:608,114:625,327:637,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$V22,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V9,154:$Va2,156:$Va,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,266:$Vc,267:$Vd,290:$Ve,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VB1,[2,288]),o($VB1,[2,289]),o($VB1,[2,290]),o($VB1,[2,291]),o($VB1,[2,292]),o($VB1,[2,293]),o($VB1,[2,294]),o($VB1,[2,295]),o($VB1,[2,296]),o($VB1,[2,297]),o($VB1,[2,298]),o($VB1,[2,299]),o($VB1,[2,300]),o($VB1,[2,301]),o($VB1,[2,302]),o($VB1,[2,303]),o($VB1,[2,304]),o($VB1,[2,305]),{2:$V1,3:168,4:$V2,5:$V3,26:654,27:653,36:649,40:648,56:165,77:$VU,79:75,89:$V7,94:651,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,264:650,265:$V41,266:$Vc,267:[1,655],270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:[1,652],291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,339:$Vh,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,309]),o($VB1,[2,310]),{77:[1,656]},o([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy2,{77:$VN1,116:[1,657]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:658,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:659,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:661,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:662,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,283]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,249,265,266,267,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,300,302,303,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,415,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764,765,766],[2,356]),o($Vz2,[2,357]),o($Vz2,[2,358]),o($Vz2,$VA2),o($Vz2,[2,360]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,361]),{2:$V1,3:664,4:$V2,5:$V3,131:[1,665],301:663},{2:$V1,3:666,4:$V2,5:$V3},o($Vz2,[2,367]),o($Vz2,[2,368]),{2:$V1,3:667,4:$V2,5:$V3,77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},{77:[1,674]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:675,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,304:676,307:677,308:$VC2,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,679]},{77:[1,680]},o($VD2,[2,624]),{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,300:[1,683],302:$Vn1,419:190,420:$Vr1,421:681,422:684,423:686,424:$Vs1,427:682},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:696,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:697,4:$V2,5:$V3,156:$VL,200:698,290:$VM,291:$VN,292:$VO,293:$VP},{77:[2,336]},{77:[2,337]},{77:[2,338]},{77:[2,339]},{77:[2,340]},{77:[2,341]},{77:[2,342]},{77:[2,343]},{77:[2,344]},{2:$V1,3:704,4:$V2,5:$V3,131:$VF2,132:$VG2,425:699,426:[1,700],428:701},{2:$V1,3:244,4:$V2,5:$V3,199:705},{290:[1,706]},o($Vt1,[2,472]),{2:$V1,3:244,4:$V2,5:$V3,199:707},{231:[1,709],454:708},{231:[2,695]},{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:710,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{40:711,79:75,89:$V7,184:99,189:$Vb},o($VH2,[2,1091],{210:712,76:[1,713]}),o($VI2,[2,185],{3:714,2:$V1,4:$V2,5:$V3,76:[1,715],154:[1,716]}),o($VI2,[2,189],{3:717,2:$V1,4:$V2,5:$V3,76:[1,718]}),o($VI2,[2,190],{3:719,2:$V1,4:$V2,5:$V3,76:[1,720]}),o($VI2,[2,193]),o($VI2,[2,194],{3:721,2:$V1,4:$V2,5:$V3,76:[1,722]}),o($VI2,[2,197],{3:723,2:$V1,4:$V2,5:$V3,76:[1,724]}),o([2,4,5,10,72,74,76,78,93,98,118,128,154,162,168,169,183,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VJ2,{77:$VN1,116:$VK2}),o([2,4,5,10,72,74,76,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],[2,200]),o($VK,[2,773]),{2:$V1,3:244,4:$V2,5:$V3,199:726},o($VL2,$VM2,{81:727,198:$VN2}),o($Vz1,[2,1044]),o($VO2,[2,1057],{108:729,190:[1,730]}),o([10,78,183,306,310,602,764],$VM2,{419:190,81:731,117:732,3:733,114:736,144:758,158:768,160:769,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,198:$VN2,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),{353:[1,782]},{183:[1,783]},o($VK,[2,594],{112:[1,784]}),{405:[1,785]},{183:[1,786]},o($VK,[2,598],{112:[1,787],183:[1,788]}),{2:$V1,3:244,4:$V2,5:$V3,199:789},{40:790,74:[1,791],79:75,89:$V7,184:99,189:$Vb},o($Vv3,[2,70]),{76:[1,792]},o($VK,[2,667]),{11:106,306:[1,793],602:$VH,764:$VI},o($VK,[2,665]),o($VK,[2,666]),{2:$V1,3:794,4:$V2,5:$V3},o($VK,[2,587]),{146:[1,795]},o([2,4,5,10,53,72,74,76,77,78,89,95,124,128,143,145,146,148,149,152,154,156,181,183,187,189,230,266,267,290,297,302,306,310,335,338,339,343,344,356,368,369,373,374,396,400,401,402,403,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,514,515,516,517,602,764],$VJ2,{116:$VK2}),o($VK,[2,615]),o($VK,[2,616]),o($VK,[2,617]),o($VK,$VA2,{74:[1,796]}),{77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},o($Vw3,[2,320]),o($Vw3,[2,321]),o($Vw3,[2,322]),o($Vw3,[2,323]),o($Vw3,[2,324]),o($Vw3,[2,325]),o($Vw3,[2,326]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,114:625,327:637,12:797,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$V22,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V9,154:$Va2,156:$Va,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,266:$Vc,267:$Vd,290:$Ve,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,675],{74:$Vx3}),o($VK,[2,676]),o($Vy3,[2,354],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,677],{74:[1,800]}),o($VK,[2,678],{74:[1,801]}),o($VV1,[2,683]),o($VV1,[2,685]),o($VV1,[2,679]),o($VV1,[2,680]),{114:807,115:$V$1,116:$V02,124:[1,802],230:$VA3,429:803,430:804,433:$VB3},{2:$V1,3:808,4:$V2,5:$V3},o($Vt1,[2,656]),o($Vt1,[2,657]),o($VK,[2,614],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:100,4:$V2,5:$V3,504:274,506:809},o($VK,[2,754],{74:$VC3}),o($VD3,[2,756]),o($VK,[2,759]),o($VK,[2,681],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VE3,$VI1,{186:811,195:$VJ1}),o($VE3,$VI1,{186:812,195:$VJ1}),o($VE3,$VI1,{186:813,195:$VJ1}),o($VF3,[2,1087],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,188:814,174:815,253:816,94:817,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{77:[1,819],131:$VV,196:818},{2:$V1,3:100,4:$V2,5:$V3,504:274,506:820},o($VG3,[2,153]),o($VG3,[2,154]),o($VG3,[2,155]),o($VG3,[2,156]),o($VG3,[2,157]),o($VG3,[2,158]),o($VG3,[2,159]),o($VL1,[2,3]),o($VL1,[2,774]),o($VL1,[2,775]),o($VL1,[2,776]),o($VL1,[2,777]),o($VL1,[2,778]),o($VL1,[2,779]),o($VL1,[2,780]),o($VL1,[2,781]),o($VL1,[2,782]),o($VL1,[2,783]),o($VL1,[2,784]),o($VL1,[2,785]),o($VL1,[2,786]),o($VL1,[2,787]),o($VL1,[2,788]),o($VL1,[2,789]),o($VL1,[2,790]),o($VL1,[2,791]),o($VL1,[2,792]),o($VL1,[2,793]),o($VL1,[2,794]),o($VL1,[2,795]),o($VL1,[2,796]),o($VL1,[2,797]),o($VL1,[2,798]),o($VL1,[2,799]),o($VL1,[2,800]),o($VL1,[2,801]),o($VL1,[2,802]),o($VL1,[2,803]),o($VL1,[2,804]),o($VL1,[2,805]),o($VL1,[2,806]),o($VL1,[2,807]),o($VL1,[2,808]),o($VL1,[2,809]),o($VL1,[2,810]),o($VL1,[2,811]),o($VL1,[2,812]),o($VL1,[2,813]),o($VL1,[2,814]),o($VL1,[2,815]),o($VL1,[2,816]),o($VL1,[2,817]),o($VL1,[2,818]),o($VL1,[2,819]),o($VL1,[2,820]),o($VL1,[2,821]),o($VL1,[2,822]),o($VL1,[2,823]),o($VL1,[2,824]),o($VL1,[2,825]),o($VL1,[2,826]),o($VL1,[2,827]),o($VL1,[2,828]),o($VL1,[2,829]),o($VL1,[2,830]),o($VL1,[2,831]),o($VL1,[2,832]),o($VL1,[2,833]),o($VL1,[2,834]),o($VL1,[2,835]),o($VL1,[2,836]),o($VL1,[2,837]),o($VL1,[2,838]),o($VL1,[2,839]),o($VL1,[2,840]),o($VL1,[2,841]),o($VL1,[2,842]),o($VL1,[2,843]),o($VL1,[2,844]),o($VL1,[2,845]),o($VL1,[2,846]),o($VL1,[2,847]),o($VL1,[2,848]),o($VL1,[2,849]),o($VL1,[2,850]),o($VL1,[2,851]),o($VL1,[2,852]),o($VL1,[2,853]),o($VL1,[2,854]),o($VL1,[2,855]),o($VL1,[2,856]),o($VL1,[2,857]),o($VL1,[2,858]),o($VL1,[2,859]),o($VL1,[2,860]),o($VL1,[2,861]),o($VL1,[2,862]),o($VL1,[2,863]),o($VL1,[2,864]),o($VL1,[2,865]),o($VL1,[2,866]),o($VL1,[2,867]),o($VL1,[2,868]),o($VL1,[2,869]),o($VL1,[2,870]),o($VL1,[2,871]),o($VL1,[2,872]),o($VL1,[2,873]),o($VL1,[2,874]),o($VL1,[2,875]),o($VL1,[2,876]),o($VL1,[2,877]),o($VL1,[2,878]),o($VL1,[2,879]),o($VL1,[2,880]),o($VL1,[2,881]),o($VL1,[2,882]),o($VL1,[2,883]),o($VL1,[2,884]),o($VL1,[2,885]),o($VL1,[2,886]),o($VL1,[2,887]),o($VL1,[2,888]),o($VL1,[2,889]),o($VL1,[2,890]),o($VL1,[2,891]),o($VL1,[2,892]),o($VL1,[2,893]),o($VL1,[2,894]),o($VL1,[2,895]),o($VL1,[2,896]),o($VL1,[2,897]),o($VL1,[2,898]),o($VL1,[2,899]),o($VL1,[2,900]),o($VL1,[2,901]),o($VL1,[2,902]),o($VL1,[2,903]),o($VL1,[2,904]),o($VL1,[2,905]),o($VL1,[2,906]),o($VL1,[2,907]),o($VL1,[2,908]),o($VL1,[2,909]),o($VL1,[2,910]),o($VL1,[2,911]),o($VL1,[2,912]),o($VL1,[2,913]),o($VL1,[2,914]),o($VL1,[2,915]),o($VL1,[2,916]),o($VL1,[2,917]),o($VL1,[2,918]),o($VL1,[2,919]),o($VL1,[2,920]),o($VL1,[2,921]),o($VL1,[2,922]),o($VL1,[2,923]),o($VL1,[2,924]),o($VL1,[2,925]),o($VL1,[2,926]),o($VL1,[2,927]),o($VL1,[2,928]),o($VL1,[2,929]),o($VL1,[2,930]),o($VL1,[2,931]),o($VL1,[2,932]),o($VL1,[2,933]),o($VL1,[2,934]),o($VL1,[2,935]),o($VL1,[2,936]),o($VL1,[2,937]),o($VL1,[2,938]),o($VL1,[2,939]),o($VL1,[2,940]),o($VL1,[2,941]),o($VL1,[2,942]),o($VL1,[2,943]),o($VL1,[2,944]),o($VL1,[2,945]),o($VL1,[2,946]),o($VL1,[2,947]),o($VL1,[2,948]),o($VL1,[2,949]),o($VL1,[2,950]),o($VL1,[2,951]),o($VL1,[2,952]),o($VL1,[2,953]),o($VL1,[2,954]),o($VL1,[2,955]),o($VL1,[2,956]),o($VL1,[2,957]),o($VL1,[2,958]),o($VL1,[2,959]),o($VL1,[2,960]),o($VL1,[2,961]),o($VL1,[2,962]),o($VL1,[2,963]),o($VL1,[2,964]),o($VL1,[2,965]),o($VL1,[2,966]),o($VL1,[2,967]),o($VL1,[2,968]),o($VL1,[2,969]),o($VL1,[2,970]),o($VL1,[2,971]),o($VL1,[2,972]),o($VL1,[2,973]),o($VL1,[2,974]),o($VL1,[2,975]),o($VL1,[2,976]),o($VL1,[2,977]),o($VL1,[2,978]),o($VL1,[2,979]),o($VL1,[2,980]),o($VL1,[2,981]),o($VL1,[2,982]),o($VL1,[2,983]),o($VL1,[2,984]),o($VL1,[2,985]),o($VL1,[2,986]),o($VL1,[2,987]),o($VL1,[2,988]),o($VL1,[2,989]),o($VL1,[2,990]),o($VL1,[2,991]),o($VL1,[2,992]),o($VL1,[2,993]),o($VL1,[2,994]),o($VL1,[2,995]),o($VL1,[2,996]),o($VL1,[2,997]),o($VL1,[2,998]),o($VL1,[2,999]),o($VL1,[2,1000]),o($VL1,[2,1001]),o($VL1,[2,1002]),o($VL1,[2,1003]),o($VL1,[2,1004]),o($VL1,[2,1005]),o($VL1,[2,1006]),o($VL1,[2,1007]),o($VL1,[2,1008]),o($VL1,[2,1009]),o($VL1,[2,1010]),o($VL1,[2,1011]),o($VL1,[2,1012]),o($VL1,[2,1013]),o($VL1,[2,1014]),o($VL1,[2,1015]),o($VL1,[2,1016]),o($VL1,[2,1017]),o($VL1,[2,1018]),o($VL1,[2,1019]),o($VL1,[2,1020]),o($VL1,[2,1021]),o($VL1,[2,1022]),o($VL1,[2,1023]),o($VL1,[2,1024]),o($VL1,[2,1025]),o($VL1,[2,1026]),o($VL1,[2,1027]),o($VL1,[2,1028]),o($VL1,[2,1029]),o($VL1,[2,1030]),o($VL1,[2,1031]),o($VL1,[2,1032]),o($VL1,[2,1033]),o($VL1,[2,1034]),o($VL1,[2,1035]),o($VL1,[2,1036]),o($VL1,[2,1037]),o($VL1,[2,1038]),o($VL1,[2,1039]),o($VL1,[2,1040]),o($VJ,[2,7]),o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:821,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{396:[1,825],401:[1,822],402:[1,823],403:[1,824]},{2:$V1,3:826,4:$V2,5:$V3},o($VE3,[2,1111],{289:827,767:829,78:[1,828],164:[1,831],185:[1,830]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:832,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:833,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:834,4:$V2,5:$V3,132:[1,835]},{2:$V1,3:836,4:$V2,5:$V3,132:[1,837]},{2:$V1,3:838,4:$V2,5:$V3,99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:839,4:$V2,5:$V3},{154:[1,840]},o($VH3,$VP1,{350:841,156:$VQ1}),{230:[1,842]},{2:$V1,3:843,4:$V2,5:$V3},o($VK,[2,729],{74:$VI3}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:845,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD3,[2,732]),o($VJ3,[2,1143],{419:190,476:846,144:847,139:$VK3,141:$VK3,145:$VC1,420:$Vr1,424:$Vs1}),{139:[1,848],141:[1,849]},o($VL3,$VM3,{490:851,493:852,77:[1,850],137:$VS1}),o($VN3,[2,1167],{494:853,132:[1,854]}),o($VO3,[2,1171],{496:855,497:856,152:$VT1}),o($VO3,[2,747]),o($VP3,[2,739]),{2:$V1,3:857,4:$V2,5:$V3,131:[1,858]},{2:$V1,3:859,4:$V2,5:$V3},{2:$V1,3:860,4:$V2,5:$V3},o($Vt1,$VP1,{350:861,156:$VQ1}),o($Vt1,$VP1,{350:862,156:$VQ1}),o($VY1,[2,491]),o($VY1,[2,492]),{183:[1,863]},{183:[2,1142]},o($VQ3,[2,1137],{466:864,469:865,137:[1,866]}),o($VU1,[2,1136]),o($VR3,$VS3,{510:867,95:$VT3,230:[1,868],514:$VU3,515:$VV3,516:$VW3}),{76:[1,873]},{76:[1,874]},{145:$VT,450:875},{4:$VX3,7:879,76:[1,877],272:876,387:878,389:$VY3},o($VK,[2,456],{128:[1,882]}),o($VK,[2,579]),{2:$V1,3:883,4:$V2,5:$V3},{298:[1,884]},o($VH3,$VW1,{398:885,156:$VX1}),o($VK,[2,593]),{2:$V1,3:244,4:$V2,5:$V3,199:887,399:886},{2:$V1,3:244,4:$V2,5:$V3,199:887,399:888},o($VK,[2,772]),o($VJ,[2,669],{438:889,310:[1,890]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:891,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:892,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:893,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:894,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:895,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:896,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:897,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:898,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:899,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:900,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:901,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:902,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:903,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:904,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:905,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:906,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:907,4:$V2,5:$V3,77:[1,909],131:$VV,156:$VL,196:908,200:910,290:$VM,291:$VN,292:$VO,293:$VP},{2:$V1,3:911,4:$V2,5:$V3,77:[1,913],131:$VV,156:$VL,196:912,200:914,290:$VM,291:$VN,292:$VO,293:$VP},o($VZ3,[2,440],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:915,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,441],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:916,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,442],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:917,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,443],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:918,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,$V_3,{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:919,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:920,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:921,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VZ3,[2,445],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:922,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:923,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:924,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{164:[1,926],166:[1,928],328:925,334:[1,927]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:929,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:930,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:[1,931],111:934,145:$V$3,156:$VL,200:935,202:933,290:$VM,291:$VN,292:$VO,293:$VP,329:932},{99:[1,937],297:[1,938]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:939,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:940,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:941,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:942,387:878,389:$VY3},o($V04,[2,88]),o($V04,[2,89]),{78:[1,943]},{78:[1,944]},{78:[1,945]},{78:[1,946],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vt1,$Vu1,{340:207,77:$VO1,198:$Vv1}),{78:[2,1107]},{78:[2,1108]},{134:$VR,135:$VS},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:947,152:$V$,154:$V01,156:$VL,158:167,164:[1,949],179:$V11,180:$V21,181:$V31,185:[1,948],196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:950,4:$V2,5:$V3,149:$V14,180:[1,952]},o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,416],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o($V24,[2,417],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V24,[2,418],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V34,[2,419],{114:625,327:637,316:$Vj2}),o($V34,[2,420],{114:625,327:637,316:$Vj2}),o($Vz2,[2,365]),o($Vz2,[2,1113]),o($Vz2,[2,1114]),o($Vz2,[2,366]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,362]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:953,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD2,[2,620]),o($VD2,[2,621]),o($VD2,[2,622]),o($VD2,[2,623]),o($VD2,[2,625]),{40:954,79:75,89:$V7,184:99,189:$Vb},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,304:955,307:677,308:$VC2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{305:956,306:$V44,307:957,308:$VC2,310:$V54},o($V64,[2,372]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:959,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:960,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:961,387:878,389:$VY3},o($VD2,[2,626]),{74:[1,963],300:[1,962]},o($VD2,[2,642]),o($V74,[2,649]),o($V84,[2,627]),o($V84,[2,628]),o($V84,[2,629]),o($V84,[2,630]),o($V84,[2,631]),o($V84,[2,632]),o($V84,[2,633]),o($V84,[2,634]),o($V84,[2,635]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:964,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy2,{77:$VN1,116:$V94}),{74:$Vx3,300:[1,966]},o($Va4,[2,314],{77:$VN1}),o($VB1,[2,315]),{74:[1,968],426:[1,967]},o($VD2,[2,639]),o($Vb4,[2,644]),{152:[1,969]},{152:[1,970]},{152:[1,971]},{40:976,77:[1,975],79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:972,342:973,343:[1,974],344:$Vd4,419:190,420:$Vr1,424:$Vs1},o($Vt1,$Vu1,{340:981,198:$Vv1}),{77:$Ve4,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,201:980,302:$Vn1,341:982,342:983,344:$Vd4,419:190,420:$Vr1,424:$Vs1},{230:[1,986],455:985},{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:987,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{231:[2,696]},{78:[1,988]},o($VI2,[2,1093],{211:989,3:990,2:$V1,4:$V2,5:$V3}),o($VH2,[2,1092]),o($VI2,[2,183]),{2:$V1,3:991,4:$V2,5:$V3},{212:[1,992]},o($VI2,[2,187]),{2:$V1,3:993,4:$V2,5:$V3},o($VI2,[2,191]),{2:$V1,3:994,4:$V2,5:$V3},o($VI2,[2,195]),{2:$V1,3:995,4:$V2,5:$V3},o($VI2,[2,198]),{2:$V1,3:996,4:$V2,5:$V3},{2:$V1,3:997,4:$V2,5:$V3},{148:[1,998]},o($Vf4,[2,172],{82:999,183:[1,1000]}),{2:$V1,3:219,4:$V2,5:$V3,132:[1,1005],143:$VY,145:[1,1006],152:$V$,156:$VL,181:$V31,199:1001,200:1002,201:1003,202:1004,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1},{2:$V1,3:1011,4:$V2,5:$V3,109:1007,110:1008,111:1009,112:$Vg4},o($VO2,[2,1058]),o($Vh4,[2,1049],{91:1012,182:1013,183:[1,1014]}),o($VA1,[2,1048],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o([2,4,5,10,72,74,76,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,90],{77:[1,1019]}),{119:[1,1020]},o($Vl4,[2,93]),{2:$V1,3:1021,4:$V2,5:$V3},o($Vl4,[2,95]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1022,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1023,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1025,118:$VT2,122:$VU2,123:$VV2,124:$VW2,125:1024,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{77:[1,1026]},{77:[1,1027]},{77:[1,1028]},{77:[1,1029]},o($Vl4,[2,104]),o($Vl4,[2,105]),o($Vl4,[2,106]),o($Vl4,[2,107]),o($Vl4,[2,108]),o($Vl4,[2,109]),{2:$V1,3:1030,4:$V2,5:$V3},{2:$V1,3:1031,4:$V2,5:$V3,133:[1,1032]},o($Vl4,[2,113]),o($Vl4,[2,114]),o($Vl4,[2,115]),o($Vl4,[2,116]),o($Vl4,[2,117]),o($Vl4,[2,118]),{2:$V1,3:1033,4:$V2,5:$V3,77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},{145:[1,1034]},{77:[1,1035]},{145:[1,1036]},o($Vl4,[2,123]),{77:[1,1037]},{2:$V1,3:1038,4:$V2,5:$V3},{77:[1,1039]},{77:[1,1040]},{77:[1,1041]},{77:[1,1042]},{77:[1,1043],164:[1,1044]},{77:[1,1045]},{77:[1,1046]},{77:[1,1047]},{77:[1,1048]},{77:[1,1049]},{77:[1,1050]},{77:[1,1051]},{77:[1,1052]},{77:[1,1053]},{77:[2,1073]},{77:[2,1074]},{2:$V1,3:244,4:$V2,5:$V3,199:1054},{2:$V1,3:244,4:$V2,5:$V3,199:1055},{113:1056,132:$VW,296:$Vj1},o($VK,[2,596],{112:[1,1057]}),{2:$V1,3:244,4:$V2,5:$V3,199:1058},{113:1059,132:$VW,296:$Vj1},{2:$V1,3:1060,4:$V2,5:$V3},o($VK,[2,693]),o($VK,[2,68]),{2:$V1,3:236,4:$V2,5:$V3,75:1061},{77:[1,1062]},o($VK,[2,674]),o($VK,[2,586]),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1063,336:1064,337:1066},{144:1069,145:$VC1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,671]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1070,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VZ3,$V_3,{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:1071,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{113:1072,132:$VW,296:$Vj1},{2:$V1,3:266,4:$V2,5:$V3,446:1073,447:$VE1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1075,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,230:$VA3,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1,429:1074,433:$VB3},o($VK,[2,651]),{114:1077,115:$V$1,116:$V02,124:[1,1076]},o($VK,[2,663]),o($VK,[2,664]),{2:$V1,3:1079,4:$V2,5:$V3,77:$Vo4,131:$Vp4,432:1078},{114:807,115:$V$1,116:$V02,124:[1,1082],430:1083},o($VK,[2,753],{74:$VC3}),{2:$V1,3:100,4:$V2,5:$V3,504:1084},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1085,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1086,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1087,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VF3,[2,151]),o($VF3,[2,1088],{74:$Vq4}),o($Vr4,[2,273]),o($Vr4,[2,280],{114:625,327:637,3:1090,113:1092,2:$V1,4:$V2,5:$V3,76:[1,1089],99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,131:[1,1091],132:$VW,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,296:$Vj1,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VH1,[2,1089],{197:1093,765:[1,1094]}),{131:$VV,196:1095},{74:$VC3,78:[1,1096]},o($VJ,[2,11]),{148:[1,1097],190:[1,1098]},{190:[1,1099]},{190:[1,1100]},{190:[1,1101]},o($VK,[2,575],{76:[1,1103],77:[1,1102]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1104,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vz2,[2,346]),o($VE3,[2,1112]),o($VE3,[2,1109]),o($VE3,[2,1110]),{74:$Vx3,78:[1,1105]},{74:$Vx3,78:[1,1106]},{74:[1,1107]},{74:[1,1108]},{74:[1,1109]},{74:[1,1110]},o($Vz2,[2,353]),o($VK,[2,580]),{298:[1,1111]},{2:$V1,3:1112,4:$V2,5:$V3,113:1113,132:$VW,296:$Vj1},{2:$V1,3:244,4:$V2,5:$V3,199:1114},{230:[1,1115]},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,474:1116,475:576,478:577,482:582,493:579,497:581},o($VK,[2,730],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VD3,[2,1145],{477:1117,483:1118,76:$Vs4}),o($VJ3,[2,1144]),{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,144:1121,145:$VC1,152:$VT1,419:190,420:$Vr1,424:$Vs1,475:1120,493:579,497:581},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1123,482:582,493:579,497:581},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,473:1125,474:575,475:576,478:577,482:582,493:579,497:581},o($VN3,[2,1163],{491:1126,132:[1,1127]}),o($VL3,[2,1162]),o($VO3,[2,1169],{495:1128,497:1129,152:$VT1}),o($VN3,[2,1168]),o($VO3,[2,746]),o($VO3,[2,1172]),o($VL3,[2,749]),o($VL3,[2,750]),o($VO3,[2,748]),o($VP3,[2,740]),{2:$V1,3:244,4:$V2,5:$V3,199:1130},{2:$V1,3:244,4:$V2,5:$V3,199:1131},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1132,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt4,[2,1139],{467:1133,113:1134,132:$VW,296:$Vj1}),o($VQ3,[2,1138]),{2:$V1,3:1135,4:$V2,5:$V3},{335:$Vu4,338:$Vv4,339:$Vw4,511:1136},{2:$V1,3:244,4:$V2,5:$V3,199:1140},o($VR3,[2,765]),o($VR3,[2,766]),o($VR3,[2,767]),{129:[1,1141]},{266:[1,1142]},{266:[1,1143]},o($VV1,[2,688]),o($VV1,[2,689],{124:[1,1144]}),{4:$VX3,7:879,272:1145,387:878,389:$VY3},o([2,4,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,542],{5:[1,1146]}),o([2,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,539],{4:[1,1148],77:[1,1147]}),{77:[1,1149]},o($Vx4,[2,4]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1150,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,588]),o($VH3,[2,568]),{2:$V1,3:1151,4:$V2,5:$V3,113:1152,132:$VW,296:$Vj1},o($VK,[2,564],{74:$Vy4}),o($VV1,[2,566]),o($VK,[2,613],{74:$Vy4}),o($VK,[2,668]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1154,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($Vz4,[2,376],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($V34,[2,377],{114:625,327:637,316:$Vj2}),o($Vz4,[2,378],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VA4,[2,379],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,314:[1,1155],316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VA4,[2,381],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,314:[1,1156],316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,383],{114:625,327:637}),o($V24,[2,384],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V24,[2,385],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($VB4,[2,386],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o($VB4,[2,387],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o($VB4,[2,388],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,123,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,389],{114:625,327:637,115:$V$1,116:$V02,136:$V42,312:$Vg2,316:$Vj2}),o($VC4,[2,390],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,391],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,392],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,393],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($Va4,[2,394],{77:$VN1}),o($VB1,[2,395]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1157,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,397]),o($Va4,[2,398],{77:$VN1}),o($VB1,[2,399]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1158,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,401]),o($VD4,[2,402],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,403],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,404],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,405],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o([2,4,5,10,53,72,89,99,124,139,140,146,154,156,170,171,189,266,267,290,306,310,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VE4,{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,407],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,408],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,409],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,410],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,411],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),{77:[1,1159]},{77:[2,446]},{77:[2,447]},{77:[2,448]},o($VF4,[2,414],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,415],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2}),{2:$V1,3:168,4:$V2,5:$V3,40:1160,56:165,77:$VU,78:[1,1162],79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1161,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,428]),o($VB1,[2,430]),o($VB1,[2,437]),o($VB1,[2,438]),{2:$V1,3:667,4:$V2,5:$V3,77:[1,1163]},{2:$V1,3:695,4:$V2,5:$V3,77:[1,1164],111:934,145:$V$3,156:$VL,200:935,202:1166,290:$VM,291:$VN,292:$VO,293:$VP,329:1165},o($VB1,[2,435]),o($VF4,[2,432],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o($VF4,[2,433],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,434],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,436]),o($VB1,[2,306]),o($VB1,[2,307]),o($VB1,[2,308]),o($VB1,[2,421]),{74:$Vx3,78:[1,1167]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1168,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1169,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,$VG4),o($VH4,[2,286]),o($VB1,[2,282]),{78:[1,1171],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1172]},{305:1173,306:$V44,307:957,308:$VC2,310:$V54},{306:[1,1174]},o($V64,[2,371]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1175,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1176],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{76:[1,1177],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1178]},o($VD2,[2,640]),{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,300:[1,1179],302:$Vn1,419:190,420:$Vr1,422:1180,423:686,424:$Vs1},{78:[1,1181],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1182,4:$V2,5:$V3,149:$V14},o($VB1,[2,364]),o($VD2,[2,637]),{2:$V1,3:704,4:$V2,5:$V3,131:$VF2,132:$VG2,426:[1,1183],428:1184},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1185,423:686,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1186,423:686,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1187,423:686,424:$Vs1},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1188,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,458],{74:$VJ4}),{149:$Vc4,341:1190,344:$Vd4},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,100:1191,111:1193,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1192,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,466]),o($VK4,[2,469]),o($VK4,[2,470]),o($VL4,[2,474]),o($VL4,[2,475]),{2:$V1,3:244,4:$V2,5:$V3,199:1195},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1196,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,462],{74:$VJ4}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1192,419:190,420:$Vr1,424:$Vs1},{308:$VM4,456:1197,458:1198,459:1199},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1201,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{230:[2,697]},o($VI2,[2,181],{3:1202,2:$V1,4:$V2,5:$V3,76:[1,1203]}),o($VI2,[2,182]),o($VI2,[2,1094]),o($VI2,[2,184]),o($VI2,[2,186]),o($VI2,[2,188]),o($VI2,[2,192]),o($VI2,[2,196]),o($VI2,[2,199]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,118,124,128,143,145,146,148,149,152,154,156,162,168,169,181,183,187,189,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,266,267,290,297,302,306,310,335,338,339,343,344,356,368,369,373,374,396,400,401,402,403,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,514,515,516,517,602,764],[2,201]),{2:$V1,3:1204,4:$V2,5:$V3},o($VN4,[2,1045],{83:1205,92:1206,93:[1,1207],98:[1,1208]}),{2:$V1,3:219,4:$V2,5:$V3,77:[1,1210],132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,203:1209,209:1211,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($VL2,[2,164]),o($VL2,[2,165]),o($VL2,[2,166]),o($VL2,[2,167]),o($VL2,[2,168]),{2:$V1,3:667,4:$V2,5:$V3},o($Vz1,[2,83],{74:[1,1212]}),o($VO4,[2,85]),o($VO4,[2,86]),{113:1213,132:$VW,296:$Vj1},o([10,72,74,78,93,98,118,124,128,162,168,169,183,198,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vy2,{116:$V94}),o($Vh4,[2,73]),o($Vh4,[2,1050]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1214,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,126]),o($Vl4,[2,144]),o($Vl4,[2,145]),o($Vl4,[2,146]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,78:[2,1065],94:260,111:149,113:153,127:1215,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1216,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1217]},o($Vl4,[2,94]),o([2,4,5,10,72,74,76,77,78,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,96],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o([2,4,5,10,72,74,76,77,78,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,97],{114:625,327:637,99:$VZ1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1218],112:$VS2,114:736,115:$V$1,116:$V02,117:1219,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},o($VP4,[2,1061],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1221,118:$VT2,122:$VU2,123:$VV2,124:$VW2,126:1220,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1222,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1223,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1224,4:$V2,5:$V3},o($Vl4,[2,110]),o($Vl4,[2,111]),o($Vl4,[2,112]),o($Vl4,[2,119]),{2:$V1,3:1225,4:$V2,5:$V3},{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1226,336:1064,337:1066},{2:$V1,3:1227,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1228,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,125]),o($VP4,[2,1067],{155:1229}),o($VP4,[2,1069],{157:1230}),o($VP4,[2,1071],{159:1231}),o($VP4,[2,1075],{161:1232}),o($VQ4,$VR4,{163:1233,178:1234}),{77:[1,1235]},o($VP4,[2,1077],{165:1236}),o($VP4,[2,1079],{167:1237}),o($VQ4,$VR4,{178:1234,163:1238}),o($VQ4,$VR4,{178:1234,163:1239}),o($VQ4,$VR4,{178:1234,163:1240}),o($VQ4,$VR4,{178:1234,163:1241}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1242,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1243,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VS4,[2,1081],{176:1244}),o($VK,[2,606],{183:[1,1245]}),o($VK,[2,602],{183:[1,1246]}),o($VK,[2,595]),{113:1247,132:$VW,296:$Vj1},o($VK,[2,604],{183:[1,1248]}),o($VK,[2,599]),o($VK,[2,600],{112:[1,1249]}),o($Vv3,[2,69]),{40:1250,79:75,89:$V7,184:99,189:$Vb},o($VK,[2,450],{74:$VT4,128:[1,1251]}),o($VU4,[2,451]),{124:[1,1253]},{2:$V1,3:1254,4:$V2,5:$V3},o($Vt1,[2,1115]),o($Vt1,[2,1116]),o($VK,[2,618]),o($Vy3,[2,355],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VD4,$VE4,{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VV1,[2,682]),o($VV1,[2,684]),o($VK,[2,650]),o($VK,[2,652],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1255,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1079,4:$V2,5:$V3,77:$Vo4,131:$Vp4,432:1256},o($VV4,[2,659]),o($VV4,[2,660]),o($VV4,[2,661]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1257,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1258,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{114:1077,115:$V$1,116:$V02,124:[1,1259]},o($VD3,[2,755]),o($VF3,[2,148],{74:$Vq4}),o($VF3,[2,149],{74:$Vq4}),o($VF3,[2,150],{74:$Vq4}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:1260,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1261,4:$V2,5:$V3,113:1263,131:[1,1262],132:$VW,296:$Vj1},o($Vr4,[2,275]),o($Vr4,[2,277]),o($Vr4,[2,279]),o($VH1,[2,160]),o($VH1,[2,1090]),{78:[1,1264]},o($VK1,[2,758]),{2:$V1,3:1265,4:$V2,5:$V3},{2:$V1,3:1266,4:$V2,5:$V3},{2:$V1,3:1268,4:$V2,5:$V3,384:1267},{2:$V1,3:1268,4:$V2,5:$V3,384:1269},{2:$V1,3:1270,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1271,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1272,4:$V2,5:$V3},{74:$Vx3,78:[1,1273]},o($Vz2,[2,347]),o($Vz2,[2,348]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1274,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1275,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1276,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1277,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VH3,[2,504]),o($VK,$VW4,{407:1278,76:$VX4,77:[1,1279]}),o($VK,$VW4,{407:1281,76:$VX4}),{77:[1,1282]},{2:$V1,3:244,4:$V2,5:$V3,199:1283},o($VD3,[2,731]),o($VD3,[2,733]),o($VD3,[2,1146]),{143:$VF1,145:$VG1,431:1284},o($VY4,[2,1147],{419:190,479:1285,144:1286,145:$VC1,420:$Vr1,424:$Vs1}),{76:$Vs4,139:[2,1151],481:1287,483:1288},o([10,74,76,78,132,139,145,152,306,310,420,424,602,764],$VM3,{490:851,493:852,137:$VS1}),o($VD3,[2,736]),o($VD3,$VK3),{74:$VI3,78:[1,1289]},o($VO3,[2,1165],{492:1290,497:1291,152:$VT1}),o($VN3,[2,1164]),o($VO3,[2,745]),o($VO3,[2,1170]),o($VK,[2,490],{77:[1,1292]}),{76:[1,1294],77:[1,1293]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,148:[1,1295],154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VI4,$VZ4,{79:75,184:99,468:1296,40:1299,89:$V7,146:$V_4,189:$Vb,470:$V$4}),o($Vt4,[2,1140]),o($VQ3,[2,723]),{230:[1,1300]},o($V05,[2,769]),o($V05,[2,770]),o($V05,[2,771]),o($VR3,$VS3,{510:1301,95:$VT3,514:$VU3,515:$VV3,516:$VW3}),o($VR3,[2,768]),o($VK,[2,312]),o($VK,[2,313]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1302,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VV1,[2,690],{124:[1,1303]}),o($Vx4,[2,541]),{131:[1,1305],388:1304,390:[1,1306]},o($Vx4,[2,5]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1307,419:190,420:$Vr1,424:$Vs1},o($VK,[2,455],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,589]),o($VK,[2,590]),{2:$V1,3:244,4:$V2,5:$V3,199:1308},o($VK,[2,670]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1309,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1310,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1311],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1312],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:168,4:$V2,5:$V3,40:1313,56:165,77:$VU,79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1314,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1315]},{74:$Vx3,78:[1,1316]},o($VB1,[2,426]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1317,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,40:1318,56:165,77:$VU,78:[1,1320],79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1319,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,429]),o($VB1,[2,431]),o($VB1,$V15,{275:1321,276:$V25}),{78:[1,1323],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1324],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1325,4:$V2,5:$V3,180:[1,1326]},o($VD2,[2,619]),o($VB1,[2,363]),{306:[1,1327]},o($VB1,[2,370]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,306:[2,374],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1328,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:1329,387:878,389:$VY3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1330,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD2,[2,641]),o($V74,[2,648]),o($V84,[2,636]),o($VH4,$VG4),o($VD2,[2,638]),o($Vb4,[2,643]),o($Vb4,[2,645]),o($Vb4,[2,646]),o($Vb4,[2,647]),o($VI4,[2,457],{74:$VJ4}),{77:[1,1332],143:$VY,144:1333,145:$VC1,152:$V$,181:$V31,201:1334,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,463]),{74:$V35,78:[1,1335]},{74:$V45,78:[1,1337]},o([74,78,99,112,115,116,123,124,133,136,138,139,140,141,142,154,170,171,179,180,311,312,313,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333],$V55),o($V65,[2,479],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{40:1341,77:$Ve4,79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:1339,342:1340,344:$Vd4,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,461],{74:$VJ4}),o($VK,[2,717],{457:1342,458:1343,459:1344,308:$VM4,464:[1,1345]}),o($V75,[2,701]),o($V75,[2,702]),{154:[1,1347],460:[1,1346]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,308:[2,698],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VI2,[2,179]),{2:$V1,3:1348,4:$V2,5:$V3},o($VK,[2,574]),o($V85,[2,238],{84:1349,128:[1,1350]}),o($VN4,[2,1046]),{77:[1,1351]},{77:[1,1352]},o($Vf4,[2,169],{204:1353,215:1355,205:1356,216:1357,221:1360,74:$V95,206:$Va5,208:$Vb5,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5}),{2:$V1,3:219,4:$V2,5:$V3,40:711,77:$Vw1,79:75,89:$V7,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,184:99,189:$Vb,199:213,200:215,201:214,202:217,203:1369,209:1211,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($Vk5,[2,177]),{2:$V1,3:1011,4:$V2,5:$V3,110:1370,111:1009,112:$Vg4},o($VO4,[2,87]),o($Vh4,[2,147],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{78:[1,1371]},{74:$Vx3,78:[2,1066]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,78:[2,1059],94:1376,111:149,113:153,120:1372,121:1373,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,242:[1,1375],254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,98]),o($VP4,[2,1062],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1377],112:$VS2,114:736,115:$V$1,116:$V02,117:1378,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},o($VP4,[2,1063],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{78:[1,1379],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1380],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1381]},o($Vl4,[2,120]),{74:$VT4,78:[1,1382]},o($Vl4,[2,122]),{74:$Vx3,78:[1,1383]},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1384],112:$VS2,114:736,115:$V$1,116:$V02,117:1385,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1386],112:$VS2,114:736,115:$V$1,116:$V02,117:1387,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1388],112:$VS2,114:736,115:$V$1,116:$V02,117:1389,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1390],112:$VS2,114:736,115:$V$1,116:$V02,117:1391,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{74:$Vl5,78:[1,1392]},o($V65,[2,143],{419:190,3:733,114:736,144:758,158:768,160:769,117:1394,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),o($VQ4,$VR4,{178:1234,163:1395}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1396],112:$VS2,114:736,115:$V$1,116:$V02,117:1397,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1398],112:$VS2,114:736,115:$V$1,116:$V02,117:1399,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{74:$Vl5,78:[1,1400]},{74:$Vl5,78:[1,1401]},{74:$Vl5,78:[1,1402]},{74:$Vl5,78:[1,1403]},{78:[1,1404],153:1015,179:$Vi4,180:$Vj4,181:$Vk4},{74:$Vq4,78:[1,1405]},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,74:[1,1406],76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1407,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1408,4:$V2,5:$V3},{2:$V1,3:1409,4:$V2,5:$V3},o($VK,[2,597]),{2:$V1,3:1410,4:$V2,5:$V3},{113:1411,132:$VW,296:$Vj1},{78:[1,1412]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1413,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,336:1414,337:1066},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1415,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{124:[1,1416]},o($VK,[2,653],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VV4,[2,658]),{78:[1,1417],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,[2,654],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1418,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vr4,[2,272]),o($Vr4,[2,274]),o($Vr4,[2,276]),o($Vr4,[2,278]),o($VH1,[2,161]),o($VK,[2,569]),{148:[1,1419]},o($VK,[2,570]),o($VD3,[2,536],{387:878,7:879,272:1420,4:$VX3,386:[1,1421],389:$VY3}),o($VK,[2,571]),o($VK,[2,573]),{74:$Vx3,78:[1,1422]},o($VK,[2,577]),o($Vz2,[2,345]),{74:[1,1423],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1424],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1425],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1426],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,[2,581]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1427,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1428,4:$V2,5:$V3},o($VK,[2,583]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1429,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1430]},{2:$V1,3:1431,4:$V2,5:$V3},{76:$Vs4,139:[2,1149],480:1432,483:1433},o($VY4,[2,1148]),{139:[1,1434]},{139:[2,1152]},o($VD3,[2,737]),o($VO3,[2,744]),o($VO3,[2,1166]),{2:$V1,3:1268,4:$V2,5:$V3,76:[1,1437],351:1435,358:1436,384:1438},{2:$V1,3:1011,4:$V2,5:$V3,100:1439,111:1440},{40:1441,79:75,89:$V7,184:99,189:$Vb},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1442,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,722]),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1443,336:1064,337:1066},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1444,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,727]),{2:$V1,3:244,4:$V2,5:$V3,199:1445},{335:$Vu4,338:$Vv4,339:$Vw4,511:1446},o($VV1,[2,691],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1447,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:[1,1448],78:[1,1449]},o($V65,[2,543]),o($V65,[2,544]),{74:$V45,78:[1,1450]},o($VV1,[2,565]),o($Vz4,[2,380],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($Vz4,[2,382],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,396]),o($VB1,[2,400]),{78:[1,1451]},{74:$Vx3,78:[1,1452]},o($VB1,[2,422]),o($VB1,[2,424]),{78:[1,1453],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1454]},{74:$Vx3,78:[1,1455]},o($VB1,[2,427]),o($VB1,[2,327]),{77:[1,1456]},o($VB1,$V15,{275:1457,276:$V25}),o($VB1,$V15,{275:1458,276:$V25}),o($VH4,[2,284]),o($VB1,[2,281]),o($VB1,[2,369]),o($V64,[2,373],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{74:[1,1460],78:[1,1459]},{74:[1,1462],78:[1,1461],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1325,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1463,419:190,420:$Vr1,424:$Vs1},o($VL4,[2,477]),o($VL4,[2,478]),{40:1466,77:$Ve4,79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:1464,342:1465,344:$Vd4,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,111:1467},o($VL4,[2,473]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1468,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1469,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,460],{74:$VJ4}),o($VI4,[2,467]),o($VK,[2,694]),o($V75,[2,699]),o($V75,[2,700]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1470,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{170:[1,1472],309:[1,1471]},{460:[1,1473]},o($VI2,[2,180]),o($Vm5,[2,240],{85:1474,232:[1,1475]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1476,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1477,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1478,4:$V2,5:$V3},o($Vf4,[2,170],{216:1357,221:1360,215:1479,205:1480,206:$Va5,208:$Vb5,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5}),{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:1481,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($Vn5,[2,205]),o($Vn5,[2,206]),{2:$V1,3:219,4:$V2,5:$V3,77:[1,1486],143:$VY,144:1484,145:$VZ,152:$V$,156:$VL,181:$V31,199:1483,200:1487,201:1485,202:1488,217:1482,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{207:[1,1489],223:$Vo5},{207:[1,1491],223:$Vp5},o($Vq5,[2,222]),{206:[1,1495],208:[1,1494],221:1493,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($Vq5,[2,224]),{223:[1,1496]},{208:[1,1498],223:[1,1497]},{208:[1,1500],223:[1,1499]},{208:[1,1501]},{223:[1,1502]},{223:[1,1503]},{74:$V95,204:1504,205:1356,206:$Va5,208:$Vb5,215:1355,216:1357,221:1360,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($VO4,[2,84]),o($Vl4,[2,100]),{74:$Vr5,78:[1,1505]},{78:[1,1507]},o($Vs5,[2,261]),{78:[2,1060]},o($Vs5,[2,263],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,242:[1,1508],243:[1,1509],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($Vl4,[2,99]),o($VP4,[2,1064],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,101]),o($Vl4,[2,102]),o($Vl4,[2,103]),o($Vl4,[2,121]),o($Vl4,[2,124]),o($Vl4,[2,127]),o($VP4,[2,1068],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,128]),o($VP4,[2,1070],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,129]),o($VP4,[2,1072],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,130]),o($VP4,[2,1076],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,131]),o($VQ4,[2,1083],{177:1510}),o($VQ4,[2,1086],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{74:$Vl5,78:[1,1511]},o($Vl4,[2,133]),o($VP4,[2,1078],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,134]),o($VP4,[2,1080],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,135]),o($Vl4,[2,136]),o($Vl4,[2,137]),o($Vl4,[2,138]),o($Vl4,[2,139]),o($Vl4,[2,140]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1512,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VS4,[2,1082],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($VK,[2,607]),o($VK,[2,603]),o($VK,[2,605]),o($VK,[2,601]),o($Vv3,[2,71]),o($VK,[2,449],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VU4,[2,452]),o($VU4,[2,453],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1513,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VV4,[2,662]),o($VK,[2,655],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:1514,4:$V2,5:$V3},o($VD3,[2,545],{385:1515,391:1516,392:1517,366:1525,154:$Vt5,187:$Vu5,230:$Vv5,297:$Vw5,343:$Vx5,356:$Vy5,368:$Vz5,369:$VA5,373:$VB5,374:$VC5}),o($VD3,[2,535]),o($VK,[2,576],{76:[1,1529]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1530,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1531,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1532,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1533,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:$Vx3,78:[1,1534]},o($VK,[2,585]),{74:$Vr5,78:[1,1535]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1536,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o([10,74,78,139,306,310,602,764],[2,741]),{139:[1,1537]},{139:[2,1150]},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1538,482:582,493:579,497:581},{78:[1,1539]},{74:[1,1540],78:[2,506]},{40:1541,79:75,89:$V7,184:99,189:$Vb},o($V65,[2,532]),{74:$V35,78:[1,1542]},o($Vk5,$V55),o($VK,[2,1133],{412:1543,413:1544,72:$VD5}),o($VI4,$VZ4,{79:75,184:99,114:625,327:637,40:1299,468:1546,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V_4,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,470:$V$4}),o($VI4,[2,725],{74:$VT4}),o($VI4,[2,726],{74:$Vx3}),o([10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],[2,1181],{512:1547,3:1548,2:$V1,4:$V2,5:$V3,76:[1,1549]}),o($VE5,[2,1183],{513:1550,76:[1,1551]}),o($VV1,[2,692],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{131:[1,1552]},o($Vx4,[2,538]),o($Vx4,[2,540]),o($VB1,[2,412]),o($VB1,[2,413]),o($VB1,[2,439]),o($VB1,[2,423]),o($VB1,[2,425]),{118:$VF5,277:1553,278:1554,279:[1,1555]},o($VB1,[2,328]),o($VB1,[2,329]),o($VB1,[2,316]),{131:[1,1557]},o($VB1,[2,318]),{131:[1,1558]},{74:$V45,78:[1,1559]},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1560,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,465],{74:$VJ4}),o($VI4,[2,468]),o($Vk5,[2,488]),o($V65,[2,480],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VI4,[2,459],{74:$VJ4}),o($VK,[2,718],{74:$Vq4,198:[1,1561]}),{335:$VG5,338:$VH5,461:1562},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1565,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{119:[1,1567],170:[1,1568],309:[1,1566]},o($VI5,[2,259],{86:1569,118:[1,1570]}),{119:[1,1571]},o($V85,[2,239],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{95:[1,1572],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{95:[1,1573]},o($Vn5,[2,203]),o($Vn5,[2,204]),o($Vk5,[2,178]),o($Vn5,[2,237],{218:1574,230:[1,1575],231:[1,1576]}),o($VJ5,[2,208],{3:1577,2:$V1,4:$V2,5:$V3,76:[1,1578]}),o($VK5,[2,1095],{219:1579,76:[1,1580]}),{2:$V1,3:1581,4:$V2,5:$V3,76:[1,1582]},{40:1583,79:75,89:$V7,184:99,189:$Vb},o($VJ5,[2,216],{3:1584,2:$V1,4:$V2,5:$V3,76:[1,1585]}),o($VJ5,[2,219],{3:1586,2:$V1,4:$V2,5:$V3,76:[1,1587]}),{77:[1,1588]},o($Vq5,[2,234]),{77:[1,1589]},o($Vq5,[2,230]),o($Vq5,[2,223]),{223:$Vp5},{223:$Vo5},o($Vq5,[2,225]),o($Vq5,[2,226]),{223:[1,1590]},o($Vq5,[2,228]),{223:[1,1591]},{223:[1,1592]},o($Vq5,[2,232]),o($Vq5,[2,233]),{78:[1,1593],205:1480,206:$Va5,208:$Vb5,215:1479,216:1357,221:1360,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($Vl4,[2,91]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1594,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,92]),o($Vs5,[2,264]),{244:[1,1595]},o($V65,[2,142],{419:190,3:733,114:736,144:758,158:768,160:769,117:1596,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),o($Vl4,[2,132]),{74:$Vx3,78:[1,1597]},o($VU4,[2,454],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,572]),o($VD3,[2,534]),o($VD3,[2,546],{366:1525,392:1598,154:$Vt5,187:$Vu5,230:$Vv5,297:$Vw5,343:$Vx5,356:$Vy5,368:$Vz5,369:$VA5,373:$VB5,374:$VC5}),o($Vw3,[2,548]),{370:[1,1599]},{370:[1,1600]},{2:$V1,3:244,4:$V2,5:$V3,199:1601},o($Vw3,[2,554],{77:[1,1602]}),{2:$V1,3:114,4:$V2,5:$V3,77:[1,1604],113:251,131:$VV,132:$VW,143:$VY,152:$V$,156:$VL,181:$V31,196:250,200:1605,201:254,257:252,258:253,265:$VD1,274:1603,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1},o($Vw3,[2,558]),{297:[1,1606]},o($Vw3,[2,560]),o($Vw3,[2,561]),{335:[1,1607]},{77:[1,1608]},{2:$V1,3:1609,4:$V2,5:$V3},{78:[1,1610],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1611],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1612],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1613],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,$VW4,{407:1614,76:$VX4}),o($VK,[2,591]),{74:$Vr5,78:[1,1615]},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1616,482:582,493:579,497:581},o($VD3,[2,735]),o($VK,[2,493],{352:1617,354:1618,355:1619,4:$VL5,243:$VM5,343:$VN5,356:$VO5}),o($VP5,$VQ5,{3:1268,359:1624,384:1625,360:1626,361:1627,2:$V1,4:$V2,5:$V3,367:$VR5}),{78:[2,507]},{76:[1,1629]},o($VK,[2,609]),o($VK,[2,1134]),{368:[1,1631],414:[1,1630]},o($VI4,[2,728]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1632,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,762]),o($VE5,[2,1182]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1633,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VE5,[2,1184]),{78:[1,1634]},{78:[1,1635],118:$VF5,278:1636},{78:[1,1637]},{119:[1,1638]},{119:[1,1639]},{78:[1,1640]},{78:[1,1641]},o($VL4,[2,476]),o($VI4,[2,464],{74:$VJ4}),{2:$V1,3:244,4:$V2,5:$V3,143:$VF1,145:$VG1,199:1643,431:1642},o($V75,[2,703]),o($V75,[2,705]),{146:[1,1644]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1645],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{339:$VS5,462:1646},{417:[1,1649],463:[1,1648]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1650,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VT5,[2,267],{87:1651,245:[1,1652],247:[1,1653]}),{119:[1,1654]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1655,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1661,4:$V2,5:$V3},{2:$V1,3:1662,4:$V2,5:$V3},o($Vn5,[2,207]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1663,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1664,111:1440},o($VJ5,[2,209]),{2:$V1,3:1665,4:$V2,5:$V3},o($VJ5,[2,1097],{220:1666,3:1667,2:$V1,4:$V2,5:$V3}),o($VK5,[2,1096]),o($VJ5,[2,212]),{2:$V1,3:1668,4:$V2,5:$V3},{78:[1,1669]},o($VJ5,[2,217]),{2:$V1,3:1670,4:$V2,5:$V3},o($VJ5,[2,220]),{2:$V1,3:1671,4:$V2,5:$V3},{40:1672,79:75,89:$V7,184:99,189:$Vb},{40:1673,79:75,89:$V7,184:99,189:$Vb},o($Vq5,[2,227]),o($Vq5,[2,229]),o($Vq5,[2,231]),o($Vf4,[2,171]),o($Vs5,[2,262]),o($Vs5,[2,265],{242:[1,1674]}),o($VQ4,[2,1084],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,141]),o($Vw3,[2,547]),o($Vw3,[2,550]),{374:[1,1675]},o($Vw3,[2,1127],{395:1676,393:1677,77:$VX5}),{131:$VV,196:1679},o($Vw3,[2,555]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1680,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vw3,[2,557]),o($Vw3,[2,559]),{2:$V1,3:114,4:$V2,5:$V3,77:[1,1682],113:251,131:$VV,132:$VW,143:$VY,152:$V$,156:$VL,181:$V31,196:250,200:255,201:254,257:252,258:253,265:$VD1,274:1681,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1683,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,578]),o($Vz2,[2,349]),o($Vz2,[2,350]),o($Vz2,[2,351]),o($Vz2,[2,352]),o($VK,[2,582]),o($VK,[2,592]),o($VD3,[2,734]),o($VK,[2,489]),o($VK,[2,494],{355:1684,4:$VL5,243:$VM5,343:$VN5,356:$VO5}),o($VY5,[2,496]),o($VY5,[2,497]),{124:[1,1685]},{124:[1,1686]},{124:[1,1687]},{74:[1,1688],78:[2,505]},o($V65,[2,533]),o($V65,[2,508]),{187:[1,1696],193:[1,1697],362:1689,363:1690,364:1691,365:1692,366:1693,368:$Vz5,369:[1,1694],370:[1,1698],373:[1,1695]},{2:$V1,3:1699,4:$V2,5:$V3},{40:1700,79:75,89:$V7,184:99,189:$Vb},{415:[1,1701]},{416:[1,1702]},o($VK,[2,761]),o($VK,[2,763]),o($Vx4,[2,537]),o($VB1,[2,331]),{78:[1,1703]},o($VB1,[2,332]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1704,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1705,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,317]),o($VB1,[2,319]),{2:$V1,3:1706,4:$V2,5:$V3},o($VK,[2,720],{77:[1,1707]}),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1708,336:1064,337:1066},{335:$VG5,338:$VH5,461:1709},o($V75,[2,707]),{77:[1,1711],343:[1,1712],344:[1,1710]},{170:[1,1714],309:[1,1713]},{170:[1,1716],309:[1,1715]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1717],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vh4,[2,250],{88:1718,162:[1,1719],168:[1,1721],169:[1,1720]}),{131:$VV,196:1722},{131:$VV,196:1723},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1724,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vm5,[2,248],{234:1725,74:$VZ5,239:[1,1727]}),o($V_5,[2,242]),{146:[1,1728]},{77:[1,1729]},{77:[1,1730]},o($V_5,[2,247],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{78:[2,1051],96:1731,99:[1,1733],102:1732},{99:[1,1734]},o($Vn5,[2,235],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($Vn5,[2,236],{74:$V35}),o($VJ5,[2,210]),o($VJ5,[2,211]),o($VJ5,[2,1098]),o($VJ5,[2,213]),{2:$V1,3:1735,4:$V2,5:$V3,76:[1,1736]},o($VJ5,[2,218]),o($VJ5,[2,221]),{78:[1,1737]},{78:[1,1738]},o($Vs5,[2,266]),{2:$V1,3:244,4:$V2,5:$V3,199:1739},o($Vw3,[2,552]),o($Vw3,[2,1128]),{2:$V1,3:1740,4:$V2,5:$V3},{74:[1,1741]},{78:[1,1742],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vw3,[2,562]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1743,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1744],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VY5,[2,495]),{2:$V1,3:1745,4:$V2,5:$V3},{131:$VV,196:1746},{2:$V1,3:1747,4:$V2,5:$V3},o($VP5,$VQ5,{361:1627,360:1748,367:$VR5}),o($VD3,[2,510]),o($VD3,[2,511]),o($VD3,[2,512]),o($VD3,[2,513]),o($VD3,[2,514]),{370:[1,1749]},{370:[1,1750]},o($V$5,[2,1121],{382:1751,370:[1,1752]}),{2:$V1,3:1753,4:$V2,5:$V3},{2:$V1,3:1754,4:$V2,5:$V3},o($VP5,[2,516]),o($VK,[2,1131],{411:1755,413:1756,72:$VD5}),o($VK,[2,610]),o($VK,[2,611],{367:[1,1757]}),o($VB1,[2,333]),o([78,118],[2,334],{74:$VZ5}),{74:$Vr5,78:[2,335]},o($VK,[2,719]),{2:$V1,3:1011,4:$V2,5:$V3,100:1758,111:1440},o($V75,[2,706],{74:$VT4}),o($V75,[2,704]),{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1759,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1760,111:1440},{344:[1,1761]},{339:$VS5,462:1762},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1763,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{339:$VS5,462:1764},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1765,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{339:$VS5,462:1766},o($Vh4,[2,72]),{40:1767,79:75,89:$V7,164:[1,1768],184:99,189:$Vb,240:[1,1769]},{40:1770,79:75,89:$V7,184:99,189:$Vb,240:[1,1771]},{40:1772,79:75,89:$V7,184:99,189:$Vb,240:[1,1773]},o($VT5,[2,270],{246:1774,247:[1,1775]}),{248:1776,249:[2,1099],766:[1,1777]},o($VI5,[2,260],{74:$Vr5}),o($Vm5,[2,241]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,235:1778,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1779,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1780]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1781,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1782,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1783]},{78:[2,1052]},{77:[1,1784]},{77:[1,1785]},o($VJ5,[2,214]),{2:$V1,3:1786,4:$V2,5:$V3},{2:$V1,3:1787,4:$V2,5:$V3,76:[1,1788]},{2:$V1,3:1789,4:$V2,5:$V3,76:[1,1790]},o($Vw3,[2,1125],{394:1791,393:1792,77:$VX5}),{78:[1,1793]},{131:$VV,196:1794},o($Vw3,[2,556]),{78:[1,1795],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vw3,[2,517]),o($VY5,[2,498]),o($VY5,[2,499]),o($VY5,[2,500]),o($V65,[2,509]),{2:$V1,3:1797,4:$V2,5:$V3,77:[2,1117],371:1796},{77:[1,1798]},{2:$V1,3:1800,4:$V2,5:$V3,77:[2,1123],383:1799},o($V$5,[2,1122]),{77:[1,1801]},{77:[1,1802]},o($VK,[2,608]),o($VK,[2,1132]),o($VP5,$VQ5,{361:1627,360:1803,367:$VR5}),{74:$V35,78:[1,1804]},o($V75,[2,713],{74:$VJ4}),{74:$V35,78:[1,1805]},o($V75,[2,715]),o($V75,[2,708]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1806],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($V75,[2,711]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1807],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($V75,[2,709]),o($Vh4,[2,251]),{40:1808,79:75,89:$V7,184:99,189:$Vb,240:[1,1809]},{40:1810,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,253]),{40:1811,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,254]),{40:1812,79:75,89:$V7,184:99,189:$Vb},o($VT5,[2,268]),{131:$VV,196:1813},{249:[1,1814]},{249:[2,1100]},o($V_5,[2,243]),o($Vm5,[2,249],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1815,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:$VZ5,78:[1,1816]},{74:$VZ5,78:[1,1817]},o($VN4,[2,1053],{97:1818,104:1819,3:1821,2:$V1,4:$V2,5:$V3,76:$V06}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1824,103:1822,105:1823,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1825,111:1440},o($VJ5,[2,215]),o($Vn5,[2,173]),{2:$V1,3:1826,4:$V2,5:$V3},o($Vn5,[2,175]),{2:$V1,3:1827,4:$V2,5:$V3},o($Vw3,[2,551]),o($Vw3,[2,1126]),o($Vw3,[2,549]),{78:[1,1828]},o($Vw3,[2,563]),{77:[1,1829]},{77:[2,1118]},{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1830},{77:[1,1833]},{77:[2,1124]},{2:$V1,3:1011,4:$V2,5:$V3,100:1834,111:1440},{2:$V1,3:1011,4:$V2,5:$V3,100:1835,111:1440},o($VK,[2,612]),o($VK,[2,721]),{343:[1,1837],344:[1,1836]},{339:$VS5,462:1838},{335:$VG5,338:$VH5,461:1839},o($Vh4,[2,252]),{40:1840,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,255]),o($Vh4,[2,257]),o($Vh4,[2,258]),o($VT5,[2,271]),{131:[2,1101],250:1841,645:[1,1842]},{74:$VZ5,78:[1,1843]},o($V_5,[2,245]),o($V_5,[2,246]),o($VN4,[2,74]),o($VN4,[2,1054]),{2:$V1,3:1844,4:$V2,5:$V3},o($VN4,[2,78]),{74:[1,1846],78:[1,1845]},o($V65,[2,80]),o($V65,[2,81],{114:625,327:637,76:[1,1847],99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{74:$V35,78:[1,1848]},o($Vn5,[2,174]),o($Vn5,[2,176]),o($Vw3,[2,553]),{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1849},{74:$V26,78:[1,1850]},o($V65,[2,528]),o($V65,[2,529]),{2:$V1,3:1011,4:$V2,5:$V3,100:1852,111:1440},{74:$V35,78:[1,1853]},{74:$V35,78:[1,1854]},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1855,419:190,420:$Vr1,424:$Vs1},{344:[1,1856]},o($V75,[2,710]),o($V75,[2,712]),o($Vh4,[2,256]),{131:$VV,196:1857},{131:[2,1102]},o($V_5,[2,244]),o($VN4,[2,77]),{78:[2,76]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1824,105:1858,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1859,4:$V2,5:$V3},{78:[1,1860]},{74:$V26,78:[1,1861]},{374:[1,1862]},{2:$V1,3:1863,4:$V2,5:$V3,132:[1,1864]},{74:$V35,78:[1,1865]},o($VD3,[2,526]),o($VD3,[2,527]),o($V75,[2,714],{74:$VJ4}),o($V75,[2,716]),o($V36,[2,1103],{251:1866,766:[1,1867]}),o($V65,[2,79]),o($V65,[2,82]),o($VN4,[2,1055],{3:1821,101:1868,104:1869,2:$V1,4:$V2,5:$V3,76:$V06}),o($VD3,[2,518]),{2:$V1,3:244,4:$V2,5:$V3,199:1870},o($V65,[2,530]),o($V65,[2,531]),o($VD3,[2,525]),o($VT5,[2,1105],{252:1871,415:[1,1872]}),o($V36,[2,1104]),o($VN4,[2,75]),o($VN4,[2,1056]),o($V46,[2,1119],{375:1873,377:1874,77:[1,1875]}),o($VT5,[2,269]),o($VT5,[2,1106]),o($VD3,[2,521],{376:1876,378:1877,230:[1,1878]}),o($V46,[2,1120]),{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1879},o($VD3,[2,519]),{230:[1,1881],379:1880},{338:[1,1882]},{74:$V26,78:[1,1883]},o($VD3,[2,522]),{335:[1,1884]},{380:[1,1885]},o($V46,[2,520]),{380:[1,1886]},{381:[1,1887]},{381:[1,1888]},{230:[2,523]},o($VD3,[2,524])],
+defaultActions: {105:[2,6],194:[2,336],195:[2,337],196:[2,338],197:[2,339],198:[2,340],199:[2,341],200:[2,342],201:[2,343],202:[2,344],209:[2,695],591:[2,1142],653:[2,1107],654:[2,1108],710:[2,696],780:[2,1073],781:[2,1074],926:[2,446],927:[2,447],928:[2,448],987:[2,697],1288:[2,1152],1375:[2,1060],1433:[2,1150],1541:[2,507],1732:[2,1052],1777:[2,1100],1797:[2,1118],1800:[2,1124],1842:[2,1102],1845:[2,76],1887:[2,523]},
+parseError: function parseError(str, hash) {
+ if (hash.recoverable) {
+ this.trace(str);
+ } else {
+ var error = new Error(str);
+ error.hash = hash;
+ throw error;
+ }
+},
+parse: function parse(input) {
+ var self = this,
+ stack = [0],
+ tstack = [], // token stack
+ vstack = [null], // semantic value stack
+ lstack = [], // location stack
+ table = this.table,
+ yytext = '',
+ yylineno = 0,
+ yyleng = 0,
+ recovering = 0,
+ TERROR = 2,
+ EOF = 1;
+
+ var args = lstack.slice.call(arguments, 1);
+
+ //this.reductionCount = this.shiftCount = 0;
+
+ var lexer = Object.create(this.lexer);
+ var sharedState = { yy: {} };
+ // copy state
+ for (var k in this.yy) {
+ if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+ sharedState.yy[k] = this.yy[k];
+ }
+ }
+
+ lexer.setInput(input, sharedState.yy);
+ sharedState.yy.lexer = lexer;
+ sharedState.yy.parser = this;
+ if (typeof lexer.yylloc == 'undefined') {
+ lexer.yylloc = {};
+ }
+ var yyloc = lexer.yylloc;
+ lstack.push(yyloc);
+
+ var ranges = lexer.options && lexer.options.ranges;
+
+ if (typeof sharedState.yy.parseError === 'function') {
+ this.parseError = sharedState.yy.parseError;
+ } else {
+ this.parseError = Object.getPrototypeOf(this).parseError;
+ }
+
+ function popStack (n) {
+ stack.length = stack.length - 2 * n;
+ vstack.length = vstack.length - n;
+ lstack.length = lstack.length - n;
+ }
+
+_token_stack:
+ var lex = function () {
+ var token;
+ token = lexer.lex() || EOF;
+ // if token isn't its numeric value, convert
+ if (typeof token !== 'number') {
+ token = self.symbols_[token] || token;
+ }
+ return token;
+ }
+
+ var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+ while (true) {
+ // retreive state number from top of stack
+ state = stack[stack.length - 1];
+
+ // use default actions if available
+ if (this.defaultActions[state]) {
+ action = this.defaultActions[state];
+ } else {
+ if (symbol === null || typeof symbol == 'undefined') {
+ symbol = lex();
+ }
+ // read action for current state and first input
+ action = table[state] && table[state][symbol];
+ }
+
+_handle_error:
+ // handle parse error
+ if (typeof action === 'undefined' || !action.length || !action[0]) {
+ var error_rule_depth;
+ var errStr = '';
+
+ // Return the rule stack depth where the nearest error rule can be found.
+ // Return FALSE when no error recovery rule was found.
+ function locateNearestErrorRecoveryRule(state) {
+ var stack_probe = stack.length - 1;
+ var depth = 0;
+
+ // try to recover from error
+ for(;;) {
+ // check for error recovery rule in this state
+ if ((TERROR.toString()) in table[state]) {
+ return depth;
+ }
+ if (state === 0 || stack_probe < 2) {
+ return false; // No suitable error recovery rule available.
+ }
+ stack_probe -= 2; // popStack(1): [symbol, action]
+ state = stack[stack_probe];
+ ++depth;
+ }
+ }
+
+ if (!recovering) {
+ // first see if there's any chance at hitting an error recovery rule:
+ error_rule_depth = locateNearestErrorRecoveryRule(state);
+
+ // Report error
+ expected = [];
+ for (p in table[state]) {
+ if (this.terminals_[p] && p > TERROR) {
+ expected.push("'"+this.terminals_[p]+"'");
+ }
+ }
+ if (lexer.showPosition) {
+ errStr = 'Parse error on line '+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + (this.terminals_[symbol] || symbol)+ "'";
+ } else {
+ errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
+ (symbol == EOF ? "end of input" :
+ ("'"+(this.terminals_[symbol] || symbol)+"'"));
+ }
+ this.parseError(errStr, {
+ text: lexer.match,
+ token: this.terminals_[symbol] || symbol,
+ line: lexer.yylineno,
+ loc: yyloc,
+ expected: expected,
+ recoverable: (error_rule_depth !== false)
+ });
+ } else if (preErrorSymbol !== EOF) {
+ error_rule_depth = locateNearestErrorRecoveryRule(state);
+ }
+
+ // just recovered from another error
+ if (recovering == 3) {
+ if (symbol === EOF || preErrorSymbol === EOF) {
+ throw new Error(errStr || 'Parsing halted while starting to recover from another error.');
+ }
+
+ // discard current lookahead and grab another
+ yyleng = lexer.yyleng;
+ yytext = lexer.yytext;
+ yylineno = lexer.yylineno;
+ yyloc = lexer.yylloc;
+ symbol = lex();
+ }
+
+ // try to recover from error
+ if (error_rule_depth === false) {
+ throw new Error(errStr || 'Parsing halted. No suitable error recovery rule available.');
+ }
+ popStack(error_rule_depth);
+
+ preErrorSymbol = (symbol == TERROR ? null : symbol); // save the lookahead token
+ symbol = TERROR; // insert generic error symbol as new lookahead
+ state = stack[stack.length-1];
+ action = table[state] && table[state][TERROR];
+ recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
+ }
+
+ // this shouldn't happen, unless resolve defaults are off
+ if (action[0] instanceof Array && action.length > 1) {
+ throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
+ }
+
+ switch (action[0]) {
+ case 1: // shift
+ //this.shiftCount++;
+
+ stack.push(symbol);
+ vstack.push(lexer.yytext);
+ lstack.push(lexer.yylloc);
+ stack.push(action[1]); // push state
+ symbol = null;
+ if (!preErrorSymbol) { // normal execution/no error
+ yyleng = lexer.yyleng;
+ yytext = lexer.yytext;
+ yylineno = lexer.yylineno;
+ yyloc = lexer.yylloc;
+ if (recovering > 0) {
+ recovering--;
+ }
+ } else {
+ // error just occurred, resume old lookahead f/ before error
+ symbol = preErrorSymbol;
+ preErrorSymbol = null;
+ }
+ break;
+
+ case 2:
+ // reduce
+ //this.reductionCount++;
+
+ len = this.productions_[action[1]][1];
+
+ // perform semantic action
+ yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
+ // default location, uses first token for firsts, last for lasts
+ yyval._$ = {
+ first_line: lstack[lstack.length-(len||1)].first_line,
+ last_line: lstack[lstack.length-1].last_line,
+ first_column: lstack[lstack.length-(len||1)].first_column,
+ last_column: lstack[lstack.length-1].last_column
+ };
+ if (ranges) {
+ yyval._$.range = [lstack[lstack.length-(len||1)].range[0], lstack[lstack.length-1].range[1]];
+ }
+ r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
+
+ if (typeof r !== 'undefined') {
+ return r;
+ }
+
+ // pop off stack
+ if (len) {
+ stack = stack.slice(0,-1*len*2);
+ vstack = vstack.slice(0, -1*len);
+ lstack = lstack.slice(0, -1*len);
+ }
+
+ stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)
+ vstack.push(yyval.$);
+ lstack.push(yyval._$);
+ // goto new state = table[STATE][NONTERMINAL]
+ newState = table[stack[stack.length-2]][stack[stack.length-1]];
+ stack.push(newState);
+ break;
+
+ case 3:
+ // accept
+ return true;
+ }
+
+ }
+
+ return true;
+}};
+
+// from https://www.postgresql.org/docs/current/static/sql-keywords-appendix.html
+// JSON.stringify([].slice.call(document.querySelectorAll('tr')).filter(x => x.children.length == 5 && x.children[2].innerText == 'reserved').map(x => x.children[0].innerText))
+
+var nonReserved = ["A","ABSENT","ABSOLUTE","ACCORDING","ACTION","ADA","ADD","ADMIN","AFTER","ALWAYS","ASC","ASSERTION","ASSIGNMENT","ATTRIBUTE","ATTRIBUTES","BASE64","BEFORE","BERNOULLI","BLOCKED","BOM","BREADTH","C","CASCADE","CATALOG","CATALOG_NAME","CHAIN","CHARACTERISTICS","CHARACTERS","CHARACTER_SET_CATALOG","CHARACTER_SET_NAME","CHARACTER_SET_SCHEMA","CLASS_ORIGIN","COBOL","COLLATION","COLLATION_CATALOG","COLLATION_NAME","COLLATION_SCHEMA","COLUMNS","COLUMN_NAME","COMMAND_FUNCTION","COMMAND_FUNCTION_CODE","COMMITTED","CONDITION_NUMBER","CONNECTION","CONNECTION_NAME","CONSTRAINTS","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONSTRUCTOR","CONTENT","CONTINUE","CONTROL","CURSOR_NAME","DATA","DATETIME_INTERVAL_CODE","DATETIME_INTERVAL_PRECISION","DB","DEFAULTS","DEFERRABLE","DEFERRED","DEFINED","DEFINER","DEGREE","DEPTH","DERIVED","DESC","DESCRIPTOR","DIAGNOSTICS","DISPATCH","DOCUMENT","DOMAIN","DYNAMIC_FUNCTION","DYNAMIC_FUNCTION_CODE","EMPTY","ENCODING","ENFORCED","EXCLUDE","EXCLUDING","EXPRESSION","FILE","FINAL","FIRST","FLAG","FOLLOWING","FORTRAN","FOUND","FS","G","GENERAL","GENERATED","GO","GOTO","GRANTED","HEX","HIERARCHY","ID","IGNORE","IMMEDIATE","IMMEDIATELY","IMPLEMENTATION","INCLUDING","INCREMENT","INDENT","INITIALLY","INPUT","INSTANCE","INSTANTIABLE","INSTEAD","INTEGRITY","INVOKER","ISOLATION","K","KEY","KEY_MEMBER","KEY_TYPE","LAST","LENGTH","LEVEL","LIBRARY","LIMIT","LINK","LOCATION","LOCATOR","M","MAP","MAPPING","MATCHED","MAXVALUE","MESSAGE_LENGTH","MESSAGE_OCTET_LENGTH","MESSAGE_TEXT","MINVALUE","MORE","MUMPS","NAME","NAMES","NAMESPACE","NESTING","NEXT","NFC","NFD","NFKC","NFKD","NIL","NORMALIZED","NULLABLE","NULLS","NUMBER","OBJECT","OCTETS","OFF","OPTION","OPTIONS","ORDERING","ORDINALITY","OTHERS","OUTPUT","OVERRIDING","P","PAD","PARAMETER_MODE","PARAMETER_NAME","PARAMETER_ORDINAL_POSITION","PARAMETER_SPECIFIC_CATALOG","PARAMETER_SPECIFIC_NAME","PARAMETER_SPECIFIC_SCHEMA","PARTIAL","PASCAL","PASSING","PASSTHROUGH","PATH","PERMISSION","PLACING","PLI","PRECEDING","PRESERVE","PRIOR","PRIVILEGES","PUBLIC","READ","RECOVERY","RELATIVE","REPEATABLE","REQUIRING","RESPECT","RESTART","RESTORE","RESTRICT","RETURNED_CARDINALITY","RETURNED_LENGTH","RETURNED_OCTET_LENGTH","RETURNED_SQLSTATE","RETURNING","ROLE","ROUTINE","ROUTINE_CATALOG","ROUTINE_NAME","ROUTINE_SCHEMA","ROW_COUNT","SCALE","SCHEMA","SCHEMA_NAME","SCOPE_CATALOG","SCOPE_NAME","SCOPE_SCHEMA","SECTION","SECURITY","SELECTIVE","SELF","SEQUENCE","SERIALIZABLE","SERVER","SERVER_NAME","SESSION","SETS","SIMPLE","SIZE","SOURCE","SPACE","SPECIFIC_NAME","STANDALONE","STATE","STATEMENT","STRIP","STRUCTURE","STYLE","SUBCLASS_ORIGIN","T","TABLE_NAME","TEMPORARY","TIES","TOKEN","TOP_LEVEL_COUNT","TRANSACTION","TRANSACTIONS_COMMITTED","TRANSACTIONS_ROLLED_BACK","TRANSACTION_ACTIVE","TRANSFORM","TRANSFORMS","TRIGGER_CATALOG","TRIGGER_NAME","TRIGGER_SCHEMA","TYPE","UNBOUNDED","UNCOMMITTED","UNDER","UNLINK","UNNAMED","UNTYPED","URI","USAGE","USER_DEFINED_TYPE_CATALOG","USER_DEFINED_TYPE_CODE","USER_DEFINED_TYPE_NAME","USER_DEFINED_TYPE_SCHEMA","VALID","VERSION","VIEW","WHITESPACE","WORK","WRAPPER","WRITE","XMLDECLARATION","XMLSCHEMA","YES","ZONE"]
+
+parser.parseError = function(str, hash) {
+ if (hash.expected && hash.expected.indexOf("'LITERAL'") > -1 && /[a-zA-Z_][a-zA-Z_0-9]*/.test(hash.token) && nonReserved.indexOf(hash.token) > -1) {
+ return
+ }
+ throw new SyntaxError(str)
+}
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+ if (this.yy.parser) {
+ this.yy.parser.parseError(str, hash);
+ } else {
+ throw new Error(str);
+ }
+ },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+ this.yy = yy || this.yy || {};
+ this._input = input;
+ this._more = this._backtrack = this.done = false;
+ this.yylineno = this.yyleng = 0;
+ this.yytext = this.matched = this.match = '';
+ this.conditionStack = ['INITIAL'];
+ this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0
+ };
+ if (this.options.ranges) {
+ this.yylloc.range = [0,0];
+ }
+ this.offset = 0;
+ return this;
+ },
+
+// consumes and returns one char from the input
+input:function () {
+ var ch = this._input[0];
+ this.yytext += ch;
+ this.yyleng++;
+ this.offset++;
+ this.match += ch;
+ this.matched += ch;
+ var lines = ch.match(/(?:\r\n?|\n).*/g);
+ if (lines) {
+ this.yylineno++;
+ this.yylloc.last_line++;
+ } else {
+ this.yylloc.last_column++;
+ }
+ if (this.options.ranges) {
+ this.yylloc.range[1]++;
+ }
+
+ this._input = this._input.slice(1);
+ return ch;
+ },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+ var len = ch.length;
+ var lines = ch.split(/(?:\r\n?|\n)/g);
+
+ this._input = ch + this._input;
+ this.yytext = this.yytext.substr(0, this.yytext.length - len);
+ //this.yyleng -= len;
+ this.offset -= len;
+ var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+ this.match = this.match.substr(0, this.match.length - 1);
+ this.matched = this.matched.substr(0, this.matched.length - 1);
+
+ if (lines.length - 1) {
+ this.yylineno -= lines.length - 1;
+ }
+ var r = this.yylloc.range;
+
+ this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: lines ?
+ (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+ + oldLines[oldLines.length - lines.length].length - lines[0].length :
+ this.yylloc.first_column - len
+ };
+
+ if (this.options.ranges) {
+ this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+ }
+ this.yyleng = this.yytext.length;
+ return this;
+ },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+ this._more = true;
+ return this;
+ },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+ if (this.options.backtrack_lexer) {
+ this._backtrack = true;
+ } else {
+ return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+
+ }
+ return this;
+ },
+
+// retain first n characters of the match
+less:function (n) {
+ this.unput(this.match.slice(n));
+ },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+ var past = this.matched.substr(0, this.matched.length - this.match.length);
+ return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+ },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+ var next = this.match;
+ if (next.length < 20) {
+ next += this._input.substr(0, 20-next.length);
+ }
+ return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+ },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+ var pre = this.pastInput();
+ var c = new Array(pre.length + 1).join("-");
+ return pre + this.upcomingInput() + "\n" + c + "^";
+ },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function (match, indexed_rule) {
+ var token,
+ lines,
+ backup;
+
+ if (this.options.backtrack_lexer) {
+ // save context
+ backup = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done
+ };
+ if (this.options.ranges) {
+ backup.yylloc.range = this.yylloc.range.slice(0);
+ }
+ }
+
+ lines = match[0].match(/(?:\r\n?|\n).*/g);
+ if (lines) {
+ this.yylineno += lines.length;
+ }
+ this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: lines ?
+ lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+ this.yylloc.last_column + match[0].length
+ };
+ this.yytext += match[0];
+ this.match += match[0];
+ this.matches = match;
+ this.yyleng = this.yytext.length;
+ if (this.options.ranges) {
+ this.yylloc.range = [this.offset, this.offset += this.yyleng];
+ }
+ this._more = false;
+ this._backtrack = false;
+ this._input = this._input.slice(match[0].length);
+ this.matched += match[0];
+ token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+ if (this.done && this._input) {
+ this.done = false;
+ }
+ if (token) {
+ return token;
+ } else if (this._backtrack) {
+ // recover context
+ for (var k in backup) {
+ this[k] = backup[k];
+ }
+ return false; // rule action called reject() implying the next rule should be tested instead.
+ }
+ return false;
+ },
+
+// return next match in input
+next:function () {
+ if (this.done) {
+ return this.EOF;
+ }
+ if (!this._input) {
+ this.done = true;
+ }
+
+ var token,
+ match,
+ tempMatch,
+ index;
+ if (!this._more) {
+ this.yytext = '';
+ this.match = '';
+ }
+ var rules = this._currentRules();
+ for (var i = 0; i < rules.length; i++) {
+ tempMatch = this._input.match(this.rules[rules[i]]);
+ if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+ match = tempMatch;
+ index = i;
+ if (this.options.backtrack_lexer) {
+ token = this.test_match(tempMatch, rules[i]);
+ if (token !== false) {
+ return token;
+ } else if (this._backtrack) {
+ match = false;
+ continue; // rule action called reject() implying a rule MISmatch.
+ } else {
+ // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+ return false;
+ }
+ } else if (!this.options.flex) {
+ break;
+ }
+ }
+ }
+ if (match) {
+ token = this.test_match(match, rules[index]);
+ if (token !== false) {
+ return token;
+ }
+ // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+ return false;
+ }
+ if (this._input === "") {
+ return this.EOF;
+ } else {
+ return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+ }
+ },
+
+// return next match that has a token
+lex:function lex() {
+ var r = this.next();
+ if (r) {
+ return r;
+ } else {
+ return this.lex();
+ }
+ },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin(condition) {
+ this.conditionStack.push(condition);
+ },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState() {
+ var n = this.conditionStack.length - 1;
+ if (n > 0) {
+ return this.conditionStack.pop();
+ } else {
+ return this.conditionStack[0];
+ }
+ },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules() {
+ if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+ return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+ } else {
+ return this.conditions["INITIAL"].rules;
+ }
+ },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState(n) {
+ n = this.conditionStack.length - 1 - Math.abs(n || 0);
+ if (n >= 0) {
+ return this.conditionStack[n];
+ } else {
+ return "INITIAL";
+ }
+ },
+
+// alias for begin(condition)
+pushState:function pushState(condition) {
+ this.begin(condition);
+ },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+ return this.conditionStack.length;
+ },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0:return 266
+break;
+case 1:return 302
+break;
+case 2:return 420
+break;
+case 3:return 299
+break;
+case 4:return 5
+break;
+case 5:return 5
+break;
+case 6:return 296
+break;
+case 7:return 296
+break;
+case 8:return 132
+break;
+case 9:return 132
+break;
+case 10:return /* its a COMMENT */
+break;
+case 11:/* skip whitespace */
+break;
+case 12:return 316
+break;
+case 13:return 319
+break;
+case 14:yy_.yytext = 'VALUE';return 89
+break;
+case 15:yy_.yytext = 'VALUE';return 189
+break;
+case 16:yy_.yytext = 'ROW';return 189
+break;
+case 17:yy_.yytext = 'COLUMN';return 189
+break;
+case 18:yy_.yytext = 'MATRIX';return 189
+break;
+case 19:yy_.yytext = 'INDEX';return 189
+break;
+case 20:yy_.yytext = 'RECORDSET';return 189
+break;
+case 21:yy_.yytext = 'TEXT';return 189
+break;
+case 22:yy_.yytext = 'SELECT';return 189
+break;
+case 23:return 520
+break;
+case 24:return 381
+break;
+case 25:return 402
+break;
+case 26:return 515
+break;
+case 27:return 287
+break;
+case 28:return 269
+break;
+case 29:return 269
+break;
+case 30:return 164
+break;
+case 31:return 400
+break;
+case 32:return 170
+break;
+case 33:return 229
+break;
+case 34:return 166
+break;
+case 35:return 207
+break;
+case 36:return 288
+break;
+case 37:return 76
+break;
+case 38:return 418
+break;
+case 39:return 242
+break;
+case 40:return 404
+break;
+case 41:return 356
+break;
+case 42:return 284
+break;
+case 43:return 514
+break;
+case 44:return 437
+break;
+case 45:return 330
+break;
+case 46:return 441
+break;
+case 47:return 331
+break;
+case 48:return 315
+break;
+case 49:return 119
+break;
+case 50:return 112
+break;
+case 51:return 315
+break;
+case 52:return 112
+break;
+case 53:return 315
+break;
+case 54:return 112
+break;
+case 55:return 315
+break;
+case 56:return 508
+break;
+case 57:return 303
+break;
+case 58:return 271
+break;
+case 59:return 368
+break;
+case 60:return 130
+break;
+case 61:return 'CLOSE'
+break;
+case 62:return 243
+break;
+case 63:return 190
+break;
+case 64:return 190
+break;
+case 65:return 434
+break;
+case 66:return 367
+break;
+case 67:return 470
+break;
+case 68:return 440
+break;
+case 69:return 273
+break;
+case 70:return 240
+break;
+case 71:return 281
+break;
+case 72:return 267
+break;
+case 73:return 206
+break;
+case 74:return 238
+break;
+case 75:return 265
+break;
+case 76:return 'CURSOR'
+break;
+case 77:return 405
+break;
+case 78:return 291
+break;
+case 79:return 292
+break;
+case 80:return 448
+break;
+case 81:return 343
+break;
+case 82:return 338
+break;
+case 83:return 'DELETED'
+break;
+case 84:return 242
+break;
+case 85:return 406
+break;
+case 86:return 185
+break;
+case 87:return 396
+break;
+case 88:return 447
+break;
+case 89:return 135
+break;
+case 90:return 306
+break;
+case 91:return 389
+break;
+case 92:return 310
+break;
+case 93:return 314
+break;
+case 94:return 169
+break;
+case 95:return 508
+break;
+case 96:return 508
+break;
+case 97:return 298
+break;
+case 98:return 14
+break;
+case 99:return 295
+break;
+case 100:return 249
+break;
+case 101:return 285
+break;
+case 102:return 95
+break;
+case 103:return 373
+break;
+case 104:return 183
+break;
+case 105:return 227
+break;
+case 106:return 268
+break;
+case 107:return 313
+break;
+case 108:return 602
+break;
+case 109:return 472
+break;
+case 110:return 232
+break;
+case 111:return 236
+break;
+case 112:return 239
+break;
+case 113:return 156
+break;
+case 114:return 356
+break;
+case 115:return 332
+break;
+case 116:return 99
+break;
+case 117:return 193
+break;
+case 118:return 212
+break;
+case 119:return 224
+break;
+case 120:return 516
+break;
+case 121:return 339
+break;
+case 122:return 213
+break;
+case 123:return 168
+break;
+case 124:return 293
+break;
+case 125:return 198
+break;
+case 126:return 223
+break;
+case 127:return 370
+break;
+case 128:return 286
+break;
+case 129:return 'LET'
+break;
+case 130:return 225
+break;
+case 131:return 112
+break;
+case 132:return 245
+break;
+case 133:return 460
+break;
+case 134:return 191
+break;
+case 135:return 283
+break;
+case 136:return 390
+break;
+case 137:return 282
+break;
+case 138:return 452
+break;
+case 139:return 169
+break;
+case 140:return 403
+break;
+case 141:return 222
+break;
+case 142:return 645
+break;
+case 143:return 270
+break;
+case 144:return 244
+break;
+case 145:return 380
+break;
+case 146:return 154
+break;
+case 147:return 297
+break;
+case 148:return 433
+break;
+case 149:return 230
+break;
+case 150:return 415
+break;
+case 151:return 129
+break;
+case 152:return 247
+break;
+case 153:return 'OPEN'
+break;
+case 154:return 416
+break;
+case 155:return 171
+break;
+case 156:return 118
+break;
+case 157:return 208
+break;
+case 158:return 276
+break;
+case 159:return 172
+break;
+case 160:return 279
+break;
+case 161:return 765
+break;
+case 162:return 93
+break;
+case 163:return 16
+break;
+case 164:return 369
+break;
+case 165:return 442
+break;
+case 166:return 678
+break;
+case 167:return 15
+break;
+case 168:return 414
+break;
+case 169:return 194
+break;
+case 170:return 'REDUCE'
+break;
+case 171:return 374
+break;
+case 172:return 311
+break;
+case 173:return 517
+break;
+case 174:return 682
+break;
+case 175:return 107
+break;
+case 176:return 401
+break;
+case 177:return 175
+break;
+case 178:return 290
+break;
+case 179:return 443
+break;
+case 180:return 687
+break;
+case 181:return 173
+break;
+case 182:return 173
+break;
+case 183:return 226
+break;
+case 184:return 436
+break;
+case 185:return 237
+break;
+case 186:return 150
+break;
+case 187:return 766
+break;
+case 188:return 405
+break;
+case 189:return 89
+break;
+case 190:return 228
+break;
+case 191:return 146
+break;
+case 192:return 146
+break;
+case 193:return 409
+break;
+case 194:return 334
+break;
+case 195:return 417
+break;
+case 196:return 'STRATEGY'
+break;
+case 197:return 'STORE'
+break;
+case 198:return 280
+break;
+case 199:return 353
+break;
+case 200:return 353
+break;
+case 201:return 463
+break;
+case 202:return 357
+break;
+case 203:return 357
+break;
+case 204:return 192
+break;
+case 205:return 309
+break;
+case 206:return 'TIMEOUT'
+break;
+case 207:return 148
+break;
+case 208:return 195
+break;
+case 209:return 435
+break;
+case 210:return 435
+break;
+case 211:return 509
+break;
+case 212:return 294
+break;
+case 213:return 451
+break;
+case 214:return 162
+break;
+case 215:return 187
+break;
+case 216:return 98
+break;
+case 217:return 335
+break;
+case 218:return 408
+break;
+case 219:return 231
+break;
+case 220:return 149
+break;
+case 221:return 344
+break;
+case 222:return 134
+break;
+case 223:return 410
+break;
+case 224:return 308
+break;
+case 225:return 128
+break;
+case 226:return 439
+break;
+case 227:return 72
+break;
+case 228:return 435 /* Is this keyword required? */
+break;
+case 229:return 131
+break;
+case 230:return 131
+break;
+case 231:return 115
+break;
+case 232:return 137
+break;
+case 233:return 179
+break;
+case 234:return 317
+break;
+case 235:return 180
+break;
+case 236:return 133
+break;
+case 237:return 138
+break;
+case 238:return 326
+break;
+case 239:return 323
+break;
+case 240:return 325
+break;
+case 241:return 322
+break;
+case 242:return 320
+break;
+case 243:return 318
+break;
+case 244:return 319
+break;
+case 245:return 142
+break;
+case 246:return 141
+break;
+case 247:return 139
+break;
+case 248:return 321
+break;
+case 249:return 324
+break;
+case 250:return 140
+break;
+case 251:return 124
+break;
+case 252:return 324
+break;
+case 253:return 77
+break;
+case 254:return 78
+break;
+case 255:return 145
+break;
+case 256:return 424
+break;
+case 257:return 426
+break;
+case 258:return 300
+break;
+case 259:return 505
+break;
+case 260:return 507
+break;
+case 261:return 122
+break;
+case 262:return 116
+break;
+case 263:return 74
+break;
+case 264:return 333
+break;
+case 265:return 152
+break;
+case 266:return 764
+break;
+case 267:return 143
+break;
+case 268:return 181
+break;
+case 269:return 136
+break;
+case 270:return 123
+break;
+case 271:return 312
+break;
+case 272:return 4
+break;
+case 273:return 10
+break;
+case 274:return 'INVALID'
+break;
+}
+},
+rules: [/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:ARRAY\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:\|)/i,/^(?:VALUE\s+OF\s+SEARCH\b)/i,/^(?:VALUE\s+OF\s+SELECT\b)/i,/^(?:ROW\s+OF\s+SELECT\b)/i,/^(?:COLUMN\s+OF\s+SELECT\b)/i,/^(?:MATRIX\s+OF\s+SELECT\b)/i,/^(?:INDEX\s+OF\s+SELECT\b)/i,/^(?:RECORDSET\s+OF\s+SELECT\b)/i,/^(?:TEXT\s+OF\s+SELECT\b)/i,/^(?:SELECT\b)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AFTER\b)/i,/^(?:AGGR\b)/i,/^(?:AGGREGATE\b)/i,/^(?:AGGREGATOR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTO(_)?INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEFORE\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:~~\*)/i,/^(?:!~~\*)/i,/^(?:~~)/i,/^(?:!~~)/i,/^(?:ILIKE\b)/i,/^(?:NOT\s+ILIKE\b)/i,/^(?:CALL\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHECK\b)/i,/^(?:CLASS\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTENT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:CORRESPONDING\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE(S)?)/i,/^(?:DATEADD\b)/i,/^(?:DATEDIFF\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:ECHO\b)/i,/^(?:EDGE\b)/i,/^(?:END\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:ESCAPE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXEC\b)/i,/^(?:EXECUTE\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOR\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:FULL\b)/i,/^(?:FUNCTION\b)/i,/^(?:GLOB\b)/i,/^(?:GO\b)/i,/^(?:GRAPH\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INDEXED\b)/i,/^(?:INNER\b)/i,/^(?:INSTEAD\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTERVAL\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LET\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX(\s+)?(?=\())/i,/^(?:MAX(\s+)?(?=(,|\))))/i,/^(?:MIN(\s+)?(?=\())/i,/^(?:MERGE\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:ONLY\b)/i,/^(?:OF\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OPTION\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PATH\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PIVOT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:READ\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:REGEXP\b)/i,/^(?:REINDEX\b)/i,/^(?:RELATIVE\b)/i,/^(?:REMOVE\b)/i,/^(?:RENAME\b)/i,/^(?:REPEAT\b)/i,/^(?:REPLACE\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RETURN\b)/i,/^(?:RETURNS\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:ROWS\b)/i,/^(?:SCHEMA(S)?)/i,/^(?:SEARCH\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:SOURCE\b)/i,/^(?:STRATEGY\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TEMP\b)/i,/^(?:TEMPORARY\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:THEN\b)/i,/^(?:TIMEOUT\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRIGGER\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UNPIVOT\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE\b)/i,/^(?:VALUES\b)/i,/^(?:VERTEX\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:#)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:&)/i,/^(?:\|)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?::-)/i,/^(?:\?-)/i,/^(?:\.\.)/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:!)/i,/^(?:\^)/i,/^(?:~)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],
+conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+ this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
+exports.parser = alasqlparser;
+exports.Parser = alasqlparser.Parser;
+exports.parse = function () { return alasqlparser.parse.apply(alasqlparser, arguments); };
+exports.main = function commonjsMain(args) {
+ if (!args[1]) {
+ console.log('Usage: '+args[0]+' FILE');
+ process.exit(1);
+ }
+ var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8");
+ return exports.parser.parse(source);
+};
+if (typeof module !== 'undefined' && require.main === module) {
+ exports.main(process.argv.slice(1));
+}
}
-/**
- 12prettyflag.js - prettify
- @todo move this functionality to plugin
-*/
-
-/**
- Pretty flag - nice HTML output or standard text without any tags
- @type {boolean}
-*/
-
-alasql.prettyflag = false;
-
-/**
- Pretty output of SQL functions
- @function
- @param {string} sql SQL statement
- @param {boolean} flag value
- @return {string} HTML or text string with pretty output
-*/
-
-alasql.pretty = function(sql, flag) {
- var pf = alasql.prettyflag;
- alasql.prettyflag = !flag;
- var s = alasql.parse(sql).toString();
- alasql.prettyflag = pf;
- return s;
-};
+/**
+ 12prettyflag.js - prettify
+ @todo move this functionality to plugin
+*/
+
+/**
+ Pretty flag - nice HTML output or standard text without any tags
+ @type {boolean}
+*/
+
+alasql.prettyflag = false;
+
+/**
+ Pretty output of SQL functions
+ @function
+ @param {string} sql SQL statement
+ @param {boolean} flag value
+ @return {string} HTML or text string with pretty output
+*/
+
+alasql.pretty = function(sql, flag) {
+ var pf = alasql.prettyflag;
+ alasql.prettyflag = !flag;
+ var s = alasql.parse(sql).toString();
+ alasql.prettyflag = pf;
+ return s;
+};
/*jshint unused:false*/
/*
@@ -4312,90 +4312,90 @@ var getXLSX = function() {
// set AlaSQl path
alasql.path = alasql.utils.findAlaSQLPath();
-/**
- Strip all comments.
- @function
- @param {string} str
- @return {string}
- Based om the https://github.com/lehni/uncomment.js/blob/master/uncomment.js
- I just replaced JavaScript's '//' to SQL's '--' and remove other stuff
-
- @todo Fixed [aaa/*bbb] for column names
- @todo Bug if -- comments in the last line
- @todo Check if it possible to model it with Jison parser
- @todo Remove unused code
- */
-
-/* global alasql */
-
-alasql.utils.uncomment = function(str) {
- // Add some padding so we can always look ahead and behind by two chars
- str = ('__' + str + '__').split('');
- var quote = false,
- quoteSign,
- // regularExpression = false,
- // characterClass = false,
- blockComment = false,
- lineComment = false;
- // preserveComment = false;
-
- for (var i = 0, l = str.length; i < l; i++) {
-
- // When checking for quote escaping, we also need to check that the
- // escape sign itself is not escaped, as otherwise '\\' would cause
- // the wrong impression of an unclosed string:
- var unescaped = str[i - 1] !== '\\' || str[i - 2] === '\\';
-
- if (quote) {
- if (str[i] === quoteSign && unescaped) {
- quote = false;
- }
-
- } else if (blockComment) {
- // Is the block comment closing?
- if (str[i] === '*' && str[i + 1] === '/') {
- // if (!preserveComment)
- str[i] = str[i + 1] = '';
- blockComment /* = preserveComment*/ = false;
- // Increase by 1 to skip closing '/', as it would be mistaken
- // for a regexp otherwise
- i++;
- } else {
- //if (!preserveComment) {
- str[i] = '';
- }
- } else if (lineComment) {
- // One-line comments end with the line-break
- if (str[i + 1] === '\n' || str[i + 1] === '\r') {
- lineComment = false;
- }
- str[i] = '';
- } else {
- if (str[i] === '"' || str[i] === "'") {
- quote = true;
- quoteSign = str[i];
- } else if (str[i] === '[' && str[i - 1] !== '@') {
- quote = true;
- quoteSign = ']';
- // } else if (str[i] === '-' && str[i + 1] === '-') {
- // str[i] = '';
- // lineComment = true;
- } else if (str[i] === '/' && str[i + 1] === '*') {
- // Do not filter out conditional comments /*@ ... */
- // and comments marked as protected /*! ... */
- // preserveComment = /[@!]/.test(str[i + 2]);
- // if (!preserveComment)
- str[i] = '';
- blockComment = true;
-
- }
- }
- }
- // Remove padding again.
- str = str.join('').slice(2, -2);
-
- return str;
-};
+/**
+ Strip all comments.
+ @function
+ @param {string} str
+ @return {string}
+ Based om the https://github.com/lehni/uncomment.js/blob/master/uncomment.js
+ I just replaced JavaScript's '//' to SQL's '--' and remove other stuff
+
+ @todo Fixed [aaa/*bbb] for column names
+ @todo Bug if -- comments in the last line
+ @todo Check if it possible to model it with Jison parser
+ @todo Remove unused code
+ */
+
+/* global alasql */
+
+alasql.utils.uncomment = function(str) {
+ // Add some padding so we can always look ahead and behind by two chars
+ str = ('__' + str + '__').split('');
+ var quote = false,
+ quoteSign,
+ // regularExpression = false,
+ // characterClass = false,
+ blockComment = false,
+ lineComment = false;
+ // preserveComment = false;
+
+ for (var i = 0, l = str.length; i < l; i++) {
+
+ // When checking for quote escaping, we also need to check that the
+ // escape sign itself is not escaped, as otherwise '\\' would cause
+ // the wrong impression of an unclosed string:
+ var unescaped = str[i - 1] !== '\\' || str[i - 2] === '\\';
+
+ if (quote) {
+ if (str[i] === quoteSign && unescaped) {
+ quote = false;
+ }
+
+ } else if (blockComment) {
+ // Is the block comment closing?
+ if (str[i] === '*' && str[i + 1] === '/') {
+ // if (!preserveComment)
+ str[i] = str[i + 1] = '';
+ blockComment /* = preserveComment*/ = false;
+ // Increase by 1 to skip closing '/', as it would be mistaken
+ // for a regexp otherwise
+ i++;
+ } else {
+ //if (!preserveComment) {
+ str[i] = '';
+ }
+ } else if (lineComment) {
+ // One-line comments end with the line-break
+ if (str[i + 1] === '\n' || str[i + 1] === '\r') {
+ lineComment = false;
+ }
+ str[i] = '';
+ } else {
+ if (str[i] === '"' || str[i] === "'") {
+ quote = true;
+ quoteSign = str[i];
+ } else if (str[i] === '[' && str[i - 1] !== '@') {
+ quote = true;
+ quoteSign = ']';
+ // } else if (str[i] === '-' && str[i + 1] === '-') {
+ // str[i] = '';
+ // lineComment = true;
+ } else if (str[i] === '/' && str[i + 1] === '*') {
+ // Do not filter out conditional comments /*@ ... */
+ // and comments marked as protected /*! ... */
+ // preserveComment = /[@!]/.test(str[i + 2]);
+ // if (!preserveComment)
+ str[i] = '';
+ blockComment = true;
+
+ }
+ }
+ }
+ // Remove padding again.
+ str = str.join('').slice(2, -2);
+
+ return str;
+};
/**
Database class for Alasql.js
@@ -4785,625 +4785,625 @@ alasql.compile = function(sql, databaseid) {
}
};
-//
-// Promises for AlaSQL
-//
-
-if (!utils.global.Promise) {
- if (utils.isNode) {
- //*not-for-browser/*
- utils.global.Promise = require('es6-promise').Promise;
- //*/
- } else {
- /*!
- * @overview es6-promise - a tiny implementation of Promises/A+.
- * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
- * @license Licensed under MIT license
- * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE
- * @version 3.2.1
- */
- (function() {
- 'use strict';
- function t(t) {
- return 'function' == typeof t || ('object' == typeof t && null !== t);
- }
- function e(t) {
- return 'function' == typeof t;
- }
- function n(t) {
- G = t;
- }
- function r(t) {
- Q = t;
- }
- function o() {
- return function() {
- process.nextTick(a);
- };
- }
- function i() {
- return function() {
- B(a);
- };
- }
- function s() {
- var t = 0,
- e = new X(a),
- n = document.createTextNode('');
- return (
- e.observe(n, {characterData: !0}),
- function() {
- n.data = t = ++t % 2;
- }
- );
- }
- function u() {
- var t = new MessageChannel();
- return (
- (t.port1.onmessage = a),
- function() {
- t.port2.postMessage(0);
- }
- );
- }
- function c() {
- return function() {
- setTimeout(a, 1);
- };
- }
- function a() {
- for (var t = 0; J > t; t += 2) {
- var e = tt[t],
- n = tt[t + 1];
- e(n), (tt[t] = void 0), (tt[t + 1] = void 0);
- }
- J = 0;
- }
- function f() {
- try {
- var t = require,
- e = t('vertx');
- return (B = e.runOnLoop || e.runOnContext), i();
- } catch (n) {
- return c();
- }
- }
- function l(t, e) {
- var n = this,
- r = new this.constructor(p);
- void 0 === r[rt] && k(r);
- var o = n._state;
- if (o) {
- var i = arguments[o - 1];
- Q(function() {
- x(o, r, i, n._result);
- });
- } else E(n, r, t, e);
- return r;
- }
- function h(t) {
- var e = this;
- if (t && 'object' == typeof t && t.constructor === e) return t;
- var n = new e(p);
- return g(n, t), n;
- }
- function p() {}
- function _() {
- return new TypeError('You cannot resolve a promise with itself');
- }
- function d() {
- return new TypeError('A promises callback cannot return that same promise.');
- }
- function v(t) {
- try {
- return t.then;
- } catch (e) {
- return (ut.error = e), ut;
- }
- }
- function y(t, e, n, r) {
- try {
- t.call(e, n, r);
- } catch (o) {
- return o;
- }
- }
- function m(t, e, n) {
- Q(function(t) {
- var r = !1,
- o = y(
- n,
- e,
- function(n) {
- r || ((r = !0), e !== n ? g(t, n) : S(t, n));
- },
- function(e) {
- r || ((r = !0), j(t, e));
- },
- 'Settle: ' + (t._label || ' unknown promise')
- );
- !r && o && ((r = !0), j(t, o));
- }, t);
- }
- function b(t, e) {
- e._state === it
- ? S(t, e._result)
- : e._state === st
- ? j(t, e._result)
- : E(
- e,
- void 0,
- function(e) {
- g(t, e);
- },
- function(e) {
- j(t, e);
- }
- );
- }
- function w(t, n, r) {
- n.constructor === t.constructor && r === et && constructor.resolve === nt
- ? b(t, n)
- : r === ut
- ? j(t, ut.error)
- : void 0 === r ? S(t, n) : e(r) ? m(t, n, r) : S(t, n);
- }
- function g(e, n) {
- e === n ? j(e, _()) : t(n) ? w(e, n, v(n)) : S(e, n);
- }
- function A(t) {
- t._onerror && t._onerror(t._result), T(t);
- }
- function S(t, e) {
- t._state === ot &&
- ((t._result = e), (t._state = it), 0 !== t._subscribers.length && Q(T, t));
- }
- function j(t, e) {
- t._state === ot && ((t._state = st), (t._result = e), Q(A, t));
- }
- function E(t, e, n, r) {
- var o = t._subscribers,
- i = o.length;
- (t._onerror = null),
- (o[i] = e),
- (o[i + it] = n),
- (o[i + st] = r),
- 0 === i && t._state && Q(T, t);
- }
- function T(t) {
- var e = t._subscribers,
- n = t._state;
- if (0 !== e.length) {
- for (var r, o, i = t._result, s = 0; s < e.length; s += 3)
- (r = e[s]), (o = e[s + n]), r ? x(n, r, o, i) : o(i);
- t._subscribers.length = 0;
- }
- }
- function M() {
- this.error = null;
- }
- function P(t, e) {
- try {
- return t(e);
- } catch (n) {
- return (ct.error = n), ct;
- }
- }
- function x(t, n, r, o) {
- var i,
- s,
- u,
- c,
- a = e(r);
- if (a) {
- if (
- ((i = P(r, o)),
- i === ct ? ((c = !0), (s = i.error), (i = null)) : (u = !0),
- n === i)
- )
- return void j(n, d());
- } else (i = o), (u = !0);
- n._state !== ot ||
- (a && u ? g(n, i) : c ? j(n, s) : t === it ? S(n, i) : t === st && j(n, i));
- }
- function C(t, e) {
- try {
- e(
- function(e) {
- g(t, e);
- },
- function(e) {
- j(t, e);
- }
- );
- } catch (n) {
- j(t, n);
- }
- }
- function O() {
- return at++;
- }
- function k(t) {
- (t[rt] = at++), (t._state = void 0), (t._result = void 0), (t._subscribers = []);
- }
- function Y(t) {
- return new _t(this, t).promise;
- }
- function q(t) {
- var e = this;
- return new e(
- I(t)
- ? function(n, r) {
- for (var o = t.length, i = 0; o > i; i++)
- e.resolve(t[i]).then(n, r);
- }
- : function(t, e) {
- e(new TypeError('You must pass an array to race.'));
- }
- );
- }
- function F(t) {
- var e = this,
- n = new e(p);
- return j(n, t), n;
- }
- function D() {
- throw new TypeError(
- 'You must pass a resolver function as the first argument to the promise constructor'
- );
- }
- function K() {
- throw new TypeError(
- "Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."
- );
- }
- function L(t) {
- (this[rt] = O()),
- (this._result = this._state = void 0),
- (this._subscribers = []),
- p !== t &&
- ('function' != typeof t && D(), this instanceof L ? C(this, t) : K());
- }
- function N(t, e) {
- (this._instanceConstructor = t),
- (this.promise = new t(p)),
- this.promise[rt] || k(this.promise),
- Array.isArray(e)
- ? ((this._input = e),
- (this.length = e.length),
- (this._remaining = e.length),
- (this._result = new Array(this.length)),
- 0 === this.length
- ? S(this.promise, this._result)
- : ((this.length = this.length || 0),
- this._enumerate(),
- 0 === this._remaining && S(this.promise, this._result)))
- : j(this.promise, U());
- }
- function U() {
- return new Error('Array Methods must be provided an Array');
- }
- function W() {
- var t;
- if ('undefined' != typeof global) t = global;
- else if ('undefined' != typeof self) t = self;
- else
- try {
- t = Function('return this')();
- } catch (e) {
- throw new Error(
- 'polyfill failed because global object is unavailable in this environment'
- );
- }
- var n = t.Promise;
- (!n ||
- '[object Promise]' !== Object.prototype.toString.call(n.resolve()) ||
- n.cast) &&
- (t.Promise = pt);
- }
- var z;
- z = Array.isArray
- ? Array.isArray
- : function(t) {
- return '[object Array]' === Object.prototype.toString.call(t);
- };
- var B,
- G,
- H,
- I = z,
- J = 0,
- Q = function(t, e) {
- (tt[J] = t), (tt[J + 1] = e), (J += 2), 2 === J && (G ? G(a) : H());
- },
- R = 'undefined' != typeof window ? window : void 0,
- V = R || {},
- X = V.MutationObserver || V.WebKitMutationObserver,
- Z =
- 'undefined' == typeof self &&
- 'undefined' != typeof process &&
- '[object process]' === {}.toString.call(process),
- $ =
- 'undefined' != typeof Uint8ClampedArray &&
- 'undefined' != typeof importScripts &&
- 'undefined' != typeof MessageChannel,
- tt = new Array(1e3);
- H = Z
- ? o()
- : X ? s() : $ ? u() : void 0 === R && 'function' == typeof require ? f() : c();
- var et = l,
- nt = h,
- rt = Math.random()
- .toString(36)
- .substring(16),
- ot = void 0,
- it = 1,
- st = 2,
- ut = new M(),
- ct = new M(),
- at = 0,
- ft = Y,
- lt = q,
- ht = F,
- pt = L;
- (L.all = ft),
- (L.race = lt),
- (L.resolve = nt),
- (L.reject = ht),
- (L._setScheduler = n),
- (L._setAsap = r),
- (L._asap = Q),
- (L.prototype = {
- constructor: L,
- then: et,
- catch: function(t) {
- return this.then(null, t);
- },
- });
- var _t = N;
- (N.prototype._enumerate = function() {
- for (var t = this.length, e = this._input, n = 0; this._state === ot && t > n; n++)
- this._eachEntry(e[n], n);
- }),
- (N.prototype._eachEntry = function(t, e) {
- var n = this._instanceConstructor,
- r = n.resolve;
- if (r === nt) {
- var o = v(t);
- if (o === et && t._state !== ot) this._settledAt(t._state, e, t._result);
- else if ('function' != typeof o) this._remaining--, (this._result[e] = t);
- else if (n === pt) {
- var i = new n(p);
- w(i, t, o), this._willSettleAt(i, e);
- } else
- this._willSettleAt(
- new n(function(e) {
- e(t);
- }),
- e
- );
- } else this._willSettleAt(r(t), e);
- }),
- (N.prototype._settledAt = function(t, e, n) {
- var r = this.promise;
- r._state === ot &&
- (this._remaining--, t === st ? j(r, n) : (this._result[e] = n)),
- 0 === this._remaining && S(r, this._result);
- }),
- (N.prototype._willSettleAt = function(t, e) {
- var n = this;
- E(
- t,
- void 0,
- function(t) {
- n._settledAt(it, e, t);
- },
- function(t) {
- n._settledAt(st, e, t);
- }
- );
- });
- var dt = W,
- vt = {Promise: pt, polyfill: dt};
- 'function' == typeof define && define.amd
- ? define(function() {
- return vt;
- })
- : 'undefined' != typeof module && module.exports
- ? (module.exports = vt)
- : 'undefined' != typeof this && (this.ES6Promise = vt),
- dt();
- }.call(this));
-
- }
-}
-
-var promiseExec = function(sql, params, counterStep, counterTotal) {
- return new utils.global.Promise(function(resolve, reject) {
- alasql(sql, params, function(data, err) {
- if (err) {
- reject(err);
- } else {
- if (counterStep && counterTotal && alasql.options.progress !== false) {
- alasql.options.progress(counterStep, counterTotal);
- }
- resolve(data);
- }
- });
- });
-};
-
-var promiseAll = function(sqlParamsArray) {
- if (sqlParamsArray.length < 1) {
- return;
- }
-
- var active, sql, params;
-
- var execArray = [];
-
- for (var i = 0; i < sqlParamsArray.length; i++) {
- active = sqlParamsArray[i];
-
- if (typeof active === 'string') {
- active = [active];
- }
-
- if (!utils.isArray(active) || active.length < 1 || 2 < active.length) {
- throw new Error('Error in .promise parameter');
- }
-
- sql = active[0];
- params = active[1] || undefined;
-
- execArray.push(promiseExec(sql, params, i, sqlParamsArray.length));
- }
-
- return utils.global.Promise.all(execArray);
-};
-
-alasql.promise = function(sql, params) {
- if (typeof Promise === 'undefined') {
- throw new Error('Please include a Promise/A+ library');
- }
-
- if (typeof sql === 'string') {
- return promiseExec(sql, params);
- }
-
- if (!utils.isArray(sql) || sql.length < 1 || typeof params !== 'undefined') {
- throw new Error('Error in .promise parameters');
- }
- return promiseAll(sql);
-};
-
-/*
-//
-// Database class for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// Main Database class
-
-/**
- @class Database
- */
-
-var Database = (alasql.Database = function(databaseid) {
- var self = this;
-
- // self.prototype = this;
-
- if (self === alasql) {
- if (databaseid) {
- // if(alasql.databases[databaseid]) {
- self = alasql.databases[databaseid];
- // } else {
- alasql.databases[databaseid] = self;
- // }
- if (!self) {
- throw new Error('Database "' + databaseid + '" not found');
- }
- } else {
- // Create new database (or get alasql?)
- self = alasql.databases.alasql;
- // For SQL Server examples, USE tempdb
- if (alasql.options.tsql) {
- alasql.databases.tempdb = alasql.databases.alasql;
- }
- // self = new Database(databaseid); // to call without new
- }
- }
- if (!databaseid) {
- databaseid = 'db' + alasql.databasenum++; // Random name
- }
-
- // Step 1
- self.databaseid = databaseid;
- alasql.databases[databaseid] = self;
- self.dbversion = 0;
-
- //Steps 2-5
- self.tables = {};
- self.views = {};
- self.triggers = {};
- self.indices = {};
-
- // Step 6: Objects storage
- self.objects = {};
- self.counter = 0;
-
- self.resetSqlCache();
- return self;
-});
-
-/**
- Reset SQL statements cache
- */
-
-Database.prototype.resetSqlCache = function() {
- this.sqlCache = {}; // Cache for compiled SQL statements
- this.sqlCacheSize = 0;
-};
-
-// Main SQL function
-
-/**
- Run SQL statement on database
- @param {string} sql SQL statement
- @param [object] params Parameters
- @param {function} cb callback
- */
-
-Database.prototype.exec = function(sql, params, cb) {
- return alasql.dexec(this.databaseid, sql, params, cb);
-};
-
-Database.prototype.autoval = function(tablename, colname, getNext) {
- return alasql.autoval(tablename, colname, getNext, this.databaseid);
-};
-
-// Aliases like MS SQL
-
-/*
//
-// Transactio class for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
+// Promises for AlaSQL
//
-*/
-Database.prototype.transaction = function(cb) {
- var tx = new alasql.Transaction(this.databaseid);
- var res = cb(tx);
- return res;
-};
+if (!utils.global.Promise) {
+ if (utils.isNode) {
+ //*not-for-browser/*
+ utils.global.Promise = require('es6-promise').Promise;
+ //*/
+ } else {
+ /*!
+ * @overview es6-promise - a tiny implementation of Promises/A+.
+ * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
+ * @license Licensed under MIT license
+ * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE
+ * @version 3.2.1
+ */
+ (function() {
+ 'use strict';
+ function t(t) {
+ return 'function' == typeof t || ('object' == typeof t && null !== t);
+ }
+ function e(t) {
+ return 'function' == typeof t;
+ }
+ function n(t) {
+ G = t;
+ }
+ function r(t) {
+ Q = t;
+ }
+ function o() {
+ return function() {
+ process.nextTick(a);
+ };
+ }
+ function i() {
+ return function() {
+ B(a);
+ };
+ }
+ function s() {
+ var t = 0,
+ e = new X(a),
+ n = document.createTextNode('');
+ return (
+ e.observe(n, {characterData: !0}),
+ function() {
+ n.data = t = ++t % 2;
+ }
+ );
+ }
+ function u() {
+ var t = new MessageChannel();
+ return (
+ (t.port1.onmessage = a),
+ function() {
+ t.port2.postMessage(0);
+ }
+ );
+ }
+ function c() {
+ return function() {
+ setTimeout(a, 1);
+ };
+ }
+ function a() {
+ for (var t = 0; J > t; t += 2) {
+ var e = tt[t],
+ n = tt[t + 1];
+ e(n), (tt[t] = void 0), (tt[t + 1] = void 0);
+ }
+ J = 0;
+ }
+ function f() {
+ try {
+ var t = require,
+ e = t('vertx');
+ return (B = e.runOnLoop || e.runOnContext), i();
+ } catch (n) {
+ return c();
+ }
+ }
+ function l(t, e) {
+ var n = this,
+ r = new this.constructor(p);
+ void 0 === r[rt] && k(r);
+ var o = n._state;
+ if (o) {
+ var i = arguments[o - 1];
+ Q(function() {
+ x(o, r, i, n._result);
+ });
+ } else E(n, r, t, e);
+ return r;
+ }
+ function h(t) {
+ var e = this;
+ if (t && 'object' == typeof t && t.constructor === e) return t;
+ var n = new e(p);
+ return g(n, t), n;
+ }
+ function p() {}
+ function _() {
+ return new TypeError('You cannot resolve a promise with itself');
+ }
+ function d() {
+ return new TypeError('A promises callback cannot return that same promise.');
+ }
+ function v(t) {
+ try {
+ return t.then;
+ } catch (e) {
+ return (ut.error = e), ut;
+ }
+ }
+ function y(t, e, n, r) {
+ try {
+ t.call(e, n, r);
+ } catch (o) {
+ return o;
+ }
+ }
+ function m(t, e, n) {
+ Q(function(t) {
+ var r = !1,
+ o = y(
+ n,
+ e,
+ function(n) {
+ r || ((r = !0), e !== n ? g(t, n) : S(t, n));
+ },
+ function(e) {
+ r || ((r = !0), j(t, e));
+ },
+ 'Settle: ' + (t._label || ' unknown promise')
+ );
+ !r && o && ((r = !0), j(t, o));
+ }, t);
+ }
+ function b(t, e) {
+ e._state === it
+ ? S(t, e._result)
+ : e._state === st
+ ? j(t, e._result)
+ : E(
+ e,
+ void 0,
+ function(e) {
+ g(t, e);
+ },
+ function(e) {
+ j(t, e);
+ }
+ );
+ }
+ function w(t, n, r) {
+ n.constructor === t.constructor && r === et && constructor.resolve === nt
+ ? b(t, n)
+ : r === ut
+ ? j(t, ut.error)
+ : void 0 === r ? S(t, n) : e(r) ? m(t, n, r) : S(t, n);
+ }
+ function g(e, n) {
+ e === n ? j(e, _()) : t(n) ? w(e, n, v(n)) : S(e, n);
+ }
+ function A(t) {
+ t._onerror && t._onerror(t._result), T(t);
+ }
+ function S(t, e) {
+ t._state === ot &&
+ ((t._result = e), (t._state = it), 0 !== t._subscribers.length && Q(T, t));
+ }
+ function j(t, e) {
+ t._state === ot && ((t._state = st), (t._result = e), Q(A, t));
+ }
+ function E(t, e, n, r) {
+ var o = t._subscribers,
+ i = o.length;
+ (t._onerror = null),
+ (o[i] = e),
+ (o[i + it] = n),
+ (o[i + st] = r),
+ 0 === i && t._state && Q(T, t);
+ }
+ function T(t) {
+ var e = t._subscribers,
+ n = t._state;
+ if (0 !== e.length) {
+ for (var r, o, i = t._result, s = 0; s < e.length; s += 3)
+ (r = e[s]), (o = e[s + n]), r ? x(n, r, o, i) : o(i);
+ t._subscribers.length = 0;
+ }
+ }
+ function M() {
+ this.error = null;
+ }
+ function P(t, e) {
+ try {
+ return t(e);
+ } catch (n) {
+ return (ct.error = n), ct;
+ }
+ }
+ function x(t, n, r, o) {
+ var i,
+ s,
+ u,
+ c,
+ a = e(r);
+ if (a) {
+ if (
+ ((i = P(r, o)),
+ i === ct ? ((c = !0), (s = i.error), (i = null)) : (u = !0),
+ n === i)
+ )
+ return void j(n, d());
+ } else (i = o), (u = !0);
+ n._state !== ot ||
+ (a && u ? g(n, i) : c ? j(n, s) : t === it ? S(n, i) : t === st && j(n, i));
+ }
+ function C(t, e) {
+ try {
+ e(
+ function(e) {
+ g(t, e);
+ },
+ function(e) {
+ j(t, e);
+ }
+ );
+ } catch (n) {
+ j(t, n);
+ }
+ }
+ function O() {
+ return at++;
+ }
+ function k(t) {
+ (t[rt] = at++), (t._state = void 0), (t._result = void 0), (t._subscribers = []);
+ }
+ function Y(t) {
+ return new _t(this, t).promise;
+ }
+ function q(t) {
+ var e = this;
+ return new e(
+ I(t)
+ ? function(n, r) {
+ for (var o = t.length, i = 0; o > i; i++)
+ e.resolve(t[i]).then(n, r);
+ }
+ : function(t, e) {
+ e(new TypeError('You must pass an array to race.'));
+ }
+ );
+ }
+ function F(t) {
+ var e = this,
+ n = new e(p);
+ return j(n, t), n;
+ }
+ function D() {
+ throw new TypeError(
+ 'You must pass a resolver function as the first argument to the promise constructor'
+ );
+ }
+ function K() {
+ throw new TypeError(
+ "Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."
+ );
+ }
+ function L(t) {
+ (this[rt] = O()),
+ (this._result = this._state = void 0),
+ (this._subscribers = []),
+ p !== t &&
+ ('function' != typeof t && D(), this instanceof L ? C(this, t) : K());
+ }
+ function N(t, e) {
+ (this._instanceConstructor = t),
+ (this.promise = new t(p)),
+ this.promise[rt] || k(this.promise),
+ Array.isArray(e)
+ ? ((this._input = e),
+ (this.length = e.length),
+ (this._remaining = e.length),
+ (this._result = new Array(this.length)),
+ 0 === this.length
+ ? S(this.promise, this._result)
+ : ((this.length = this.length || 0),
+ this._enumerate(),
+ 0 === this._remaining && S(this.promise, this._result)))
+ : j(this.promise, U());
+ }
+ function U() {
+ return new Error('Array Methods must be provided an Array');
+ }
+ function W() {
+ var t;
+ if ('undefined' != typeof global) t = global;
+ else if ('undefined' != typeof self) t = self;
+ else
+ try {
+ t = Function('return this')();
+ } catch (e) {
+ throw new Error(
+ 'polyfill failed because global object is unavailable in this environment'
+ );
+ }
+ var n = t.Promise;
+ (!n ||
+ '[object Promise]' !== Object.prototype.toString.call(n.resolve()) ||
+ n.cast) &&
+ (t.Promise = pt);
+ }
+ var z;
+ z = Array.isArray
+ ? Array.isArray
+ : function(t) {
+ return '[object Array]' === Object.prototype.toString.call(t);
+ };
+ var B,
+ G,
+ H,
+ I = z,
+ J = 0,
+ Q = function(t, e) {
+ (tt[J] = t), (tt[J + 1] = e), (J += 2), 2 === J && (G ? G(a) : H());
+ },
+ R = 'undefined' != typeof window ? window : void 0,
+ V = R || {},
+ X = V.MutationObserver || V.WebKitMutationObserver,
+ Z =
+ 'undefined' == typeof self &&
+ 'undefined' != typeof process &&
+ '[object process]' === {}.toString.call(process),
+ $ =
+ 'undefined' != typeof Uint8ClampedArray &&
+ 'undefined' != typeof importScripts &&
+ 'undefined' != typeof MessageChannel,
+ tt = new Array(1e3);
+ H = Z
+ ? o()
+ : X ? s() : $ ? u() : void 0 === R && 'function' == typeof require ? f() : c();
+ var et = l,
+ nt = h,
+ rt = Math.random()
+ .toString(36)
+ .substring(16),
+ ot = void 0,
+ it = 1,
+ st = 2,
+ ut = new M(),
+ ct = new M(),
+ at = 0,
+ ft = Y,
+ lt = q,
+ ht = F,
+ pt = L;
+ (L.all = ft),
+ (L.race = lt),
+ (L.resolve = nt),
+ (L.reject = ht),
+ (L._setScheduler = n),
+ (L._setAsap = r),
+ (L._asap = Q),
+ (L.prototype = {
+ constructor: L,
+ then: et,
+ catch: function(t) {
+ return this.then(null, t);
+ },
+ });
+ var _t = N;
+ (N.prototype._enumerate = function() {
+ for (var t = this.length, e = this._input, n = 0; this._state === ot && t > n; n++)
+ this._eachEntry(e[n], n);
+ }),
+ (N.prototype._eachEntry = function(t, e) {
+ var n = this._instanceConstructor,
+ r = n.resolve;
+ if (r === nt) {
+ var o = v(t);
+ if (o === et && t._state !== ot) this._settledAt(t._state, e, t._result);
+ else if ('function' != typeof o) this._remaining--, (this._result[e] = t);
+ else if (n === pt) {
+ var i = new n(p);
+ w(i, t, o), this._willSettleAt(i, e);
+ } else
+ this._willSettleAt(
+ new n(function(e) {
+ e(t);
+ }),
+ e
+ );
+ } else this._willSettleAt(r(t), e);
+ }),
+ (N.prototype._settledAt = function(t, e, n) {
+ var r = this.promise;
+ r._state === ot &&
+ (this._remaining--, t === st ? j(r, n) : (this._result[e] = n)),
+ 0 === this._remaining && S(r, this._result);
+ }),
+ (N.prototype._willSettleAt = function(t, e) {
+ var n = this;
+ E(
+ t,
+ void 0,
+ function(t) {
+ n._settledAt(it, e, t);
+ },
+ function(t) {
+ n._settledAt(st, e, t);
+ }
+ );
+ });
+ var dt = W,
+ vt = {Promise: pt, polyfill: dt};
+ 'function' == typeof define && define.amd
+ ? define(function() {
+ return vt;
+ })
+ : 'undefined' != typeof module && module.exports
+ ? (module.exports = vt)
+ : 'undefined' != typeof this && (this.ES6Promise = vt),
+ dt();
+ }.call(this));
-// Transaction class (for WebSQL compatibility)
+ }
+}
-/**
- Transaction class
- @class Transaction
- */
+var promiseExec = function(sql, params, counterStep, counterTotal) {
+ return new utils.global.Promise(function(resolve, reject) {
+ alasql(sql, params, function(data, err) {
+ if (err) {
+ reject(err);
+ } else {
+ if (counterStep && counterTotal && alasql.options.progress !== false) {
+ alasql.options.progress(counterStep, counterTotal);
+ }
+ resolve(data);
+ }
+ });
+ });
+};
-var Transaction = (alasql.Transaction = function(databaseid) {
- this.transactionid = Date.now();
- this.databaseid = databaseid;
- this.commited = false;
- this.dbversion = alasql.databases[databaseid].dbversion;
- // this.bank = cloneDeep(alasql.databases[databaseid]);
- this.bank = JSON.stringify(alasql.databases[databaseid]);
- // TODO CLone Tables with insertfns
+var promiseAll = function(sqlParamsArray) {
+ if (sqlParamsArray.length < 1) {
+ return;
+ }
- return this;
-});
+ var active, sql, params;
-// Main class
+ var execArray = [];
-// Commit
+ for (var i = 0; i < sqlParamsArray.length; i++) {
+ active = sqlParamsArray[i];
-/**
+ if (typeof active === 'string') {
+ active = [active];
+ }
+
+ if (!utils.isArray(active) || active.length < 1 || 2 < active.length) {
+ throw new Error('Error in .promise parameter');
+ }
+
+ sql = active[0];
+ params = active[1] || undefined;
+
+ execArray.push(promiseExec(sql, params, i, sqlParamsArray.length));
+ }
+
+ return utils.global.Promise.all(execArray);
+};
+
+alasql.promise = function(sql, params) {
+ if (typeof Promise === 'undefined') {
+ throw new Error('Please include a Promise/A+ library');
+ }
+
+ if (typeof sql === 'string') {
+ return promiseExec(sql, params);
+ }
+
+ if (!utils.isArray(sql) || sql.length < 1 || typeof params !== 'undefined') {
+ throw new Error('Error in .promise parameters');
+ }
+ return promiseAll(sql);
+};
+
+/*
+//
+// Database class for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// Main Database class
+
+/**
+ @class Database
+ */
+
+var Database = (alasql.Database = function(databaseid) {
+ var self = this;
+
+ // self.prototype = this;
+
+ if (self === alasql) {
+ if (databaseid) {
+ // if(alasql.databases[databaseid]) {
+ self = alasql.databases[databaseid];
+ // } else {
+ alasql.databases[databaseid] = self;
+ // }
+ if (!self) {
+ throw new Error('Database "' + databaseid + '" not found');
+ }
+ } else {
+ // Create new database (or get alasql?)
+ self = alasql.databases.alasql;
+ // For SQL Server examples, USE tempdb
+ if (alasql.options.tsql) {
+ alasql.databases.tempdb = alasql.databases.alasql;
+ }
+ // self = new Database(databaseid); // to call without new
+ }
+ }
+ if (!databaseid) {
+ databaseid = 'db' + alasql.databasenum++; // Random name
+ }
+
+ // Step 1
+ self.databaseid = databaseid;
+ alasql.databases[databaseid] = self;
+ self.dbversion = 0;
+
+ //Steps 2-5
+ self.tables = {};
+ self.views = {};
+ self.triggers = {};
+ self.indices = {};
+
+ // Step 6: Objects storage
+ self.objects = {};
+ self.counter = 0;
+
+ self.resetSqlCache();
+ return self;
+});
+
+/**
+ Reset SQL statements cache
+ */
+
+Database.prototype.resetSqlCache = function() {
+ this.sqlCache = {}; // Cache for compiled SQL statements
+ this.sqlCacheSize = 0;
+};
+
+// Main SQL function
+
+/**
+ Run SQL statement on database
+ @param {string} sql SQL statement
+ @param [object] params Parameters
+ @param {function} cb callback
+ */
+
+Database.prototype.exec = function(sql, params, cb) {
+ return alasql.dexec(this.databaseid, sql, params, cb);
+};
+
+Database.prototype.autoval = function(tablename, colname, getNext) {
+ return alasql.autoval(tablename, colname, getNext, this.databaseid);
+};
+
+// Aliases like MS SQL
+
+/*
+//
+// Transactio class for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+Database.prototype.transaction = function(cb) {
+ var tx = new alasql.Transaction(this.databaseid);
+ var res = cb(tx);
+ return res;
+};
+
+// Transaction class (for WebSQL compatibility)
+
+/**
+ Transaction class
+ @class Transaction
+ */
+
+var Transaction = (alasql.Transaction = function(databaseid) {
+ this.transactionid = Date.now();
+ this.databaseid = databaseid;
+ this.commited = false;
+ this.dbversion = alasql.databases[databaseid].dbversion;
+ // this.bank = cloneDeep(alasql.databases[databaseid]);
+ this.bank = JSON.stringify(alasql.databases[databaseid]);
+ // TODO CLone Tables with insertfns
+
+ return this;
+});
+
+// Main class
+
+// Commit
+
+/**
Commit transaction
*/
Transaction.prototype.commit = function() {
@@ -8914,109 +8914,109 @@ yy.Select.prototype.compileJoins = function(query) {
};
-yy.Select.prototype.compileWhere = function(query) {
- if (this.where) {
- if (typeof this.where == 'function') {
- return this.where;
- } else {
- var s = this.where.toJS('p', query.defaultTableid, query.defcols);
- query.wherefns = s;
-
- return new Function('p,params,alasql', 'var y;return ' + s);
- }
- } else
- return function() {
- return true;
- };
-};
-
-yy.Select.prototype.compileWhereJoins = function(query) {
- return;
-
- // TODO Fix Where optimization
-
- optimizeWhereJoin(query, this.where.expression);
-
- //for sources compile wherefs
- query.sources.forEach(function(source) {
- if (source.srcwherefns) {
- source.srcwherefn = new Function(
- 'p,params,alasql',
- 'var y;return ' + source.srcwherefns
- );
- }
- if (source.wxleftfns) {
- source.wxleftfn = new Function('p,params,alasql', 'var y;return ' + source.wxleftfns);
- }
- if (source.wxrightfns) {
- source.wxrightfn = new Function('p,params,alasql', 'var y;return ' + source.wxrightfns);
- }
-
- });
-};
-
-function optimizeWhereJoin(query, ast) {
- if (!ast) return false;
- if (!(ast instanceof yy.Op)) return;
- if (ast.op != '=' && ast.op != 'AND') return;
- if (ast.allsome) return;
-
- var s = ast.toJS('p', query.defaultTableid, query.defcols);
- var fsrc = [];
- query.sources.forEach(function(source, idx) {
- // Optimization allowed only for tables only
- if (source.tableid) {
- // This is a good place to remove all unnecessary optimizations
- if (s.indexOf("p['" + source.alias + "']") > -1) fsrc.push(source);
- }
- });
-
- // if(fsrc.length < query.sources.length) return;
-
- if (fsrc.length == 0) {
-
- return;
- } else if (fsrc.length == 1) {
- if (
- !(s.match(/p\[\'.*?\'\]/g) || []).every(function(s) {
- return s == "p['" + fsrc[0].alias + "']";
- })
- ) {
- return;
- // This is means, that we have column from parent query
- // So we return without optimization
- }
-
- var src = fsrc[0]; // optmiization source
- src.srcwherefns = src.srcwherefns ? src.srcwherefns + '&&' + s : s;
-
- if (ast instanceof yy.Op && (ast.op == '=' && !ast.allsome)) {
- if (ast.left instanceof yy.Column) {
- var ls = ast.left.toJS('p', query.defaultTableid, query.defcols);
- var rs = ast.right.toJS('p', query.defaultTableid, query.defcols);
- if (rs.indexOf("p['" + fsrc[0].alias + "']") == -1) {
- fsrc[0].wxleftfns = ls;
- fsrc[0].wxrightfns = rs;
- }
- }
- if (ast.right instanceof yy.Column) {
- var ls = ast.left.toJS('p', query.defaultTableid, query.defcols);
- var rs = ast.right.toJS('p', query.defaultTableid, query.defcols);
- if (ls.indexOf("p['" + fsrc[0].alias + "']") == -1) {
- fsrc[0].wxleftfns = rs;
- fsrc[0].wxrightfns = ls;
- }
- }
- }
- ast.reduced = true; // To do not duplicate wherefn and srcwherefn
- return;
- } else {
- if ((ast.op = 'AND')) {
- optimizeWhereJoin(query, ast.left);
- optimizeWhereJoin(query, ast.right);
- }
- }
-}
+yy.Select.prototype.compileWhere = function(query) {
+ if (this.where) {
+ if (typeof this.where == 'function') {
+ return this.where;
+ } else {
+ var s = this.where.toJS('p', query.defaultTableid, query.defcols);
+ query.wherefns = s;
+
+ return new Function('p,params,alasql', 'var y;return ' + s);
+ }
+ } else
+ return function() {
+ return true;
+ };
+};
+
+yy.Select.prototype.compileWhereJoins = function(query) {
+ return;
+
+ // TODO Fix Where optimization
+
+ optimizeWhereJoin(query, this.where.expression);
+
+ //for sources compile wherefs
+ query.sources.forEach(function(source) {
+ if (source.srcwherefns) {
+ source.srcwherefn = new Function(
+ 'p,params,alasql',
+ 'var y;return ' + source.srcwherefns
+ );
+ }
+ if (source.wxleftfns) {
+ source.wxleftfn = new Function('p,params,alasql', 'var y;return ' + source.wxleftfns);
+ }
+ if (source.wxrightfns) {
+ source.wxrightfn = new Function('p,params,alasql', 'var y;return ' + source.wxrightfns);
+ }
+
+ });
+};
+
+function optimizeWhereJoin(query, ast) {
+ if (!ast) return false;
+ if (!(ast instanceof yy.Op)) return;
+ if (ast.op != '=' && ast.op != 'AND') return;
+ if (ast.allsome) return;
+
+ var s = ast.toJS('p', query.defaultTableid, query.defcols);
+ var fsrc = [];
+ query.sources.forEach(function(source, idx) {
+ // Optimization allowed only for tables only
+ if (source.tableid) {
+ // This is a good place to remove all unnecessary optimizations
+ if (s.indexOf("p['" + source.alias + "']") > -1) fsrc.push(source);
+ }
+ });
+
+ // if(fsrc.length < query.sources.length) return;
+
+ if (fsrc.length == 0) {
+
+ return;
+ } else if (fsrc.length == 1) {
+ if (
+ !(s.match(/p\[\'.*?\'\]/g) || []).every(function(s) {
+ return s == "p['" + fsrc[0].alias + "']";
+ })
+ ) {
+ return;
+ // This is means, that we have column from parent query
+ // So we return without optimization
+ }
+
+ var src = fsrc[0]; // optmiization source
+ src.srcwherefns = src.srcwherefns ? src.srcwherefns + '&&' + s : s;
+
+ if (ast instanceof yy.Op && (ast.op == '=' && !ast.allsome)) {
+ if (ast.left instanceof yy.Column) {
+ var ls = ast.left.toJS('p', query.defaultTableid, query.defcols);
+ var rs = ast.right.toJS('p', query.defaultTableid, query.defcols);
+ if (rs.indexOf("p['" + fsrc[0].alias + "']") == -1) {
+ fsrc[0].wxleftfns = ls;
+ fsrc[0].wxrightfns = rs;
+ }
+ }
+ if (ast.right instanceof yy.Column) {
+ var ls = ast.left.toJS('p', query.defaultTableid, query.defcols);
+ var rs = ast.right.toJS('p', query.defaultTableid, query.defcols);
+ if (ls.indexOf("p['" + fsrc[0].alias + "']") == -1) {
+ fsrc[0].wxleftfns = rs;
+ fsrc[0].wxrightfns = ls;
+ }
+ }
+ }
+ ast.reduced = true; // To do not duplicate wherefn and srcwherefn
+ return;
+ } else {
+ if ((ast.op = 'AND')) {
+ optimizeWhereJoin(query, ast.left);
+ optimizeWhereJoin(query, ast.right);
+ }
+ }
+}
/*
//
@@ -9374,3029 +9374,3029 @@ yy.Select.prototype.compileGroup = function(query) {
return new Function('p,params,alasql', 'var y;' + s);
};
-/*
-//
-// Select compiler part for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// yy.Select.prototype.compileSources = function(query) {
-
-// };
-
-function compileSelectStar(query, alias, joinstar) {
-
- var sp = '',
- ss = [];
- // if(!alias) {
- // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
- // } else {
-
- // TODO move this out of this function
- query.ixsources = {};
- query.sources.forEach(function(source) {
- query.ixsources[source.alias] = source;
- });
-
- // Fixed
- var columns;
- if (query.ixsources[alias]) {
- var columns = query.ixsources[alias].columns;
- }
-
- // if(columns.length == 0 && query.aliases[alias].tableid) {
- // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
- // };
-
- // Check if this is a Table or other
- if (joinstar && alasql.options.joinstar == 'json') {
- sp += "r['" + alias + "']={};";
- }
-
- if (columns && columns.length > 0) {
- columns.forEach(function(tcol) {
- if (joinstar && alasql.options.joinstar == 'underscore') {
- ss.push(
- "'" +
- alias +
- '_' +
- tcol.columnid +
- "':p['" +
- alias +
- "']['" +
- tcol.columnid +
- "']"
- );
- } else if (joinstar && alasql.options.joinstar == 'json') {
- // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
- sp +=
- "r['" +
- alias +
- "']['" +
- tcol.columnid +
- "']=p['" +
- alias +
- "']['" +
- tcol.columnid +
- "'];";
- } else {
- ss.push("'" + tcol.columnid + "':p['" + alias + "']['" + tcol.columnid + "']");
- }
-
- query.selectColumns[escapeq(tcol.columnid)] = true;
-
- var coldef = {
- columnid: tcol.columnid,
- dbtypeid: tcol.dbtypeid,
- dbsize: tcol.dbsize,
- dbprecision: tcol.dbprecision,
- dbenum: tcol.dbenum,
- };
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- });
-
- } else {
-
- // if column not exist, then copy all
- sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
-
- query.dirtyColumns = true;
- }
- // }
-
- return {s: ss.join(','), sp: sp};
-}
-
-yy.Select.prototype.compileSelect1 = function(query, params) {
- var self = this;
- query.columns = [];
- query.xcolumns = {};
- query.selectColumns = {};
- query.dirtyColumns = false;
- var s = 'var r={';
- var sp = '';
- var ss = [];
-
- this.columns.forEach(function(col) {
-
- if (col instanceof yy.Column) {
- if (col.columnid === '*') {
- if (col.func) {
- sp +=
- "r=params['" +
- col.param +
- "'](p['" +
- query.sources[0].alias +
- "'],p,params,alasql);";
- } else if (col.tableid) {
- //Copy all
- var ret = compileSelectStar(query, col.tableid, false);
- if (ret.s) {
- ss = ss.concat(ret.s);
- }
- sp += ret.sp;
- } else {
-
- for (var alias in query.aliases) {
- var ret = compileSelectStar(query, alias, true); //query.aliases[alias].tableid);
- if (ret.s) {
- ss = ss.concat(ret.s);
- }
- sp += ret.sp;
- }
- // TODO Remove these lines
- // In case of no information
- // sp += 'for(var k1 in p){var w=p[k1];'+
- // 'for(k2 in w) {r[k2]=w[k2]}}'
- }
- } else {
- // If field, otherwise - expression
- var tbid = col.tableid;
-
- var dbid =
- col.databaseid || query.sources[0].databaseid || query.database.databaseid;
- if (!tbid) tbid = query.defcols[col.columnid];
- if (!tbid) tbid = query.defaultTableid;
- if (col.columnid !== '_') {
- if (
- false &&
- tbid &&
- !query.defcols['.'][col.tableid] &&
- !query.defcols[col.columnid]
- ) {
- ss.push(
- "'" +
- escapeq(col.as || col.columnid) +
- "':p['" +
- query.defaultTableid +
- "']['" +
- col.tableid +
- "']['" +
- col.columnid +
- "']"
- );
- } else {
- // workaround for multisheet xlsx export with custom COLUMNS
- var isMultisheetParam =
- params &&
- params.length > 1 &&
- Array.isArray(params[0]) &&
- params[0].length >= 1 &&
- params[0][0].hasOwnProperty('sheetid');
- if (isMultisheetParam) {
- sp =
- 'var r={};var w=p["' +
- tbid +
- '"];' +
- 'var cols=[' +
- self.columns
- .map(function(col) {
- return "'" + col.columnid + "'";
- })
- .join(',') +
- '];var colas=[' +
- self.columns
- .map(function(col) {
- return "'" + (col.as || col.columnid) + "'";
- })
- .join(',') +
- '];' +
- "for (var i=0;i 0) {
-
- var tcol = xcolumns[col.columnid];
-
- if (undefined === tcol) {
- throw new Error('Column does not exist: ' + col.columnid);
- }
-
- var coldef = {
- columnid: col.as || col.columnid,
- dbtypeid: tcol.dbtypeid,
- dbsize: tcol.dbsize,
- dbpecision: tcol.dbprecision,
- dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- } else {
- var coldef = {
- columnid: col.as || col.columnid,
- // dbtypeid:tcol.dbtypeid,
- // dbsize:tcol.dbsize,
- // dbpecision:tcol.dbprecision,
- // dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
-
- query.dirtyColumns = true;
- }
- } else {
- var coldef = {
- columnid: col.as || col.columnid,
- // dbtypeid:tcol.dbtypeid,
- // dbsize:tcol.dbsize,
- // dbpecision:tcol.dbprecision,
- // dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- // This is a subquery?
- // throw new Error('There is now such table \''+col.tableid+'\'');
- }
- }
- } else if (col instanceof yy.AggrValue) {
- if (!self.group) {
- // self.group=[new yy.Column({columnid:'q',as:'q' })];
- self.group = [''];
- }
- if (!col.as) {
- col.as = escapeq(col.toString());
- }
-
- if (
- col.aggregatorid === 'SUM' ||
- col.aggregatorid === 'MAX' ||
- col.aggregatorid === 'MIN' ||
- col.aggregatorid === 'FIRST' ||
- col.aggregatorid === 'LAST' ||
- col.aggregatorid === 'AVG' ||
- col.aggregatorid === 'ARRAY' ||
- col.aggregatorid === 'REDUCE'
- ) {
- ss.push(
- "'" +
- escapeq(col.as) +
- "':" +
- n2u(col.expression.toJS('p', query.defaultTableid, query.defcols))
- );
- } else if (col.aggregatorid === 'COUNT') {
- ss.push("'" + escapeq(col.as) + "':1");
- // Nothing
- }
- // todo: confirm that no default action must be implemented
-
- // query.selectColumns[col.aggregatorid+'('+escapeq(col.expression.toString())+')'] = thtd;
-
- var coldef = {
- columnid: col.as || col.columnid || col.toString(),
- // dbtypeid:tcol.dbtypeid,
- // dbsize:tcol.dbsize,
- // dbpecision:tcol.dbprecision,
- // dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
-
- // else if (col.aggregatorid == 'MAX') {
- // ss.push((col.as || col.columnid)+':'+col.toJS("p.",query.defaultTableid))
- // } else if (col.aggregatorid == 'MIN') {
- // ss.push((col.as || col.columnid)+':'+col.toJS("p.",query.defaultTableid))
- // }
- } else {
-
- ss.push(
- "'" +
- escapeq(col.as || col.columnid || col.toString()) +
- "':" +
- n2u(col.toJS('p', query.defaultTableid, query.defcols))
- );
- // ss.push('\''+escapeq(col.toString())+'\':'+col.toJS("p",query.defaultTableid));
- //if(col instanceof yy.Expression) {
- query.selectColumns[escapeq(col.as || col.columnid || col.toString())] = true;
-
- var coldef = {
- columnid: col.as || col.columnid || col.toString(),
- // dbtypeid:tcol.dbtypeid,
- // dbsize:tcol.dbsize,
- // dbpecision:tcol.dbprecision,
- // dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- }
- });
- s += ss.join(',') + '};' + sp;
- return s;
-
-};
-yy.Select.prototype.compileSelect2 = function(query) {
- var s = query.selectfns;
- if (this.orderColumns && this.orderColumns.length > 0) {
- this.orderColumns.forEach(function(v, idx) {
- var key = '$$$' + idx;
- if (v instanceof yy.Column && query.xcolumns[v.columnid]) {
- s += "r['" + key + "']=r['" + v.columnid + "'];";
- } else {
- s += "r['" + key + "']=" + v.toJS('p', query.defaultTableid, query.defcols) + ';';
- }
- query.removeKeys.push(key);
- });
- }
-
- return new Function('p,params,alasql', 'var y;' + s + 'return r');
-};
-
-yy.Select.prototype.compileSelectGroup0 = function(query) {
- var self = this;
- self.columns.forEach(function(col, idx) {
- if (!(col instanceof yy.Column && col.columnid === '*')) {
- var colas;
- // = col.as;
- if (col instanceof yy.Column) {
- colas = escapeq(col.columnid);
- } else {
- colas = escapeq(col.toString(true));
-
- }
- for (var i = 0; i < idx; i++) {
- if (colas === self.columns[i].nick) {
- colas = self.columns[i].nick + ':' + idx;
- break;
- }
- }
- // }
- col.nick = colas;
- if (
- col.funcid &&
- (col.funcid.toUpperCase() === 'ROWNUM' || col.funcid.toUpperCase() === 'ROW_NUMBER')
- ) {
- query.rownums.push(col.as);
- }
-
- // }
- } else {
- query.groupStar = col.tableid || 'default';
- }
- });
-
- this.columns.forEach(function(col) {
- if (col.findAggregator) {
- col.findAggregator(query);
- }
- });
-
- if (this.having) {
- if (this.having.findAggregator) {
- this.having.findAggregator(query);
- }
- }
-};
-
-yy.Select.prototype.compileSelectGroup1 = function(query) {
- var self = this;
- var s = 'var r = {};';
-
- self.columns.forEach(function(col) {
-
- if (col instanceof yy.Column && col.columnid === '*') {
- // s += 'for(var k in g){r[k]=g[k]};';
- // s += 'for(var k in this.query.groupColumns){r[k]=g[this.query.groupColumns[k]]};';
-
- s += 'for(var k in g) {r[k]=g[k]};';
- return '';
-
- } else {
- // var colas = col.as;
- var colas = col.as;
- if (colas === undefined) {
- if (col instanceof yy.Column) {
- colas = escapeq(col.columnid);
- } else {
- colas = col.nick;
- }
- }
- query.groupColumns[colas] = col.nick;
-
- // if(col.as) {
- s += "r['" + colas + "']=";
- // // } else {
- // // s += 'r[\''+escapeq()+'\']=';
- // // };
- // // s += ';';
-
- s += n2u(col.toJS('g', '')) + ';';
-
- for (var i = 0; i < query.removeKeys.length; i++) {
- // THis part should be intellectual
- if (query.removeKeys[i] === colas) {
- query.removeKeys.splice(i, 1);
- break;
- }
- }
- }
- });
- // return new Function('g,params,alasql',s+'return r');
- return s;
-};
-
-yy.Select.prototype.compileSelectGroup2 = function(query) {
- var self = this;
- var s = query.selectgfns;
- self.columns.forEach(function(col) {
-
- if (query.ingroup.indexOf(col.nick) > -1) {
- s += "r['" + (col.as || col.nick) + "']=g['" + col.nick + "'];";
- }
- });
-
- if (this.orderColumns && this.orderColumns.length > 0) {
- this.orderColumns.forEach(function(v, idx) {
-
- var key = '$$$' + idx;
-
- if (v instanceof yy.Column && query.groupColumns[v.columnid]) {
- s += "r['" + key + "']=r['" + v.columnid + "'];";
- } else {
- s += "r['" + key + "']=" + v.toJS('g', '') + ';';
- }
- query.removeKeys.push(key);
- });
- }
-
- return new Function('g,params,alasql', 'var y;' + s + 'return r');
-};
-
-// SELECY * REMOVE [COLUMNS] col-list, LIKE ''
-yy.Select.prototype.compileRemoveColumns = function(query) {
- var self = this;
- if (typeof this.removecolumns !== 'undefined') {
- query.removeKeys = query.removeKeys.concat(
- this.removecolumns
- .filter(function(column) {
- return typeof column.like === 'undefined';
- })
- .map(function(column) {
- return column.columnid;
- })
- );
-
- query.removeLikeKeys = this.removecolumns
- .filter(function(column) {
- return typeof column.like !== 'undefined';
- })
- .map(function(column) {
- // return new RegExp((column.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g');
- return column.like.value;
- });
- }
-};
-
-/* global yy */
-
-yy.Select.prototype.compileHaving = function(query) {
- if (this.having) {
- var s = this.having.toJS('g', -1);
- query.havingfns = s;
-
- return new Function('g,params,alasql', 'var y;return ' + s);
- }
-
- return function() {
- return true;
- };
-};
-
-yy.Select.prototype.compileOrder = function(query) {
- var self = this;
- self.orderColumns = [];
- if (this.order) {
-
- if (
- this.order &&
- this.order.length == 1 &&
- this.order[0].expression &&
- typeof this.order[0].expression == 'function'
- ) {
-
- var func = this.order[0].expression;
-
- return function(a, b) {
- var ra = func(a),
- rb = func(b);
- if (ra > rb) return 1;
- if (ra == rb) return 0;
- return -1;
- };
- }
-
- var s = '';
- var sk = '';
- this.order.forEach(function(ord, idx) {
-
- if (ord.expression instanceof yy.NumValue) {
- var v = self.columns[ord.expression.value - 1];
- } else {
- var v = ord.expression;
- }
- self.orderColumns.push(v);
-
- var key = '$$$' + idx;
-
- // Date conversion
- var dg = '';
- //if(alasql.options.valueof)
- if (ord.expression instanceof yy.Column) {
- var columnid = ord.expression.columnid;
- if (query.xcolumns[columnid]) {
- var dbtypeid = query.xcolumns[columnid].dbtypeid;
- if (dbtypeid == 'DATE' || dbtypeid == 'DATETIME' || dbtypeid == 'DATETIME2')
- dg = '.valueOf()';
- // TODO Add other types mapping
- } else {
- if (alasql.options.valueof) dg = '.valueOf()'; // TODO Check
- }
- // dg = '.valueOf()';
- }
- // COLLATE NOCASE
- if (ord.nocase) dg += '.toUpperCase()';
- s +=
- "if((a['" +
- key +
- "']||'')" +
- dg +
- (ord.direction == 'ASC' ? '>' : '<') +
- "(b['" +
- key +
- "']||'')" +
- dg +
- ')return 1;';
- s += "if((a['" + key + "']||'')" + dg + "==(b['" + key + "']||'')" + dg + '){';
-
- /*
-if(false) {
-
- if(ord.expression instanceof yy.NumValue) {
- ord.expression = self.columns[ord.expression.value-1];
-
- ord.expression = new yy.Column({columnid:ord.expression.nick});
- };
-
- if(ord.expression instanceof yy.Column) {
- var columnid = ord.expression.columnid;
- if(query.xcolumns[columnid]) {
- var dbtypeid = query.xcolumns[columnid].dbtypeid;
- if( dbtypeid == 'DATE' || dbtypeid == 'DATETIME' || dbtypeid == 'DATETIME2') dg = '.valueOf()';
- // TODO Add other types mapping
- } else {
- if(alasql.options.valueof) dg = '.valueOf()'; // TODO Check
- }
- // COLLATE NOCASE
- if(ord.nocase) dg += '.toUpperCase()';
-
- s += 'if((a[\''+columnid+"']||'')"+dg+(ord.direction == 'ASC'?'>':'<')+'(b[\''+columnid+"']||'')"+dg+')return 1;';
- s += 'if((a[\''+columnid+"']||'')"+dg+'==(b[\''+columnid+"']||'')"+dg+'){';
-
- } else {
- dg = '.valueOf()';
- // COLLATE NOCASE
- if(ord.nocase) dg += '.toUpperCase()';
- s += 'if(('+ord.toJS('a','')+"||'')"+dg+(ord.direction == 'ASC'?'>(':'<(')+ord.toJS('b','')+"||'')"+dg+')return 1;';
- s += 'if(('+ord.toJS('a','')+"||'')"+dg+'==('+ord.toJS('b','')+"||'')"+dg+'){';
- }
-
- // TODO Add date comparision
-
-}
-*/
- sk += '}';
- });
- s += 'return 0;';
- s += sk + 'return -1';
- query.orderfns = s;
-
- return new Function('a,b', 'var y;' + s);
- }
-};
-
-// Pivot functions
-/**
- Compile Pivot functions
- @param {object} query Source query
- @return {function} Pivoting functions
-*/
-yy.Select.prototype.compilePivot = function(query) {
- var self = this;
- /** @type {string} Main pivoting column */
-
- var columnid = self.pivot.columnid;
- var exprcolid = self.pivot.expr.expression.columnid;
- var aggr = self.pivot.expr.aggregatorid;
- var inlist = self.pivot.inlist;
-
- if (inlist) {
- inlist = inlist.map(function(l) {
- return l.expr.columnid;
- });
- }
-
- // Function for PIVOT post production
- return function() {
- var query = this;
- var cols = query.columns
- .filter(function(col) {
- return col.columnid != columnid && col.columnid != exprcolid;
- })
- .map(function(col) {
- return col.columnid;
- });
-
- var newcols = [];
- var gnewcols = {};
- var gr = {};
- var ga = {};
- var data = [];
- query.data.forEach(function(d) {
- if (!inlist || inlist.indexOf(d[columnid]) > -1) {
- var gx = cols
- .map(function(colid) {
- return d[colid];
- })
- .join('`');
- var g = gr[gx];
- if (!g) {
- g = {};
- gr[gx] = g;
- data.push(g);
- cols.forEach(function(colid) {
- g[colid] = d[colid];
- });
- }
-
- if (!ga[gx]) {
- ga[gx] = {};
- }
-
- if (ga[gx][d[columnid]]) {
- ga[gx][d[columnid]]++;
- } else {
- ga[gx][d[columnid]] = 1;
- }
-
- if (!gnewcols[d[columnid]]) {
- gnewcols[d[columnid]] = true;
- newcols.push(d[columnid]);
- }
-
- if (aggr == 'SUM' || aggr == 'AVG') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = 0;
- g[d[columnid]] += d[exprcolid];
- } else if (aggr == 'COUNT') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = 0;
- g[d[columnid]]++;
- } else if (aggr == 'MIN') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = Infinity;
- if (d[exprcolid] < g[d[columnid]]) g[d[columnid]] = d[exprcolid];
- } else if (aggr == 'MAX') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = -Infinity;
- if (d[exprcolid] > g[d[columnid]]) g[d[columnid]] = d[exprcolid];
- } else if (aggr == 'FIRST') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = d[exprcolid];
- } else if (aggr == 'LAST') {
- g[d[columnid]] = d[exprcolid];
- } else if (alasql.aggr[aggr]) {
- // Custom aggregator
- alasql.aggr[aggr](g[d[columnid]], d[exprcolid]);
- } else {
- throw new Error('Wrong aggregator in PIVOT clause');
- }
- }
- });
-
- if (aggr == 'AVG') {
- for (var gx in gr) {
- var d = gr[gx];
- for (var colid in d) {
- if (cols.indexOf(colid) == -1 && colid != exprcolid) {
- d[colid] = d[colid] / ga[gx][colid];
- }
- }
- }
- }
-
- // columns
- query.data = data;
-
- if (inlist) newcols = inlist;
-
- var ncol = query.columns.filter(function(col) {
- return col.columnid == exprcolid;
- })[0];
- query.columns = query.columns.filter(function(col) {
- return !(col.columnid == columnid || col.columnid == exprcolid);
- });
- newcols.forEach(function(colid) {
- var nc = cloneDeep(ncol);
- nc.columnid = colid;
- query.columns.push(nc);
- });
- };
-};
-
-// var columnid = this.pivot.columnid;
-
-// return function(data){
-
-// if(false) {
-
-// }
-
-// if(false) {
-
-// }
-// };
-
-/**
- Compile UNPIVOT clause
- @param {object} query Query object
- @return {function} Function for unpivoting
-*/
-yy.Select.prototype.compileUnpivot = function(query) {
- var self = this;
- var tocolumnid = self.unpivot.tocolumnid;
- var forcolumnid = self.unpivot.forcolumnid;
- var inlist = self.unpivot.inlist.map(function(l) {
- return l.columnid;
- });
-
- return function() {
- var data = [];
-
- var xcols = query.columns
- .map(function(col) {
- return col.columnid;
- })
- .filter(function(colid) {
- return inlist.indexOf(colid) == -1 && colid != forcolumnid && colid != tocolumnid;
- });
-
- query.data.forEach(function(d) {
- inlist.forEach(function(colid) {
- var nd = {};
- xcols.forEach(function(xcolid) {
- nd[xcolid] = d[xcolid];
- });
- nd[forcolumnid] = colid;
- nd[tocolumnid] = d[colid];
- data.push(nd);
- });
- });
-
- query.data = data;
-
- // });
- };
-};
-
/*
//
-// ROLLUP(), CUBE(), GROUPING SETS() for Alasql.js
+// Select compiler part for Alasql.js
// Date: 03.11.2014
// (c) 2014, Andrey Gershun
//
*/
-/**
- Calculate ROLLUP() combination
- */
+// yy.Select.prototype.compileSources = function(query) {
-var rollup = function(a, query) {
- var rr = [];
- var mask = 0;
- var glen = a.length;
- for (var g = 0; g < glen + 1; g++) {
- var ss = [];
- for (var i = 0; i < glen; i++) {
- if (a[i] instanceof yy.Column) {
- a[i].nick = escapeq(a[i].columnid);
+// };
- query.groupColumns[escapeq(a[i].columnid)] = a[i].nick;
- var aaa = a[i].nick + '\t' + a[i].toJS('p', query.sources[0].alias, query.defcols);
+function compileSelectStar(query, alias, joinstar) {
+
+ var sp = '',
+ ss = [];
+ // if(!alias) {
+ // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
+ // } else {
+
+ // TODO move this out of this function
+ query.ixsources = {};
+ query.sources.forEach(function(source) {
+ query.ixsources[source.alias] = source;
+ });
+
+ // Fixed
+ var columns;
+ if (query.ixsources[alias]) {
+ var columns = query.ixsources[alias].columns;
+ }
+
+ // if(columns.length == 0 && query.aliases[alias].tableid) {
+ // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
+ // };
+
+ // Check if this is a Table or other
+ if (joinstar && alasql.options.joinstar == 'json') {
+ sp += "r['" + alias + "']={};";
+ }
+
+ if (columns && columns.length > 0) {
+ columns.forEach(function(tcol) {
+ if (joinstar && alasql.options.joinstar == 'underscore') {
+ ss.push(
+ "'" +
+ alias +
+ '_' +
+ tcol.columnid +
+ "':p['" +
+ alias +
+ "']['" +
+ tcol.columnid +
+ "']"
+ );
+ } else if (joinstar && alasql.options.joinstar == 'json') {
+ // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
+ sp +=
+ "r['" +
+ alias +
+ "']['" +
+ tcol.columnid +
+ "']=p['" +
+ alias +
+ "']['" +
+ tcol.columnid +
+ "'];";
} else {
- query.groupColumns[escapeq(a[i].toString())] = escapeq(a[i].toString());
- var aaa =
- escapeq(a[i].toString()) +
- '\t' +
- a[i].toJS('p', query.sources[0].alias, query.defcols);
+ ss.push("'" + tcol.columnid + "':p['" + alias + "']['" + tcol.columnid + "']");
}
- if (mask & (1 << i)) ss.push(aaa);
- }
- rr.push(ss);
- mask = (mask << 1) + 1;
- }
- return rr;
-};
+ query.selectColumns[escapeq(tcol.columnid)] = true;
-/**
- Calculate CUBE()
- */
-var cube = function(a, query) {
- var rr = [];
- var glen = a.length;
- var glenCube = 1 << glen;
- for (var g = 0; g < glenCube; g++) {
- var ss = [];
- for (var i = 0; i < glen; i++) {
- if (g & (1 << i))
- //ss.push(a[i]);
- //ss = cartes(ss,decartes(a[i]));
+ var coldef = {
+ columnid: tcol.columnid,
+ dbtypeid: tcol.dbtypeid,
+ dbsize: tcol.dbsize,
+ dbprecision: tcol.dbprecision,
+ dbenum: tcol.dbenum,
+ };
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ });
- // var aaa = a[i].toString()+'\t'
- // +a[i].toJS('p',query.sources[0].alias,query.defcols);
+ } else {
- ss = ss.concat(decartes(a[i], query));
- //
- }
- rr.push(ss);
+ // if column not exist, then copy all
+ sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
+
+ query.dirtyColumns = true;
}
- return rr;
-};
+ // }
-/**
- GROUPING SETS()
- */
-var groupingsets = function(a, query) {
- return a.reduce(function(acc, d) {
- acc = acc.concat(decartes(d, query));
- return acc;
- }, []);
-};
+ return {s: ss.join(','), sp: sp};
+}
-/**
- Cartesian production
- */
-var cartes = function(a1, a2) {
- var rrr = [];
- for (var i1 = 0; i1 < a1.length; i1++) {
- for (var i2 = 0; i2 < a2.length; i2++) {
- rrr.push(a1[i1].concat(a2[i2]));
- }
- }
- return rrr;
-};
+yy.Select.prototype.compileSelect1 = function(query, params) {
+ var self = this;
+ query.columns = [];
+ query.xcolumns = {};
+ query.selectColumns = {};
+ query.dirtyColumns = false;
+ var s = 'var r={';
+ var sp = '';
+ var ss = [];
-/**
- Prepare groups function
- */
-function decartes(gv, query) {
+ this.columns.forEach(function(col) {
- if (Array.isArray(gv)) {
- var res = [[]];
- for (var t = 0; t < gv.length; t++) {
- if (gv[t] instanceof yy.Column) {
+ if (col instanceof yy.Column) {
+ if (col.columnid === '*') {
+ if (col.func) {
+ sp +=
+ "r=params['" +
+ col.param +
+ "'](p['" +
+ query.sources[0].alias +
+ "'],p,params,alasql);";
+ } else if (col.tableid) {
+ //Copy all
+ var ret = compileSelectStar(query, col.tableid, false);
+ if (ret.s) {
+ ss = ss.concat(ret.s);
+ }
+ sp += ret.sp;
+ } else {
- gv[t].nick = escapeq(gv[t].columnid);
- query.groupColumns[gv[t].nick] = gv[t].nick;
- res = res.map(function(r) {
- return r.concat(
- gv[t].nick + '\t' + gv[t].toJS('p', query.sources[0].alias, query.defcols)
- );
- });
- // res = res.map(function(r){return r.concat(gv[t].columnid)});
- } else if (gv[t] instanceof yy.FuncValue) {
- query.groupColumns[escapeq(gv[t].toString())] = escapeq(gv[t].toString());
- res = res.map(function(r) {
- return r.concat(
- escapeq(gv[t].toString()) +
- '\t' +
- gv[t].toJS('p', query.sources[0].alias, query.defcols)
- );
- });
- // to be defined
- } else if (gv[t] instanceof yy.GroupExpression) {
- if (gv[t].type == 'ROLLUP') res = cartes(res, rollup(gv[t].group, query));
- else if (gv[t].type == 'CUBE') res = cartes(res, cube(gv[t].group, query));
- else if (gv[t].type == 'GROUPING SETS')
- res = cartes(res, groupingsets(gv[t].group, query));
- else throw new Error('Unknown grouping function');
- } else if (gv[t] === '') {
-
- res = [['1\t1']];
+ for (var alias in query.aliases) {
+ var ret = compileSelectStar(query, alias, true); //query.aliases[alias].tableid);
+ if (ret.s) {
+ ss = ss.concat(ret.s);
+ }
+ sp += ret.sp;
+ }
+ // TODO Remove these lines
+ // In case of no information
+ // sp += 'for(var k1 in p){var w=p[k1];'+
+ // 'for(k2 in w) {r[k2]=w[k2]}}'
+ }
} else {
- // if(gv[t])
+ // If field, otherwise - expression
+ var tbid = col.tableid;
+
+ var dbid =
+ col.databaseid || query.sources[0].databaseid || query.database.databaseid;
+ if (!tbid) tbid = query.defcols[col.columnid];
+ if (!tbid) tbid = query.defaultTableid;
+ if (col.columnid !== '_') {
+ if (
+ false &&
+ tbid &&
+ !query.defcols['.'][col.tableid] &&
+ !query.defcols[col.columnid]
+ ) {
+ ss.push(
+ "'" +
+ escapeq(col.as || col.columnid) +
+ "':p['" +
+ query.defaultTableid +
+ "']['" +
+ col.tableid +
+ "']['" +
+ col.columnid +
+ "']"
+ );
+ } else {
+ // workaround for multisheet xlsx export with custom COLUMNS
+ var isMultisheetParam =
+ params &&
+ params.length > 1 &&
+ Array.isArray(params[0]) &&
+ params[0].length >= 1 &&
+ params[0][0].hasOwnProperty('sheetid');
+ if (isMultisheetParam) {
+ sp =
+ 'var r={};var w=p["' +
+ tbid +
+ '"];' +
+ 'var cols=[' +
+ self.columns
+ .map(function(col) {
+ return "'" + col.columnid + "'";
+ })
+ .join(',') +
+ '];var colas=[' +
+ self.columns
+ .map(function(col) {
+ return "'" + (col.as || col.columnid) + "'";
+ })
+ .join(',') +
+ '];' +
+ "for (var i=0;i 0) {
-}
+ var tcol = xcolumns[col.columnid];
-/*
-//
-// Select run-time part for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Select.prototype.compileDefCols = function(query, databaseid) {
-
- var defcols = {'.': {}};
- if (this.from) {
- this.from.forEach(function(fr) {
- defcols['.'][fr.as || fr.tableid] = true;
- if (fr instanceof yy.Table) {
- var alias = fr.as || fr.tableid;
-
- var table = alasql.databases[fr.databaseid || databaseid].tables[fr.tableid];
-
- if (undefined === table) {
- throw new Error('Table does not exist: ' + fr.tableid);
- }
-
- if (table.columns) {
- table.columns.forEach(function(col) {
- if (defcols[col.columnid]) {
- defcols[col.columnid] = '-'; // Ambigous
- } else {
- defcols[col.columnid] = alias;
- }
- });
- }
- } else if (fr instanceof yy.Select) {
- } else if (fr instanceof yy.Search) {
- } else if (fr instanceof yy.ParamValue) {
- } else if (fr instanceof yy.VarValue) {
- } else if (fr instanceof yy.FuncValue) {
- } else if (fr instanceof yy.FromData) {
- } else if (fr instanceof yy.Json) {
- } else if (fr.inserted) {
- } else {
-
- throw new Error('Unknown type of FROM clause');
- }
- });
- }
-
- if (this.joins) {
- this.joins.forEach(function(jn) {
- defcols['.'][jn.as || jn.table.tableid] = true;
-
- if (jn.table) {
- var alias = jn.table.tableid;
- if (jn.as) alias = jn.as;
- var alias = jn.as || jn.table.tableid;
- var table =
- alasql.databases[jn.table.databaseid || databaseid].tables[jn.table.tableid];
-
- if (table.columns) {
- table.columns.forEach(function(col) {
- if (defcols[col.columnid]) {
- defcols[col.columnid] = '-'; // Ambigous
- } else {
- defcols[col.columnid] = alias;
- }
- });
- }
- } else if (jn.select) {
- } else if (jn.param) {
- } else if (jn.func) {
- } else {
- throw new Error('Unknown type of FROM clause');
- }
- });
- }
- // for(var k in defcols) {
- // if(defcols[k] == '-') defcols[k] = undefined;
- // }
-
- return defcols;
-};
+ if (undefined === tcol) {
+ throw new Error('Column does not exist: ' + col.columnid);
+ }
-/*
-//
-// UNION for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ var coldef = {
+ columnid: col.as || col.columnid,
+ dbtypeid: tcol.dbtypeid,
+ dbsize: tcol.dbsize,
+ dbpecision: tcol.dbprecision,
+ dbenum: tcol.dbenum,
+ };
-// SELECT UNION statement
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ } else {
+ var coldef = {
+ columnid: col.as || col.columnid,
+ // dbtypeid:tcol.dbtypeid,
+ // dbsize:tcol.dbsize,
+ // dbpecision:tcol.dbprecision,
+ // dbenum: tcol.dbenum,
+ };
-yy.Union = function(params) {
- return yy.extend(this, params);
-};
-yy.Union.prototype.toString = function() {
- return 'UNION';
-};
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
-yy.Union.prototype.compile = function(tableid) {
- return null;
-};
+ query.dirtyColumns = true;
+ }
+ } else {
+ var coldef = {
+ columnid: col.as || col.columnid,
+ // dbtypeid:tcol.dbtypeid,
+ // dbsize:tcol.dbsize,
+ // dbpecision:tcol.dbprecision,
+ // dbenum: tcol.dbenum,
+ };
-/*
-//
-// CROSS AND OUTER APPLY for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ // This is a subquery?
+ // throw new Error('There is now such table \''+col.tableid+'\'');
+ }
+ }
+ } else if (col instanceof yy.AggrValue) {
+ if (!self.group) {
+ // self.group=[new yy.Column({columnid:'q',as:'q' })];
+ self.group = [''];
+ }
+ if (!col.as) {
+ col.as = escapeq(col.toString());
+ }
-yy.Apply = function(params) {
- return yy.extend(this, params);
-};
+ if (
+ col.aggregatorid === 'SUM' ||
+ col.aggregatorid === 'MAX' ||
+ col.aggregatorid === 'MIN' ||
+ col.aggregatorid === 'FIRST' ||
+ col.aggregatorid === 'LAST' ||
+ col.aggregatorid === 'AVG' ||
+ col.aggregatorid === 'ARRAY' ||
+ col.aggregatorid === 'REDUCE'
+ ) {
+ ss.push(
+ "'" +
+ escapeq(col.as) +
+ "':" +
+ n2u(col.expression.toJS('p', query.defaultTableid, query.defcols))
+ );
+ } else if (col.aggregatorid === 'COUNT') {
+ ss.push("'" + escapeq(col.as) + "':1");
+ // Nothing
+ }
+ // todo: confirm that no default action must be implemented
-yy.Apply.prototype.toString = function() {
- var s = this.applymode + ' APPLY (' + this.select.toString() + ')';
+ // query.selectColumns[col.aggregatorid+'('+escapeq(col.expression.toString())+')'] = thtd;
- if (this.as) s += ' AS ' + this.as;
+ var coldef = {
+ columnid: col.as || col.columnid || col.toString(),
+ // dbtypeid:tcol.dbtypeid,
+ // dbsize:tcol.dbsize,
+ // dbpecision:tcol.dbprecision,
+ // dbenum: tcol.dbenum,
+ };
- return s;
-};
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
-/*
-//
-// CROSS AND OUTER APPLY for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ // else if (col.aggregatorid == 'MAX') {
+ // ss.push((col.as || col.columnid)+':'+col.toJS("p.",query.defaultTableid))
+ // } else if (col.aggregatorid == 'MIN') {
+ // ss.push((col.as || col.columnid)+':'+col.toJS("p.",query.defaultTableid))
+ // }
+ } else {
+
+ ss.push(
+ "'" +
+ escapeq(col.as || col.columnid || col.toString()) +
+ "':" +
+ n2u(col.toJS('p', query.defaultTableid, query.defcols))
+ );
+ // ss.push('\''+escapeq(col.toString())+'\':'+col.toJS("p",query.defaultTableid));
+ //if(col instanceof yy.Expression) {
+ query.selectColumns[escapeq(col.as || col.columnid || col.toString())] = true;
+
+ var coldef = {
+ columnid: col.as || col.columnid || col.toString(),
+ // dbtypeid:tcol.dbtypeid,
+ // dbsize:tcol.dbsize,
+ // dbpecision:tcol.dbprecision,
+ // dbenum: tcol.dbenum,
+ };
+
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ }
+ });
+ s += ss.join(',') + '};' + sp;
+ return s;
-yy.Over = function(params) {
- return yy.extend(this, params);
};
-yy.Over.prototype.toString = function() {
- var s = 'OVER (';
- if (this.partition) {
- s += 'PARTITION BY ' + this.partition.toString();
- if (this.order) s += ' ';
- }
- if (this.order) {
- s += 'ORDER BY ' + this.order.toString();
+yy.Select.prototype.compileSelect2 = function(query) {
+ var s = query.selectfns;
+ if (this.orderColumns && this.orderColumns.length > 0) {
+ this.orderColumns.forEach(function(v, idx) {
+ var key = '$$$' + idx;
+ if (v instanceof yy.Column && query.xcolumns[v.columnid]) {
+ s += "r['" + key + "']=r['" + v.columnid + "'];";
+ } else {
+ s += "r['" + key + "']=" + v.toJS('p', query.defaultTableid, query.defcols) + ';';
+ }
+ query.removeKeys.push(key);
+ });
}
- s += ')';
- return s;
+
+ return new Function('p,params,alasql', 'var y;' + s + 'return r');
};
-/*
-//
-// Expressions for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+yy.Select.prototype.compileSelectGroup0 = function(query) {
+ var self = this;
+ self.columns.forEach(function(col, idx) {
+ if (!(col instanceof yy.Column && col.columnid === '*')) {
+ var colas;
+ // = col.as;
+ if (col instanceof yy.Column) {
+ colas = escapeq(col.columnid);
+ } else {
+ colas = escapeq(col.toString(true));
-/**
- Expression statement ( = 2*2; )
- @class
- @param {object} params Initial parameters
-*/
-yy.ExpressionStatement = function(params) {
- return yy.extend(this, params);
-};
+ }
+ for (var i = 0; i < idx; i++) {
+ if (colas === self.columns[i].nick) {
+ colas = self.columns[i].nick + ':' + idx;
+ break;
+ }
+ }
+ // }
+ col.nick = colas;
+ if (
+ col.funcid &&
+ (col.funcid.toUpperCase() === 'ROWNUM' || col.funcid.toUpperCase() === 'ROW_NUMBER')
+ ) {
+ query.rownums.push(col.as);
+ }
-/**
- Convert AST to string
- @this ExpressionStatement
- @return {string}
-*/
-yy.ExpressionStatement.prototype.toString = function() {
- return this.expression.toString();
-};
-/**
- Execute statement
- @param {string} databaseid Database identificatro
- @param {object} params Statement parameters
- @param {statement-callback} cb Callback
- @return {object} Result value
-*/
-yy.ExpressionStatement.prototype.execute = function(databaseid, params, cb) {
- if (this.expression) {
+ // }
+ } else {
+ query.groupStar = col.tableid || 'default';
+ }
+ });
- alasql.precompile(this, databaseid, params); // Precompile queries
- var exprfn = new Function(
- 'params,alasql,p',
- 'var y;return ' + this.expression.toJS('({})', '', null)
- ).bind(this);
- var res = exprfn(params, alasql);
- if (cb) {
- res = cb(res);
+ this.columns.forEach(function(col) {
+ if (col.findAggregator) {
+ col.findAggregator(query);
+ }
+ });
+
+ if (this.having) {
+ if (this.having.findAggregator) {
+ this.having.findAggregator(query);
}
- return res;
}
};
-/**
- Expression class
- @class
- @param {object} params Initial parameters
-*/
+yy.Select.prototype.compileSelectGroup1 = function(query) {
+ var self = this;
+ var s = 'var r = {};';
-yy.Expression = function(params) {
- return yy.extend(this, params);
-};
+ self.columns.forEach(function(col) {
-/**
- Convert AST to string
- @this ExpressionStatement
- @return {string}
-*/
-yy.Expression.prototype.toString = function(dontas) {
- var s = this.expression.toString(dontas);
- if (this.order) {
- s += ' ' + this.order.toString();
- }
- if (this.nocase) {
- s += ' COLLATE NOCASE';
- }
- if (this.direction) {
- s += ' ' + this.direction;
- }
+ if (col instanceof yy.Column && col.columnid === '*') {
+ // s += 'for(var k in g){r[k]=g[k]};';
+ // s += 'for(var k in this.query.groupColumns){r[k]=g[this.query.groupColumns[k]]};';
+
+ s += 'for(var k in g) {r[k]=g[k]};';
+ return '';
+
+ } else {
+ // var colas = col.as;
+ var colas = col.as;
+ if (colas === undefined) {
+ if (col instanceof yy.Column) {
+ colas = escapeq(col.columnid);
+ } else {
+ colas = col.nick;
+ }
+ }
+ query.groupColumns[colas] = col.nick;
+
+ // if(col.as) {
+ s += "r['" + colas + "']=";
+ // // } else {
+ // // s += 'r[\''+escapeq()+'\']=';
+ // // };
+ // // s += ';';
+
+ s += n2u(col.toJS('g', '')) + ';';
+
+ for (var i = 0; i < query.removeKeys.length; i++) {
+ // THis part should be intellectual
+ if (query.removeKeys[i] === colas) {
+ query.removeKeys.splice(i, 1);
+ break;
+ }
+ }
+ }
+ });
+ // return new Function('g,params,alasql',s+'return r');
return s;
};
-/**
- Find aggregator in AST subtree
- @this ExpressionStatement
- @param {object} query Query object
-*/
-yy.Expression.prototype.findAggregator = function(query) {
- if (this.expression.findAggregator) {
- this.expression.findAggregator(query);
- }
-};
+yy.Select.prototype.compileSelectGroup2 = function(query) {
+ var self = this;
+ var s = query.selectgfns;
+ self.columns.forEach(function(col) {
-/**
- Convert AST to JavaScript expression
- @this ExpressionStatement
- @param {string} context Context string, e.g. 'p','g', or 'x'
- @param {string} tableid Default table name
- @param {object} defcols Default columns dictionary
- @return {string} JavaScript expression
-*/
+ if (query.ingroup.indexOf(col.nick) > -1) {
+ s += "r['" + (col.as || col.nick) + "']=g['" + col.nick + "'];";
+ }
+ });
-yy.Expression.prototype.toJS = function(context, tableid, defcols) {
+ if (this.orderColumns && this.orderColumns.length > 0) {
+ this.orderColumns.forEach(function(v, idx) {
- if (this.expression.reduced) {
- return 'true';
+ var key = '$$$' + idx;
+
+ if (v instanceof yy.Column && query.groupColumns[v.columnid]) {
+ s += "r['" + key + "']=r['" + v.columnid + "'];";
+ } else {
+ s += "r['" + key + "']=" + v.toJS('g', '') + ';';
+ }
+ query.removeKeys.push(key);
+ });
}
- return this.expression.toJS(context, tableid, defcols);
-};
-/**
- Compile AST to JavaScript expression
- @this ExpressionStatement
- @param {string} context Context string, e.g. 'p','g', or 'x'
- @param {string} tableid Default table name
- @param {object} defcols Default columns dictionary
- @return {string} JavaScript expression
-*/
+ return new Function('g,params,alasql', 'var y;' + s + 'return r');
+};
-yy.Expression.prototype.compile = function(context, tableid, defcols) {
+// SELECY * REMOVE [COLUMNS] col-list, LIKE ''
+yy.Select.prototype.compileRemoveColumns = function(query) {
+ var self = this;
+ if (typeof this.removecolumns !== 'undefined') {
+ query.removeKeys = query.removeKeys.concat(
+ this.removecolumns
+ .filter(function(column) {
+ return typeof column.like === 'undefined';
+ })
+ .map(function(column) {
+ return column.columnid;
+ })
+ );
- if (this.reduced) {
- return returnTrue();
+ query.removeLikeKeys = this.removecolumns
+ .filter(function(column) {
+ return typeof column.like !== 'undefined';
+ })
+ .map(function(column) {
+ // return new RegExp((column.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g');
+ return column.like.value;
+ });
}
- return new Function('p', 'var y;return ' + this.toJS(context, tableid, defcols));
};
-/**
- JavaScript class
- @class
-*/
-yy.JavaScript = function(params) {
- return yy.extend(this, params);
-};
-yy.JavaScript.prototype.toString = function() {
- var s = '``' + this.value + '``';
- return s;
-};
+/* global yy */
-yy.JavaScript.prototype.toJS = function(/* context, tableid, defcols*/) {
+yy.Select.prototype.compileHaving = function(query) {
+ if (this.having) {
+ var s = this.having.toJS('g', -1);
+ query.havingfns = s;
- return '(' + this.value + ')';
-};
-yy.JavaScript.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
- var expr = new Function('params,alasql,p', this.value);
- expr(params, alasql);
- if (cb) {
- res = cb(res);
+ return new Function('g,params,alasql', 'var y;return ' + s);
}
- return res;
+
+ return function() {
+ return true;
+ };
};
-/**
- Literal class
- @class
- @example
- MyVar, [My vairable], `MySQL variable`
-*/
+yy.Select.prototype.compileOrder = function(query) {
+ var self = this;
+ self.orderColumns = [];
+ if (this.order) {
-yy.Literal = function(params) {
- return yy.extend(this, params);
-};
-yy.Literal.prototype.toString = function(dontas) {
- var s = this.value;
- if (this.value1) {
- s = this.value1 + '.' + s;
- }
- if (this.alias && !dontas) s += ' AS ' + this.alias;
- // else s = tableid+'.'+s;
- return s;
-};
+ if (
+ this.order &&
+ this.order.length == 1 &&
+ this.order[0].expression &&
+ typeof this.order[0].expression == 'function'
+ ) {
-/**
- Join class
- @class
-*/
+ var func = this.order[0].expression;
-yy.Join = function(params) {
- return yy.extend(this, params);
-};
-yy.Join.prototype.toString = function() {
- var s = ' ';
- if (this.joinmode) {
- s += this.joinmode + ' ';
- }
- s += 'JOIN ' + this.table.toString();
- return s;
-};
+ return function(a, b) {
+ var ra = func(a),
+ rb = func(b);
+ if (ra > rb) return 1;
+ if (ra == rb) return 0;
+ return -1;
+ };
+ }
-// }
+ var s = '';
+ var sk = '';
+ this.order.forEach(function(ord, idx) {
-/**
- Table class
- @class
-*/
+ if (ord.expression instanceof yy.NumValue) {
+ var v = self.columns[ord.expression.value - 1];
+ } else {
+ var v = ord.expression;
+ }
+ self.orderColumns.push(v);
-yy.Table = function(params) {
- return yy.extend(this, params);
-};
-yy.Table.prototype.toString = function() {
- var s = this.tableid;
- // if(this.joinmode)
- if (this.databaseid) {
- s = this.databaseid + '.' + s;
- }
- return s;
-};
+ var key = '$$$' + idx;
-/**
- View class
- @class
+ // Date conversion
+ var dg = '';
+ //if(alasql.options.valueof)
+ if (ord.expression instanceof yy.Column) {
+ var columnid = ord.expression.columnid;
+ if (query.xcolumns[columnid]) {
+ var dbtypeid = query.xcolumns[columnid].dbtypeid;
+ if (dbtypeid == 'DATE' || dbtypeid == 'DATETIME' || dbtypeid == 'DATETIME2')
+ dg = '.valueOf()';
+ // TODO Add other types mapping
+ } else {
+ if (alasql.options.valueof) dg = '.valueOf()'; // TODO Check
+ }
+ // dg = '.valueOf()';
+ }
+ // COLLATE NOCASE
+ if (ord.nocase) dg += '.toUpperCase()';
+ s +=
+ "if((a['" +
+ key +
+ "']||'')" +
+ dg +
+ (ord.direction == 'ASC' ? '>' : '<') +
+ "(b['" +
+ key +
+ "']||'')" +
+ dg +
+ ')return 1;';
+ s += "if((a['" + key + "']||'')" + dg + "==(b['" + key + "']||'')" + dg + '){';
+
+ /*
+if(false) {
+
+ if(ord.expression instanceof yy.NumValue) {
+ ord.expression = self.columns[ord.expression.value-1];
+
+ ord.expression = new yy.Column({columnid:ord.expression.nick});
+ };
+
+ if(ord.expression instanceof yy.Column) {
+ var columnid = ord.expression.columnid;
+ if(query.xcolumns[columnid]) {
+ var dbtypeid = query.xcolumns[columnid].dbtypeid;
+ if( dbtypeid == 'DATE' || dbtypeid == 'DATETIME' || dbtypeid == 'DATETIME2') dg = '.valueOf()';
+ // TODO Add other types mapping
+ } else {
+ if(alasql.options.valueof) dg = '.valueOf()'; // TODO Check
+ }
+ // COLLATE NOCASE
+ if(ord.nocase) dg += '.toUpperCase()';
+
+ s += 'if((a[\''+columnid+"']||'')"+dg+(ord.direction == 'ASC'?'>':'<')+'(b[\''+columnid+"']||'')"+dg+')return 1;';
+ s += 'if((a[\''+columnid+"']||'')"+dg+'==(b[\''+columnid+"']||'')"+dg+'){';
+
+ } else {
+ dg = '.valueOf()';
+ // COLLATE NOCASE
+ if(ord.nocase) dg += '.toUpperCase()';
+ s += 'if(('+ord.toJS('a','')+"||'')"+dg+(ord.direction == 'ASC'?'>(':'<(')+ord.toJS('b','')+"||'')"+dg+')return 1;';
+ s += 'if(('+ord.toJS('a','')+"||'')"+dg+'==('+ord.toJS('b','')+"||'')"+dg+'){';
+ }
+
+ // TODO Add date comparision
+
+}
*/
+ sk += '}';
+ });
+ s += 'return 0;';
+ s += sk + 'return -1';
+ query.orderfns = s;
-yy.View = function(params) {
- return yy.extend(this, params);
-};
-yy.View.prototype.toString = function() {
- var s = this.viewid;
- // if(this.joinmode)
- if (this.databaseid) {
- s = this.databaseid + '.' + s;
+ return new Function('a,b', 'var y;' + s);
}
- return s;
};
+// Pivot functions
/**
- Binary operation class
- @class
+ Compile Pivot functions
+ @param {object} query Source query
+ @return {function} Pivoting functions
*/
-yy.Op = function(params) {
- return yy.extend(this, params);
-};
-yy.Op.prototype.toString = function() {
- if (this.op === 'IN' || this.op === 'NOT IN') {
- return this.left.toString() + ' ' + this.op + ' (' + this.right.toString() + ')';
- }
- if (this.allsome) {
- return (
- this.left.toString() +
- ' ' +
- this.op +
- ' ' +
- this.allsome +
- ' (' +
- this.right.toString() +
- ')'
- );
+yy.Select.prototype.compilePivot = function(query) {
+ var self = this;
+ /** @type {string} Main pivoting column */
+
+ var columnid = self.pivot.columnid;
+ var exprcolid = self.pivot.expr.expression.columnid;
+ var aggr = self.pivot.expr.aggregatorid;
+ var inlist = self.pivot.inlist;
+
+ if (inlist) {
+ inlist = inlist.map(function(l) {
+ return l.expr.columnid;
+ });
}
- if (this.op === '->' || this.op === '!') {
- var s = this.left.toString() + this.op;
- if (typeof this.right !== 'string' && typeof this.right !== 'number') {
- s += '(';
- }
+ // Function for PIVOT post production
+ return function() {
+ var query = this;
+ var cols = query.columns
+ .filter(function(col) {
+ return col.columnid != columnid && col.columnid != exprcolid;
+ })
+ .map(function(col) {
+ return col.columnid;
+ });
- s += this.right.toString();
+ var newcols = [];
+ var gnewcols = {};
+ var gr = {};
+ var ga = {};
+ var data = [];
+ query.data.forEach(function(d) {
+ if (!inlist || inlist.indexOf(d[columnid]) > -1) {
+ var gx = cols
+ .map(function(colid) {
+ return d[colid];
+ })
+ .join('`');
+ var g = gr[gx];
+ if (!g) {
+ g = {};
+ gr[gx] = g;
+ data.push(g);
+ cols.forEach(function(colid) {
+ g[colid] = d[colid];
+ });
+ }
- if (typeof this.right !== 'string' && typeof this.right !== 'number') {
- s += ')';
+ if (!ga[gx]) {
+ ga[gx] = {};
+ }
+
+ if (ga[gx][d[columnid]]) {
+ ga[gx][d[columnid]]++;
+ } else {
+ ga[gx][d[columnid]] = 1;
+ }
+
+ if (!gnewcols[d[columnid]]) {
+ gnewcols[d[columnid]] = true;
+ newcols.push(d[columnid]);
+ }
+
+ if (aggr == 'SUM' || aggr == 'AVG') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = 0;
+ g[d[columnid]] += d[exprcolid];
+ } else if (aggr == 'COUNT') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = 0;
+ g[d[columnid]]++;
+ } else if (aggr == 'MIN') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = Infinity;
+ if (d[exprcolid] < g[d[columnid]]) g[d[columnid]] = d[exprcolid];
+ } else if (aggr == 'MAX') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = -Infinity;
+ if (d[exprcolid] > g[d[columnid]]) g[d[columnid]] = d[exprcolid];
+ } else if (aggr == 'FIRST') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = d[exprcolid];
+ } else if (aggr == 'LAST') {
+ g[d[columnid]] = d[exprcolid];
+ } else if (alasql.aggr[aggr]) {
+ // Custom aggregator
+ alasql.aggr[aggr](g[d[columnid]], d[exprcolid]);
+ } else {
+ throw new Error('Wrong aggregator in PIVOT clause');
+ }
+ }
+ });
+
+ if (aggr == 'AVG') {
+ for (var gx in gr) {
+ var d = gr[gx];
+ for (var colid in d) {
+ if (cols.indexOf(colid) == -1 && colid != exprcolid) {
+ d[colid] = d[colid] / ga[gx][colid];
+ }
+ }
+ }
}
- return s;
- }
- return (
- this.left.toString() +
- ' ' +
- this.op +
- ' ' +
- (this.allsome ? this.allsome + ' ' : '') +
- this.right.toString()
- );
-};
+ // columns
+ query.data = data;
-yy.Op.prototype.findAggregator = function(query) {
+ if (inlist) newcols = inlist;
- if (this.left && this.left.findAggregator) {
- this.left.findAggregator(query);
- }
- // Do not go in > ALL
- if (this.right && this.right.findAggregator && !this.allsome) {
- this.right.findAggregator(query);
- }
+ var ncol = query.columns.filter(function(col) {
+ return col.columnid == exprcolid;
+ })[0];
+ query.columns = query.columns.filter(function(col) {
+ return !(col.columnid == columnid || col.columnid == exprcolid);
+ });
+ newcols.forEach(function(colid) {
+ var nc = cloneDeep(ncol);
+ nc.columnid = colid;
+ query.columns.push(nc);
+ });
+ };
};
-yy.Op.prototype.toType = function(tableid) {
- if (['-', '*', '/', '%', '^'].indexOf(this.op) > -1) {
- return 'number';
- }
- if (['||'].indexOf(this.op) > -1) {
- return 'string';
- }
- if (this.op === '+') {
- if (this.left.toType(tableid) === 'string' || this.right.toType(tableid) === 'string') {
- return 'string';
- }
- if (this.left.toType(tableid) === 'number' || this.right.toType(tableid) === 'number') {
- return 'number';
- }
- }
+// var columnid = this.pivot.columnid;
- if (
- [
- 'AND',
- 'OR',
- 'NOT',
- '=',
- '==',
- '===',
- '!=',
- '!==',
- '!===',
- '>',
- '>=',
- '<',
- '<=',
- 'IN',
- 'NOT IN',
- 'LIKE',
- 'NOT LIKE',
- 'REGEXP',
- 'GLOB',
- ].indexOf(this.op) > -1
- ) {
- return 'boolean';
- }
+// return function(data){
- if (
- this.op === 'BETWEEN' ||
- this.op === 'NOT BETWEEN' ||
- this.op === 'IS NULL' ||
- this.op === 'IS NOT NULL'
- ) {
- return 'boolean';
- }
+// if(false) {
- if (this.allsome) {
- return 'boolean';
- }
+// }
- if (!this.op) {
- return this.left.toType();
- }
+// if(false) {
- return 'unknown';
-};
+// }
+// };
-yy.Op.prototype.toJS = function(context, tableid, defcols) {
+/**
+ Compile UNPIVOT clause
+ @param {object} query Query object
+ @return {function} Function for unpivoting
+*/
+yy.Select.prototype.compileUnpivot = function(query) {
+ var self = this;
+ var tocolumnid = self.unpivot.tocolumnid;
+ var forcolumnid = self.unpivot.forcolumnid;
+ var inlist = self.unpivot.inlist.map(function(l) {
+ return l.columnid;
+ });
- var s;
- var refs = [];
- var op = this.op;
- var _this = this;
- //var leftJS = function(){return _this.left.toJS(context,tableid, defcols)};
- //var rightJS = function(){return _this.right.toJS(context,tableid, defcols)};
- var accessedLeft = false,
- accessedRight = false;
- var ref = function(expr) {
- if (expr.toJS) {
- expr = expr.toJS(context, tableid, defcols);
- }
- var i = refs.push(expr) - 1;
- return 'y[' + i + ']';
- };
- var leftJS = function() {
- return ref(_this.left);
- };
- var rightJS = function() {
- return ref(_this.right);
+ return function() {
+ var data = [];
+
+ var xcols = query.columns
+ .map(function(col) {
+ return col.columnid;
+ })
+ .filter(function(colid) {
+ return inlist.indexOf(colid) == -1 && colid != forcolumnid && colid != tocolumnid;
+ });
+
+ query.data.forEach(function(d) {
+ inlist.forEach(function(colid) {
+ var nd = {};
+ xcols.forEach(function(xcolid) {
+ nd[xcolid] = d[xcolid];
+ });
+ nd[forcolumnid] = colid;
+ nd[tocolumnid] = d[colid];
+ data.push(nd);
+ });
+ });
+
+ query.data = data;
+
+ // });
};
+};
- if (this.op === '=') {
- op = '===';
- } else if (this.op === '<>') {
- op = '!=';
- } else if (this.op === 'OR') {
- op = '||';
- }
+/*
+//
+// ROLLUP(), CUBE(), GROUPING SETS() for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
- // Arrow operator
- if (this.op === '->') {
- // Expression to prevent error if object is empty (#344)
- var ljs = '(' + leftJS() + '||{})';
+/**
+ Calculate ROLLUP() combination
+ */
- if (typeof this.right === 'string') {
- s = ljs + '["' + this.right + '"]';
- } else if (typeof this.right === 'number') {
- s = ljs + '[' + this.right + ']';
- } else if (this.right instanceof yy.FuncValue) {
- var ss = [];
- if (!(!this.right.args || 0 === this.right.args.length)) {
- var ss = this.right.args.map(ref);
+var rollup = function(a, query) {
+ var rr = [];
+ var mask = 0;
+ var glen = a.length;
+ for (var g = 0; g < glen + 1; g++) {
+ var ss = [];
+ for (var i = 0; i < glen; i++) {
+ if (a[i] instanceof yy.Column) {
+ a[i].nick = escapeq(a[i].columnid);
+
+ query.groupColumns[escapeq(a[i].columnid)] = a[i].nick;
+ var aaa = a[i].nick + '\t' + a[i].toJS('p', query.sources[0].alias, query.defcols);
+ } else {
+ query.groupColumns[escapeq(a[i].toString())] = escapeq(a[i].toString());
+ var aaa =
+ escapeq(a[i].toString()) +
+ '\t' +
+ a[i].toJS('p', query.sources[0].alias, query.defcols);
}
- s = '' + ljs + "['" + this.right.funcid + "'](" + ss.join(',') + ')';
- } else {
- s = '' + ljs + '[' + rightJS() + ']';
- }
- }
- if (this.op === '!') {
- if (typeof this.right === 'string') {
- s =
- '' +
- 'alasql.databases[alasql.useid].objects[' +
- leftJS() +
- ']["' +
- this.right +
- '"]';
+ if (mask & (1 << i)) ss.push(aaa);
}
- // TODO - add other cases
+ rr.push(ss);
+ mask = (mask << 1) + 1;
}
+ return rr;
+};
- if (this.op === 'IS') {
- s =
- '' +
- '(' +
- '(' +
- leftJS() +
- '==null)' + // Cant be ===
- ' === ' +
- '(' +
- rightJS() +
- '==null)' + // Cant be ===
- ')';
- }
+/**
+ Calculate CUBE()
+ */
+var cube = function(a, query) {
+ var rr = [];
+ var glen = a.length;
+ var glenCube = 1 << glen;
+ for (var g = 0; g < glenCube; g++) {
+ var ss = [];
+ for (var i = 0; i < glen; i++) {
+ if (g & (1 << i))
+ //ss.push(a[i]);
+ //ss = cartes(ss,decartes(a[i]));
- if (this.op === '==') {
- s = '' + 'alasql.utils.deepEqual(' + leftJS() + ',' + rightJS() + ')';
- }
+ // var aaa = a[i].toString()+'\t'
+ // +a[i].toJS('p',query.sources[0].alias,query.defcols);
- if (this.op === '===' || this.op === '!===') {
- s =
- '' +
- '(' +
- (this.op === '!===' ? '!' : '') +
- '(' +
- '(' +
- leftJS() +
- ').valueOf()' +
- '===' +
- '(' +
- rightJS() +
- ').valueOf()' +
- ')' +
- ')';
+ ss = ss.concat(decartes(a[i], query));
+ //
+ }
+ rr.push(ss);
}
+ return rr;
+};
- if (this.op === '!==') {
- s = '' + '(!alasql.utils.deepEqual(' + leftJS() + ',' + rightJS() + '))';
- }
- if (this.op === '||') {
- s = '' + "(''+(" + leftJS() + "||'')+(" + rightJS() + '||""))';
- }
- if (this.op === 'LIKE' || this.op === 'NOT LIKE') {
- var s =
- '(' +
- (this.op === 'NOT LIKE' ? '!' : '') +
- 'alasql.utils.like(' +
- rightJS() +
- ',' +
- leftJS();
- if (this.escape) {
- s += ',' + ref(this.escape);
+/**
+ GROUPING SETS()
+ */
+var groupingsets = function(a, query) {
+ return a.reduce(function(acc, d) {
+ acc = acc.concat(decartes(d, query));
+ return acc;
+ }, []);
+};
+
+/**
+ Cartesian production
+ */
+var cartes = function(a1, a2) {
+ var rrr = [];
+ for (var i1 = 0; i1 < a1.length; i1++) {
+ for (var i2 = 0; i2 < a2.length; i2++) {
+ rrr.push(a1[i1].concat(a2[i2]));
}
- s += '))';
- }
- if (this.op === 'REGEXP') {
- s = 'alasql.stdfn.REGEXP_LIKE(' + leftJS() + ',' + rightJS() + ')';
- }
- if (this.op === 'GLOB') {
- s = 'alasql.utils.glob(' + leftJS() + ',' + rightJS() + ')';
}
+ return rrr;
+};
- if (this.op === 'BETWEEN' || this.op === 'NOT BETWEEN') {
- var left = leftJS();
- s =
- '' +
- '(' +
- (this.op === 'NOT BETWEEN' ? '!' : '') +
- '(' +
- '(' +
- ref(this.right1) +
- '<=' +
- left +
- ') && (' +
- left +
- '<=' +
- ref(this.right2) +
- ')' +
- ')' +
- ')';
+/**
+ Prepare groups function
+ */
+function decartes(gv, query) {
- }
+ if (Array.isArray(gv)) {
+ var res = [[]];
+ for (var t = 0; t < gv.length; t++) {
+ if (gv[t] instanceof yy.Column) {
- if (this.op === 'IN') {
- if (this.right instanceof yy.Select) {
- s = '(';
- // s += 'this.query.queriesdata['+this.queriesidx+']';
- // s += 'alasql.utils.flatArray(this.query.queriesfn['+(this.queriesidx)+'](params,null,context))';
- s +=
- 'alasql.utils.flatArray(this.queriesfn[' +
- this.queriesidx +
- '](params,null,' +
- context +
- '))';
- s += '.indexOf(';
- s += leftJS() + ')>-1)';
- } else if (Array.isArray(this.right)) {
- // if(this.right.length == 0) return 'false';
- s = '([' + this.right.map(ref).join(',') + '].indexOf(' + leftJS() + ')>-1)';
+ gv[t].nick = escapeq(gv[t].columnid);
+ query.groupColumns[gv[t].nick] = gv[t].nick;
+ res = res.map(function(r) {
+ return r.concat(
+ gv[t].nick + '\t' + gv[t].toJS('p', query.sources[0].alias, query.defcols)
+ );
+ });
+ // res = res.map(function(r){return r.concat(gv[t].columnid)});
+ } else if (gv[t] instanceof yy.FuncValue) {
+ query.groupColumns[escapeq(gv[t].toString())] = escapeq(gv[t].toString());
+ res = res.map(function(r) {
+ return r.concat(
+ escapeq(gv[t].toString()) +
+ '\t' +
+ gv[t].toJS('p', query.sources[0].alias, query.defcols)
+ );
+ });
+ // to be defined
+ } else if (gv[t] instanceof yy.GroupExpression) {
+ if (gv[t].type == 'ROLLUP') res = cartes(res, rollup(gv[t].group, query));
+ else if (gv[t].type == 'CUBE') res = cartes(res, cube(gv[t].group, query));
+ else if (gv[t].type == 'GROUPING SETS')
+ res = cartes(res, groupingsets(gv[t].group, query));
+ else throw new Error('Unknown grouping function');
+ } else if (gv[t] === '') {
- } else {
- s = '(' + rightJS() + '.indexOf(' + leftJS() + ')>-1)';
+ res = [['1\t1']];
+ } else {
+ // if(gv[t])
+
+ res = res.map(function(r) {
+ query.groupColumns[escapeq(gv[t].toString())] = escapeq(gv[t].toString());
+ return r.concat(
+ escapeq(gv[t].toString()) +
+ '\t' +
+ gv[t].toJS('p', query.sources[0].alias, query.defcols)
+ );
+ });
+ // res = res.concat(gv[t]);
+ }
- // } else {
- // throw new Error('Wrong IN operator without SELECT part');
}
+ return res;
+ } else if (gv instanceof yy.FuncValue) {
+
+ query.groupColumns[escapeq(gv.toString())] = escapeq(gv.toString());
+ return [gv.toString() + '\t' + gv.toJS('p', query.sources[0].alias, query.defcols)];
+ } else if (gv instanceof yy.Column) {
+ gv.nick = escapeq(gv.columnid);
+ query.groupColumns[gv.nick] = gv.nick;
+ return [gv.nick + '\t' + gv.toJS('p', query.sources[0].alias, query.defcols)]; // Is this ever happened?
+ // } else if(gv instanceof yy.Expression) {
+ // return [gv.columnid]; // Is this ever happened?
+ } else {
+ query.groupColumns[escapeq(gv.toString())] = escapeq(gv.toString());
+ return [
+ escapeq(gv.toString()) + '\t' + gv.toJS('p', query.sources[0].alias, query.defcols),
+ ];
+ // throw new Error('Single argument in the group without array');
}
- if (this.op === 'NOT IN') {
- if (this.right instanceof yy.Select) {
- s = '(';
- //this.query.queriesdata['+this.queriesidx+']
- // s += 'alasql.utils.flatArray(this.query.queriesfn['+(this.queriesidx)+'](params,null,p))';
- s += 'alasql.utils.flatArray(this.queriesfn[' + this.queriesidx + '](params,null,p))';
- s += '.indexOf(';
- s += leftJS() + ')<0)';
- } else if (Array.isArray(this.right)) {
- // if(this.right.length == 0) return 'true';
- s = '([' + this.right.map(ref).join(',') + '].indexOf(';
- s += leftJS() + ')<0)';
- } else {
- s = '(' + rightJS() + '.indexOf(';
- s += leftJS() + ')==-1)';
+}
- // throw new Error('Wrong NOT IN operator without SELECT part');
- }
- }
+/*
+//
+// Select run-time part for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
- if (this.allsome === 'ALL') {
- var s;
- if (this.right instanceof yy.Select) {
- // var s = 'this.query.queriesdata['+this.queriesidx+']';
- s =
- 'alasql.utils.flatArray(this.query.queriesfn[' +
- this.queriesidx +
- '](params,null,p))';
+yy.Select.prototype.compileDefCols = function(query, databaseid) {
- s += '.every(function(b){return (';
- s += leftJS() + ')' + op + 'b})';
- } else if (Array.isArray(this.right)) {
- s =
- '' +
- (this.right.length == 1
- ? ref(this.right[0])
- : '[' + this.right.map(ref).join(',') + ']');
- s += '.every(function(b){return (';
- s += leftJS() + ')' + op + 'b})';
- } else {
- throw new Error('NOT IN operator without SELECT');
- }
- }
+ var defcols = {'.': {}};
+ if (this.from) {
+ this.from.forEach(function(fr) {
+ defcols['.'][fr.as || fr.tableid] = true;
+ if (fr instanceof yy.Table) {
+ var alias = fr.as || fr.tableid;
- if (this.allsome === 'SOME' || this.allsome === 'ANY') {
- var s;
- if (this.right instanceof yy.Select) {
- // var s = 'this.query.queriesdata['+this.queriesidx+']';
- s =
- 'alasql.utils.flatArray(this.query.queriesfn[' +
- this.queriesidx +
- '](params,null,p))';
- s += '.some(function(b){return (';
- s += leftJS() + ')' + op + 'b})';
- } else if (Array.isArray(this.right)) {
- s =
- '' +
- (this.right.length == 1
- ? ref(this.right[0])
- : '[' + this.right.map(ref).join(',') + ']');
- s += '.some(function(b){return (';
- s += leftJS() + ')' + op + 'b})';
- } else {
- throw new Error('SOME/ANY operator without SELECT');
- }
- }
+ var table = alasql.databases[fr.databaseid || databaseid].tables[fr.tableid];
- // Special case for AND optimization (if reduced)
- if (this.op === 'AND') {
- if (this.left.reduced) {
- if (this.right.reduced) {
- return 'true';
+ if (undefined === table) {
+ throw new Error('Table does not exist: ' + fr.tableid);
+ }
+
+ if (table.columns) {
+ table.columns.forEach(function(col) {
+ if (defcols[col.columnid]) {
+ defcols[col.columnid] = '-'; // Ambigous
+ } else {
+ defcols[col.columnid] = alias;
+ }
+ });
+ }
+ } else if (fr instanceof yy.Select) {
+ } else if (fr instanceof yy.Search) {
+ } else if (fr instanceof yy.ParamValue) {
+ } else if (fr instanceof yy.VarValue) {
+ } else if (fr instanceof yy.FuncValue) {
+ } else if (fr instanceof yy.FromData) {
+ } else if (fr instanceof yy.Json) {
+ } else if (fr.inserted) {
} else {
- s = rightJS();
- }
- } else if (this.right.reduced) {
- s = leftJS();
- }
- // Otherwise process as regular operation (see below)
- op = '&&';
+ throw new Error('Unknown type of FROM clause');
+ }
+ });
}
- // if(this.op === '^') {
- // // return 'Math.pow('
- // // + leftJS()
- // // + ','
- // // + rightJS()
- // // + ')';
+ if (this.joins) {
+ this.joins.forEach(function(jn) {
+ defcols['.'][jn.as || jn.table.tableid] = true;
+
+ if (jn.table) {
+ var alias = jn.table.tableid;
+ if (jn.as) alias = jn.as;
+ var alias = jn.as || jn.table.tableid;
+ var table =
+ alasql.databases[jn.table.databaseid || databaseid].tables[jn.table.tableid];
+
+ if (table.columns) {
+ table.columns.forEach(function(col) {
+ if (defcols[col.columnid]) {
+ defcols[col.columnid] = '-'; // Ambigous
+ } else {
+ defcols[col.columnid] = alias;
+ }
+ });
+ }
+ } else if (jn.select) {
+ } else if (jn.param) {
+ } else if (jn.func) {
+ } else {
+ throw new Error('Unknown type of FROM clause');
+ }
+ });
+ }
+ // for(var k in defcols) {
+ // if(defcols[k] == '-') defcols[k] = undefined;
// }
- // Change names
-
- var expr = s || '(' + leftJS() + op + rightJS() + ')';
-
- var declareRefs = 'y=[(' + refs.join('), (') + ')]';
+ return defcols;
+};
- if (op === '&&' || op === '||' || op === 'IS' || op === 'IS NULL' || op === 'IS NOT NULL') {
- return '(' + declareRefs + ', ' + expr + ')';
- }
+/*
+//
+// UNION for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
- return (
- '(' + declareRefs + ', ' + 'y.some(function(e){return e == null}) ? void 0 : ' + expr + ')'
- );
-};
+// SELECT UNION statement
-yy.VarValue = function(params) {
+yy.Union = function(params) {
return yy.extend(this, params);
};
-yy.VarValue.prototype.toString = function() {
- return '@' + this.variable;
+yy.Union.prototype.toString = function() {
+ return 'UNION';
};
-yy.VarValue.prototype.toType = function() {
- return 'unknown';
+yy.Union.prototype.compile = function(tableid) {
+ return null;
};
-yy.VarValue.prototype.toJS = function() {
- return "alasql.vars['" + this.variable + "']";
-};
+/*
+//
+// CROSS AND OUTER APPLY for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
-yy.NumValue = function(params) {
+yy.Apply = function(params) {
return yy.extend(this, params);
};
-yy.NumValue.prototype.toString = function() {
- return this.value.toString();
-};
-yy.NumValue.prototype.toType = function() {
- return 'number';
-};
+yy.Apply.prototype.toString = function() {
+ var s = this.applymode + ' APPLY (' + this.select.toString() + ')';
-yy.NumValue.prototype.toJS = function() {
- return '' + this.value;
+ if (this.as) s += ' AS ' + this.as;
+
+ return s;
};
-yy.StringValue = function(params) {
+/*
+//
+// CROSS AND OUTER APPLY for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Over = function(params) {
return yy.extend(this, params);
};
-yy.StringValue.prototype.toString = function() {
- return "'" + this.value.toString() + "'";
+yy.Over.prototype.toString = function() {
+ var s = 'OVER (';
+ if (this.partition) {
+ s += 'PARTITION BY ' + this.partition.toString();
+ if (this.order) s += ' ';
+ }
+ if (this.order) {
+ s += 'ORDER BY ' + this.order.toString();
+ }
+ s += ')';
+ return s;
};
-yy.StringValue.prototype.toType = function() {
- return 'string';
+/*
+//
+// Expressions for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/**
+ Expression statement ( = 2*2; )
+ @class
+ @param {object} params Initial parameters
+*/
+yy.ExpressionStatement = function(params) {
+ return yy.extend(this, params);
};
-yy.StringValue.prototype.toJS = function() {
+/**
+ Convert AST to string
+ @this ExpressionStatement
+ @return {string}
+*/
+yy.ExpressionStatement.prototype.toString = function() {
+ return this.expression.toString();
+};
+/**
+ Execute statement
+ @param {string} databaseid Database identificatro
+ @param {object} params Statement parameters
+ @param {statement-callback} cb Callback
+ @return {object} Result value
+*/
+yy.ExpressionStatement.prototype.execute = function(databaseid, params, cb) {
+ if (this.expression) {
- // return "'"+doubleqq(this.value)+"'";
- return "'" + escapeq(this.value) + "'";
+ alasql.precompile(this, databaseid, params); // Precompile queries
+ var exprfn = new Function(
+ 'params,alasql,p',
+ 'var y;return ' + this.expression.toJS('({})', '', null)
+ ).bind(this);
+ var res = exprfn(params, alasql);
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+ }
};
-yy.DomainValueValue = function(params) {
+/**
+ Expression class
+ @class
+ @param {object} params Initial parameters
+*/
+
+yy.Expression = function(params) {
return yy.extend(this, params);
};
-yy.DomainValueValue.prototype.toString = function() {
- return 'VALUE';
+
+/**
+ Convert AST to string
+ @this ExpressionStatement
+ @return {string}
+*/
+yy.Expression.prototype.toString = function(dontas) {
+ var s = this.expression.toString(dontas);
+ if (this.order) {
+ s += ' ' + this.order.toString();
+ }
+ if (this.nocase) {
+ s += ' COLLATE NOCASE';
+ }
+ if (this.direction) {
+ s += ' ' + this.direction;
+ }
+ return s;
};
-yy.DomainValueValue.prototype.toType = function() {
- return 'object';
+/**
+ Find aggregator in AST subtree
+ @this ExpressionStatement
+ @param {object} query Query object
+*/
+yy.Expression.prototype.findAggregator = function(query) {
+ if (this.expression.findAggregator) {
+ this.expression.findAggregator(query);
+ }
};
-yy.DomainValueValue.prototype.toJS = function(context, tableid, defcols) {
+/**
+ Convert AST to JavaScript expression
+ @this ExpressionStatement
+ @param {string} context Context string, e.g. 'p','g', or 'x'
+ @param {string} tableid Default table name
+ @param {object} defcols Default columns dictionary
+ @return {string} JavaScript expression
+*/
- // return "'"+doubleqq(this.value)+"'";
- return context;
-};
+yy.Expression.prototype.toJS = function(context, tableid, defcols) {
-yy.ArrayValue = function(params) {
- return yy.extend(this, params);
-};
-yy.ArrayValue.prototype.toString = function() {
- return 'ARRAY[]';
+ if (this.expression.reduced) {
+ return 'true';
+ }
+ return this.expression.toJS(context, tableid, defcols);
};
-yy.ArrayValue.prototype.toType = function() {
- return 'object';
-};
+/**
+ Compile AST to JavaScript expression
+ @this ExpressionStatement
+ @param {string} context Context string, e.g. 'p','g', or 'x'
+ @param {string} tableid Default table name
+ @param {object} defcols Default columns dictionary
+ @return {string} JavaScript expression
+*/
-yy.ArrayValue.prototype.toJS = function(context, tableid, defcols) {
+yy.Expression.prototype.compile = function(context, tableid, defcols) {
- // return "'"+doubleqq(this.value)+"'";
- return (
- '[(' +
- this.value
- .map(function(el) {
- return el.toJS(context, tableid, defcols);
- })
- .join('), (') +
- ')]'
- );
+ if (this.reduced) {
+ return returnTrue();
+ }
+ return new Function('p', 'var y;return ' + this.toJS(context, tableid, defcols));
};
-yy.LogicValue = function(params) {
+/**
+ JavaScript class
+ @class
+*/
+yy.JavaScript = function(params) {
return yy.extend(this, params);
};
-yy.LogicValue.prototype.toString = function() {
- return this.value ? 'TRUE' : 'FALSE';
+yy.JavaScript.prototype.toString = function() {
+ var s = '``' + this.value + '``';
+ return s;
};
-yy.LogicValue.prototype.toType = function() {
- return 'boolean';
-};
+yy.JavaScript.prototype.toJS = function(/* context, tableid, defcols*/) {
-yy.LogicValue.prototype.toJS = function() {
- return this.value ? 'true' : 'false';
+ return '(' + this.value + ')';
+};
+yy.JavaScript.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ var expr = new Function('params,alasql,p', this.value);
+ expr(params, alasql);
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
};
-yy.NullValue = function(params) {
+/**
+ Literal class
+ @class
+ @example
+ MyVar, [My vairable], `MySQL variable`
+*/
+
+yy.Literal = function(params) {
return yy.extend(this, params);
};
-yy.NullValue.prototype.toString = function() {
- return 'NULL';
-};
-yy.NullValue.prototype.toJS = function() {
- return 'undefined';
- // return 'undefined';
+yy.Literal.prototype.toString = function(dontas) {
+ var s = this.value;
+ if (this.value1) {
+ s = this.value1 + '.' + s;
+ }
+ if (this.alias && !dontas) s += ' AS ' + this.alias;
+ // else s = tableid+'.'+s;
+ return s;
};
-yy.ParamValue = function(params) {
+/**
+ Join class
+ @class
+*/
+
+yy.Join = function(params) {
return yy.extend(this, params);
};
-yy.ParamValue.prototype.toString = function() {
- return '$' + this.param;
-};
-yy.ParamValue.prototype.toJS = function() {
- if (typeof this.param === 'string') {
- return "params['" + this.param + "']";
+yy.Join.prototype.toString = function() {
+ var s = ' ';
+ if (this.joinmode) {
+ s += this.joinmode + ' ';
}
-
- return 'params[' + this.param + ']';
+ s += 'JOIN ' + this.table.toString();
+ return s;
};
-yy.UniOp = function(params) {
+// }
+
+/**
+ Table class
+ @class
+*/
+
+yy.Table = function(params) {
return yy.extend(this, params);
};
-yy.UniOp.prototype.toString = function() {
- var s;
- s = void 0;
- if (this.op === '~') {
- s = this.op + this.right.toString();
- }
- if (this.op === '-') {
- s = this.op + this.right.toString();
- }
- if (this.op === '+') {
- s = this.op + this.right.toString();
+yy.Table.prototype.toString = function() {
+ var s = this.tableid;
+ // if(this.joinmode)
+ if (this.databaseid) {
+ s = this.databaseid + '.' + s;
}
- if (this.op === '#') {
- s = this.op + this.right.toString();
+ return s;
+};
+
+/**
+ View class
+ @class
+*/
+
+yy.View = function(params) {
+ return yy.extend(this, params);
+};
+yy.View.prototype.toString = function() {
+ var s = this.viewid;
+ // if(this.joinmode)
+ if (this.databaseid) {
+ s = this.databaseid + '.' + s;
}
- if (this.op === 'NOT') {
- s = this.op + '(' + this.right.toString() + ')';
+ return s;
+};
+
+/**
+ Binary operation class
+ @class
+*/
+yy.Op = function(params) {
+ return yy.extend(this, params);
+};
+yy.Op.prototype.toString = function() {
+ if (this.op === 'IN' || this.op === 'NOT IN') {
+ return this.left.toString() + ' ' + this.op + ' (' + this.right.toString() + ')';
}
- if (this.op === null) {
- s = '(' + this.right.toString() + ')';
+ if (this.allsome) {
+ return (
+ this.left.toString() +
+ ' ' +
+ this.op +
+ ' ' +
+ this.allsome +
+ ' (' +
+ this.right.toString() +
+ ')'
+ );
}
- if (!s) {
- s = '(' + this.right.toString() + ')';
+ if (this.op === '->' || this.op === '!') {
+ var s = this.left.toString() + this.op;
+
+ if (typeof this.right !== 'string' && typeof this.right !== 'number') {
+ s += '(';
+ }
+
+ s += this.right.toString();
+
+ if (typeof this.right !== 'string' && typeof this.right !== 'number') {
+ s += ')';
+ }
+
+ return s;
}
- return s;
+ return (
+ this.left.toString() +
+ ' ' +
+ this.op +
+ ' ' +
+ (this.allsome ? this.allsome + ' ' : '') +
+ this.right.toString()
+ );
};
-yy.UniOp.prototype.findAggregator = function(query) {
- if (this.right.findAggregator) {
+yy.Op.prototype.findAggregator = function(query) {
+
+ if (this.left && this.left.findAggregator) {
+ this.left.findAggregator(query);
+ }
+ // Do not go in > ALL
+ if (this.right && this.right.findAggregator && !this.allsome) {
this.right.findAggregator(query);
}
};
-yy.UniOp.prototype.toType = function() {
- if (this.op === '-') {
+yy.Op.prototype.toType = function(tableid) {
+ if (['-', '*', '/', '%', '^'].indexOf(this.op) > -1) {
return 'number';
}
-
+ if (['||'].indexOf(this.op) > -1) {
+ return 'string';
+ }
if (this.op === '+') {
- return 'number';
+ if (this.left.toType(tableid) === 'string' || this.right.toType(tableid) === 'string') {
+ return 'string';
+ }
+ if (this.left.toType(tableid) === 'number' || this.right.toType(tableid) === 'number') {
+ return 'number';
+ }
}
- if (this.op === 'NOT') {
+ if (
+ [
+ 'AND',
+ 'OR',
+ 'NOT',
+ '=',
+ '==',
+ '===',
+ '!=',
+ '!==',
+ '!===',
+ '>',
+ '>=',
+ '<',
+ '<=',
+ 'IN',
+ 'NOT IN',
+ 'LIKE',
+ 'NOT LIKE',
+ 'REGEXP',
+ 'GLOB',
+ ].indexOf(this.op) > -1
+ ) {
return 'boolean';
}
- // Todo: implement default case
-};
-
-yy.UniOp.prototype.toJS = function(context, tableid, defcols) {
- if (this.op === '~') {
- return '(~(' + this.right.toJS(context, tableid, defcols) + '))';
+ if (
+ this.op === 'BETWEEN' ||
+ this.op === 'NOT BETWEEN' ||
+ this.op === 'IS NULL' ||
+ this.op === 'IS NOT NULL'
+ ) {
+ return 'boolean';
}
- if (this.op === '-') {
- return '(-(' + this.right.toJS(context, tableid, defcols) + '))';
+ if (this.allsome) {
+ return 'boolean';
}
- if (this.op === '+') {
- return '(' + this.right.toJS(context, tableid, defcols) + ')';
+ if (!this.op) {
+ return this.left.toType();
}
- if (this.op === 'NOT') {
- return '!(' + this.right.toJS(context, tableid, defcols) + ')';
- }
+ return 'unknown';
+};
- if (this.op === '#') {
- if (this.right instanceof yy.Column) {
- return "(alasql.databases[alasql.useid].objects['" + this.right.columnid + "'])";
- } else {
- return (
- '(alasql.databases[alasql.useid].objects[' +
- this.right.toJS(context, tableid, defcols) +
- '])'
- );
+yy.Op.prototype.toJS = function(context, tableid, defcols) {
+
+ var s;
+ var refs = [];
+ var op = this.op;
+ var _this = this;
+ //var leftJS = function(){return _this.left.toJS(context,tableid, defcols)};
+ //var rightJS = function(){return _this.right.toJS(context,tableid, defcols)};
+ var accessedLeft = false,
+ accessedRight = false;
+ var ref = function(expr) {
+ if (expr.toJS) {
+ expr = expr.toJS(context, tableid, defcols);
}
- }
+ var i = refs.push(expr) - 1;
+ return 'y[' + i + ']';
+ };
+ var leftJS = function() {
+ return ref(_this.left);
+ };
+ var rightJS = function() {
+ return ref(_this.right);
+ };
- // Please avoid === here
- if (this.op == null) {
- // jshint ignore:line
- return '(' + this.right.toJS(context, tableid, defcols) + ')';
+ if (this.op === '=') {
+ op = '===';
+ } else if (this.op === '<>') {
+ op = '!=';
+ } else if (this.op === 'OR') {
+ op = '||';
}
- // Todo: implement default case.
-};
+ // Arrow operator
+ if (this.op === '->') {
+ // Expression to prevent error if object is empty (#344)
+ var ljs = '(' + leftJS() + '||{})';
-yy.Column = function(params) {
- return yy.extend(this, params);
-};
-yy.Column.prototype.toString = function(dontas) {
- var s;
- if (this.columnid == +this.columnid) {
- // jshint ignore:line
- s = '[' + this.columnid + ']';
- } else {
- s = this.columnid;
- }
- if (this.tableid) {
- if (+this.columnid === this.columnid) {
- s = this.tableid + s;
+ if (typeof this.right === 'string') {
+ s = ljs + '["' + this.right + '"]';
+ } else if (typeof this.right === 'number') {
+ s = ljs + '[' + this.right + ']';
+ } else if (this.right instanceof yy.FuncValue) {
+ var ss = [];
+ if (!(!this.right.args || 0 === this.right.args.length)) {
+ var ss = this.right.args.map(ref);
+ }
+ s = '' + ljs + "['" + this.right.funcid + "'](" + ss.join(',') + ')';
} else {
- s = this.tableid + '.' + s;
- }
- if (this.databaseid) {
- s = this.databaseid + '.' + s;
+ s = '' + ljs + '[' + rightJS() + ']';
}
}
- if (this.alias && !dontas) s += ' AS ' + this.alias;
- return s;
-};
-yy.Column.prototype.toJS = function(context, tableid, defcols) {
-
- var s = '';
- if (!this.tableid && tableid === '' && !defcols) {
- if (this.columnid !== '_') {
- s = context + "['" + this.columnid + "']";
- } else {
- if (context === 'g') {
- s = "g['_']";
- } else {
- s = context;
- }
- }
- } else {
- if (context === 'g') {
- // if(this.columnid == '_') {
- // } else {
- s = "g['" + this.nick + "']";
- // }
- } else if (this.tableid) {
- if (this.columnid !== '_') {
- // if() {
- // s = context+'[\''+tableid + '\'][\''+this.tableid+'\'][\''+this.columnid+'\']';
- // } else {
- s = context + "['" + this.tableid + "']['" + this.columnid + "']";
- // }
- } else {
- if (context === 'g') {
- s = "g['_']";
- } else {
- s = context + "['" + this.tableid + "']";
- }
- }
- } else if (defcols) {
- var tbid = defcols[this.columnid];
- if (tbid === '-') {
- throw new Error(
- 'Cannot resolve column "' +
- this.columnid +
- '" because it exists in two source tables'
- );
- } else if (tbid) {
- if (this.columnid !== '_') {
- s = context + "['" + tbid + "']['" + this.columnid + "']";
- } else {
- s = context + "['" + tbid + "']";
- }
-
- } else {
- if (this.columnid !== '_') {
- // if(defcols['.'][this.tableid]) {
-
- // s = context+'[\''+tableid + '\'][\''+this.tableid + '\'][\''+this.columnid+'\']';
- // } else {
- s = context + "['" + (this.tableid || tableid) + "']['" + this.columnid + "']";
- // }
- } else {
- s = context + "['" + (this.tableid || tableid) + "']";
- }
- }
- } else if (tableid === -1) {
- // if(this.columnid != '') {
- s = context + "['" + this.columnid + "']";
- // } else {
- // s = context;
- // }
- } else {
- if (this.columnid !== '_') {
- s = context + "['" + (this.tableid || tableid) + "']['" + this.columnid + "']";
- } else {
- s = context + "['" + (this.tableid || tableid) + "']";
- }
+ if (this.op === '!') {
+ if (typeof this.right === 'string') {
+ s =
+ '' +
+ 'alasql.databases[alasql.useid].objects[' +
+ leftJS() +
+ ']["' +
+ this.right +
+ '"]';
}
+ // TODO - add other cases
}
- // console.trace(new Error());
-
- return s;
-};
-
-yy.AggrValue = function(params) {
- return yy.extend(this, params);
-};
-yy.AggrValue.prototype.toString = function(dontas) {
- var s = '';
- if (this.aggregatorid === 'REDUCE') {
- s += this.funcid + '(';
- } else {
- s += this.aggregatorid + '(';
+ if (this.op === 'IS') {
+ s =
+ '' +
+ '(' +
+ '(' +
+ leftJS() +
+ '==null)' + // Cant be ===
+ ' === ' +
+ '(' +
+ rightJS() +
+ '==null)' + // Cant be ===
+ ')';
}
- if (this.distinct) {
- s += 'DISTINCT ';
+ if (this.op === '==') {
+ s = '' + 'alasql.utils.deepEqual(' + leftJS() + ',' + rightJS() + ')';
}
- if (this.expression) {
- s += this.expression.toString();
+ if (this.op === '===' || this.op === '!===') {
+ s =
+ '' +
+ '(' +
+ (this.op === '!===' ? '!' : '') +
+ '(' +
+ '(' +
+ leftJS() +
+ ').valueOf()' +
+ '===' +
+ '(' +
+ rightJS() +
+ ').valueOf()' +
+ ')' +
+ ')';
}
- s += ')';
-
- if (this.over) {
- s += ' ' + this.over.toString();
+ if (this.op === '!==') {
+ s = '' + '(!alasql.utils.deepEqual(' + leftJS() + ',' + rightJS() + '))';
+ }
+ if (this.op === '||') {
+ s = '' + "(''+(" + leftJS() + "||'')+(" + rightJS() + '||""))';
+ }
+ if (this.op === 'LIKE' || this.op === 'NOT LIKE') {
+ var s =
+ '(' +
+ (this.op === 'NOT LIKE' ? '!' : '') +
+ 'alasql.utils.like(' +
+ rightJS() +
+ ',' +
+ leftJS();
+ if (this.escape) {
+ s += ',' + ref(this.escape);
+ }
+ s += '))';
+ }
+ if (this.op === 'REGEXP') {
+ s = 'alasql.stdfn.REGEXP_LIKE(' + leftJS() + ',' + rightJS() + ')';
+ }
+ if (this.op === 'GLOB') {
+ s = 'alasql.utils.glob(' + leftJS() + ',' + rightJS() + ')';
}
- if (this.alias && !dontas) s += ' AS ' + this.alias;
- // if(this.alias) s += ' AS '+this.alias;
- return s;
-};
-
-yy.AggrValue.prototype.findAggregator = function(query) {
-
- // var colas = this.as || this.toString();
+ if (this.op === 'BETWEEN' || this.op === 'NOT BETWEEN') {
+ var left = leftJS();
+ s =
+ '' +
+ '(' +
+ (this.op === 'NOT BETWEEN' ? '!' : '') +
+ '(' +
+ '(' +
+ ref(this.right1) +
+ '<=' +
+ left +
+ ') && (' +
+ left +
+ '<=' +
+ ref(this.right2) +
+ ')' +
+ ')' +
+ ')';
- var colas = escapeq(this.toString()) + ':' + query.selectGroup.length;
+ }
- // if(!query.selectColumns[colas]) {
- // }
+ if (this.op === 'IN') {
+ if (this.right instanceof yy.Select) {
+ s = '(';
+ // s += 'this.query.queriesdata['+this.queriesidx+']';
+ // s += 'alasql.utils.flatArray(this.query.queriesfn['+(this.queriesidx)+'](params,null,context))';
+ s +=
+ 'alasql.utils.flatArray(this.queriesfn[' +
+ this.queriesidx +
+ '](params,null,' +
+ context +
+ '))';
+ s += '.indexOf(';
+ s += leftJS() + ')>-1)';
+ } else if (Array.isArray(this.right)) {
+ // if(this.right.length == 0) return 'false';
+ s = '([' + this.right.map(ref).join(',') + '].indexOf(' + leftJS() + ')>-1)';
- var found = false;
+ } else {
+ s = '(' + rightJS() + '.indexOf(' + leftJS() + ')>-1)';
- if (!found) {
- if (!this.nick) {
- this.nick = colas;
- var found = false;
- for (var i = 0; i < query.removeKeys.length; i++) {
- if (query.removeKeys[i] === colas) {
- found = true;
- break;
- }
- }
- if (!found) {
- query.removeKeys.push(colas);
- }
+ // } else {
+ // throw new Error('Wrong IN operator without SELECT part');
}
- query.selectGroup.push(this);
}
- // this.reduced = true;
- return;
-};
+ if (this.op === 'NOT IN') {
+ if (this.right instanceof yy.Select) {
+ s = '(';
+ //this.query.queriesdata['+this.queriesidx+']
+ // s += 'alasql.utils.flatArray(this.query.queriesfn['+(this.queriesidx)+'](params,null,p))';
+ s += 'alasql.utils.flatArray(this.queriesfn[' + this.queriesidx + '](params,null,p))';
+ s += '.indexOf(';
+ s += leftJS() + ')<0)';
+ } else if (Array.isArray(this.right)) {
+ // if(this.right.length == 0) return 'true';
+ s = '([' + this.right.map(ref).join(',') + '].indexOf(';
+ s += leftJS() + ')<0)';
+ } else {
+ s = '(' + rightJS() + '.indexOf(';
+ s += leftJS() + ')==-1)';
-yy.AggrValue.prototype.toType = function() {
- if (
- ['SUM', 'COUNT', 'AVG', 'MIN', 'MAX', 'AGGR', 'VAR', 'STDDEV'].indexOf(this.aggregatorid) >
- -1
- ) {
- return 'number';
+ // throw new Error('Wrong NOT IN operator without SELECT part');
+ }
}
- if (['ARRAY'].indexOf(this.aggregatorid) > -1) {
- return 'array';
- }
+ if (this.allsome === 'ALL') {
+ var s;
+ if (this.right instanceof yy.Select) {
+ // var s = 'this.query.queriesdata['+this.queriesidx+']';
+ s =
+ 'alasql.utils.flatArray(this.query.queriesfn[' +
+ this.queriesidx +
+ '](params,null,p))';
- if (['FIRST', 'LAST'].indexOf(this.aggregatorid) > -1) {
- return this.expression.toType();
+ s += '.every(function(b){return (';
+ s += leftJS() + ')' + op + 'b})';
+ } else if (Array.isArray(this.right)) {
+ s =
+ '' +
+ (this.right.length == 1
+ ? ref(this.right[0])
+ : '[' + this.right.map(ref).join(',') + ']');
+ s += '.every(function(b){return (';
+ s += leftJS() + ')' + op + 'b})';
+ } else {
+ throw new Error('NOT IN operator without SELECT');
+ }
}
- // todo: implement default;
-};
-
-yy.AggrValue.prototype.toJS = function(/*context, tableid, defcols*/) {
-
- var colas = this.nick;
- if (colas === undefined) {
- colas = this.toString();
+ if (this.allsome === 'SOME' || this.allsome === 'ANY') {
+ var s;
+ if (this.right instanceof yy.Select) {
+ // var s = 'this.query.queriesdata['+this.queriesidx+']';
+ s =
+ 'alasql.utils.flatArray(this.query.queriesfn[' +
+ this.queriesidx +
+ '](params,null,p))';
+ s += '.some(function(b){return (';
+ s += leftJS() + ')' + op + 'b})';
+ } else if (Array.isArray(this.right)) {
+ s =
+ '' +
+ (this.right.length == 1
+ ? ref(this.right[0])
+ : '[' + this.right.map(ref).join(',') + ']');
+ s += '.some(function(b){return (';
+ s += leftJS() + ')' + op + 'b})';
+ } else {
+ throw new Error('SOME/ANY operator without SELECT');
+ }
}
- return "g['" + colas + "']";
-};
-yy.OrderExpression = function(params) {
- return yy.extend(this, params);
+ // Special case for AND optimization (if reduced)
+ if (this.op === 'AND') {
+ if (this.left.reduced) {
+ if (this.right.reduced) {
+ return 'true';
+ } else {
+ s = rightJS();
+ }
+ } else if (this.right.reduced) {
+ s = leftJS();
+ }
+
+ // Otherwise process as regular operation (see below)
+ op = '&&';
+ }
+
+ // if(this.op === '^') {
+ // // return 'Math.pow('
+ // // + leftJS()
+ // // + ','
+ // // + rightJS()
+ // // + ')';
+ // }
+
+ // Change names
+
+ var expr = s || '(' + leftJS() + op + rightJS() + ')';
+
+ var declareRefs = 'y=[(' + refs.join('), (') + ')]';
+
+ if (op === '&&' || op === '||' || op === 'IS' || op === 'IS NULL' || op === 'IS NOT NULL') {
+ return '(' + declareRefs + ', ' + expr + ')';
+ }
+
+ return (
+ '(' + declareRefs + ', ' + 'y.some(function(e){return e == null}) ? void 0 : ' + expr + ')'
+ );
};
-yy.OrderExpression.prototype.toString = yy.Expression.prototype.toString;
-yy.GroupExpression = function(params) {
+yy.VarValue = function(params) {
return yy.extend(this, params);
};
-yy.GroupExpression.prototype.toString = function() {
- return this.type + '(' + this.group.toString() + ')';
+yy.VarValue.prototype.toString = function() {
+ return '@' + this.variable;
};
-// Alasql Linq library
+yy.VarValue.prototype.toType = function() {
+ return 'unknown';
+};
-yy.FromData = function(params) {
+yy.VarValue.prototype.toJS = function() {
+ return "alasql.vars['" + this.variable + "']";
+};
+
+yy.NumValue = function(params) {
return yy.extend(this, params);
};
-yy.FromData.prototype.toString = function() {
- if (this.data) return 'DATA(' + ((Math.random() * 10e15) | 0) + ')';
- else return '?';
+yy.NumValue.prototype.toString = function() {
+ return this.value.toString();
};
-yy.FromData.prototype.toJS = function() {
+yy.NumValue.prototype.toType = function() {
+ return 'number';
};
-yy.Select.prototype.exec = function(params, cb) {
- if (this.preparams) params = this.preparams.concat(params);
+yy.NumValue.prototype.toJS = function() {
+ return '' + this.value;
+};
- var databaseid = alasql.useid;
- db = alasql.databases[databaseid];
- var sql = this.toString();
- var hh = hash(sql);
+yy.StringValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.StringValue.prototype.toString = function() {
+ return "'" + this.value.toString() + "'";
+};
- var statement = this.compile(databaseid);
- if (!statement) return;
- statement.sql = sql;
- statement.dbversion = db.dbversion;
+yy.StringValue.prototype.toType = function() {
+ return 'string';
+};
- // Secure sqlCache size
- if (db.sqlCacheSize > alasql.MAXSQLCACHESIZE) {
- db.resetSqlCache();
- }
- db.sqlCacheSize++;
- db.sqlCache[hh] = statement;
- var res = (alasql.res = statement(params, cb));
- return res;
+yy.StringValue.prototype.toJS = function() {
+
+ // return "'"+doubleqq(this.value)+"'";
+ return "'" + escapeq(this.value) + "'";
};
-yy.Select.prototype.Select = function() {
- var self = this;
- var agrs = [];
- if (arguments.length > 1) {
- args = Array.prototype.slice.call(arguments);
- } else if (arguments.length == 1) {
- if (Array.isArray(arguments[0])) {
- args = arguments[0];
- } else {
- args = [arguments[0]];
- }
- } else {
- throw new Error('Wrong number of arguments of Select() function');
- }
+yy.DomainValueValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.DomainValueValue.prototype.toString = function() {
+ return 'VALUE';
+};
- self.columns = [];
+yy.DomainValueValue.prototype.toType = function() {
+ return 'object';
+};
- args.forEach(function(arg) {
- if (typeof arg == 'string') {
- self.columns.push(new yy.Column({columnid: arg}));
- } else if (typeof arg == 'function') {
- var pari = 0;
- if (self.preparams) {
- pari = self.preparams.length;
- } else {
- self.preparams = [];
- }
- self.preparams.push(arg);
- self.columns.push(new yy.Column({columnid: '*', func: arg, param: pari}));
- } else {
- // Unknown type
- }
- });
+yy.DomainValueValue.prototype.toJS = function(context, tableid, defcols) {
- return self;
+ // return "'"+doubleqq(this.value)+"'";
+ return context;
};
-yy.Select.prototype.From = function(tableid) {
- var self = this;
- if (!self.from) self.from = [];
- if (Array.isArray(tableid)) {
- var pari = 0;
- if (self.preparams) {
- pari = self.preparams.length;
- } else {
- self.preparams = [];
- }
- self.preparams.push(tableid);
- self.from.push(new yy.ParamValue({param: pari}));
- } else if (typeof tableid == 'string') {
- self.from.push(new yy.Table({tableid: tableid}));
- } else {
- throw new Error('Unknown arguments in From() function');
- }
- return self;
+yy.ArrayValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.ArrayValue.prototype.toString = function() {
+ return 'ARRAY[]';
};
-yy.Select.prototype.OrderBy = function() {
- var self = this;
- var agrs = [];
+yy.ArrayValue.prototype.toType = function() {
+ return 'object';
+};
- self.order = [];
+yy.ArrayValue.prototype.toJS = function(context, tableid, defcols) {
- if (arguments.length == 0) {
- // self.order.push(new yy.OrderExpression({expression: new yy.Column({columnid:"_"}), direction:'ASC'}));
- args = ['_'];
- } else if (arguments.length > 1) {
- args = Array.prototype.slice.call(arguments);
- } else if (arguments.length == 1) {
- if (Array.isArray(arguments[0])) {
- args = arguments[0];
- } else {
- args = [arguments[0]];
- }
- } else {
- throw new Error('Wrong number of arguments of Select() function');
- }
+ // return "'"+doubleqq(this.value)+"'";
+ return (
+ '[(' +
+ this.value
+ .map(function(el) {
+ return el.toJS(context, tableid, defcols);
+ })
+ .join('), (') +
+ ')]'
+ );
+};
- if (args.length > 0) {
- args.forEach(function(arg) {
- var expr = new yy.Column({columnid: arg});
- if (typeof arg == 'function') {
- expr = arg;
- }
- self.order.push(new yy.OrderExpression({expression: expr, direction: 'ASC'}));
- });
- }
- return self;
+yy.LogicValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.LogicValue.prototype.toString = function() {
+ return this.value ? 'TRUE' : 'FALSE';
};
-yy.Select.prototype.Top = function(topnum) {
- var self = this;
- self.top = new yy.NumValue({value: topnum});
- return self;
+yy.LogicValue.prototype.toType = function() {
+ return 'boolean';
};
-yy.Select.prototype.GroupBy = function() {
- var self = this;
- var agrs = [];
+yy.LogicValue.prototype.toJS = function() {
+ return this.value ? 'true' : 'false';
+};
- if (arguments.length > 1) {
- args = Array.prototype.slice.call(arguments);
- } else if (arguments.length == 1) {
- if (Array.isArray(arguments[0])) {
- args = arguments[0];
- } else {
- args = [arguments[0]];
- }
- } else {
- throw new Error('Wrong number of arguments of Select() function');
- }
-
- self.group = [];
-
- args.forEach(function(arg) {
- var expr = new yy.Column({columnid: arg});
- self.group.push(expr);
- });
-
- return self;
+yy.NullValue = function(params) {
+ return yy.extend(this, params);
};
-
-yy.Select.prototype.Where = function(expr) {
- var self = this;
- if (typeof expr == 'function') {
- self.where = expr;
- }
- return self;
+yy.NullValue.prototype.toString = function() {
+ return 'NULL';
+};
+yy.NullValue.prototype.toJS = function() {
+ return 'undefined';
+ // return 'undefined';
};
-/*
-//
-// Functions for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.FuncValue = function(params) {
+yy.ParamValue = function(params) {
return yy.extend(this, params);
};
-yy.FuncValue.prototype.toString = function(dontas) {
- var s = '';
-
- if (alasql.fn[this.funcid]) s += this.funcid;
- else if (alasql.aggr[this.funcid]) s += this.funcid;
- else if (alasql.stdlib[this.funcid.toUpperCase()] || alasql.stdfn[this.funcid.toUpperCase()])
- s += this.funcid.toUpperCase();
-
- s += '(';
- if (this.args && this.args.length > 0) {
- s += this.args
- .map(function(arg) {
- return arg.toString();
- })
- .join(',');
- }
- s += ')';
- if (this.as && !dontas) s += ' AS ' + this.as.toString();
- // if(this.alias) s += ' AS '+this.alias;
- return s;
+yy.ParamValue.prototype.toString = function() {
+ return '$' + this.param;
};
+yy.ParamValue.prototype.toJS = function() {
+ if (typeof this.param === 'string') {
+ return "params['" + this.param + "']";
+ }
-yy.FuncValue.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
- alasql.precompile(this, databaseid, params); // Precompile queries
-
- var expr = new Function('params,alasql', 'var y;return ' + this.toJS('', '', null));
- expr(params, alasql);
- if (cb) res = cb(res);
- return res;
+ return 'params[' + this.param + ']';
};
-yy.FuncValue.prototype.findAggregator = function(query) {
- if (this.args && this.args.length > 0) {
- this.args.forEach(function(arg) {
- if (arg.findAggregator) arg.findAggregator(query);
- });
- }
+yy.UniOp = function(params) {
+ return yy.extend(this, params);
};
-
-yy.FuncValue.prototype.toJS = function(context, tableid, defcols) {
- var s = '';
- var funcid = this.funcid;
- // IF this is standard compile functions
- if (!alasql.fn[funcid] && alasql.stdlib[funcid.toUpperCase()]) {
- if (this.args && this.args.length > 0) {
- s += alasql.stdlib[funcid.toUpperCase()].apply(
- this,
- this.args.map(function(arg) {
- return arg.toJS(context, tableid);
- })
- );
- } else {
- s += alasql.stdlib[funcid.toUpperCase()]();
- }
- } else if (!alasql.fn[funcid] && alasql.stdfn[funcid.toUpperCase()]) {
- if (this.newid) s += 'new ';
- s += 'alasql.stdfn.' + this.funcid.toUpperCase() + '(';
- // if(this.args) s += this.args.toJS(context, tableid);
- if (this.args && this.args.length > 0) {
- s += this.args
- .map(function(arg) {
- return arg.toJS(context, tableid, defcols);
- })
- .join(',');
- }
- s += ')';
- } else {
- // This is user-defined run-time function
- // TODO arguments!!!
- // var s = '';
- if (this.newid) s += 'new ';
- s += 'alasql.fn.' + this.funcid + '(';
- // if(this.args) s += this.args.toJS(context, tableid);
- if (this.args && this.args.length > 0) {
- s += this.args
- .map(function(arg) {
- return arg.toJS(context, tableid, defcols);
- })
- .join(',');
- }
- s += ')';
+yy.UniOp.prototype.toString = function() {
+ var s;
+ s = void 0;
+ if (this.op === '~') {
+ s = this.op + this.right.toString();
+ }
+ if (this.op === '-') {
+ s = this.op + this.right.toString();
+ }
+ if (this.op === '+') {
+ s = this.op + this.right.toString();
+ }
+ if (this.op === '#') {
+ s = this.op + this.right.toString();
+ }
+ if (this.op === 'NOT') {
+ s = this.op + '(' + this.right.toString() + ')';
+ }
+ if (this.op === null) {
+ s = '(' + this.right.toString() + ')';
+ }
+ if (!s) {
+ s = '(' + this.right.toString() + ')';
}
-
- // if(this.alias) s += ' AS '+this.alias;
return s;
};
-var stdlib = (alasql.stdlib = {});
-var stdfn = (alasql.stdfn = {});
-
-stdlib.ABS = function(a) {
- return 'Math.abs(' + a + ')';
-};
-stdlib.CLONEDEEP = function(a) {
- return 'alasql.utils.cloneDeep(' + a + ')';
-};
-
-stdfn.CONCAT = function() {
- return Array.prototype.slice.call(arguments).join('');
-};
-stdlib.EXP = function(a) {
- return 'Math.pow(Math.E,' + a + ')';
+yy.UniOp.prototype.findAggregator = function(query) {
+ if (this.right.findAggregator) {
+ this.right.findAggregator(query);
+ }
};
-stdlib.IIF = function(a, b, c) {
- if (arguments.length == 3) {
- return '((' + a + ')?(' + b + '):(' + c + '))';
- } else {
- throw new Error('Number of arguments of IFF is not equals to 3');
+yy.UniOp.prototype.toType = function() {
+ if (this.op === '-') {
+ return 'number';
}
-};
-stdlib.IFNULL = function(a, b) {
- return '(' + a + '||' + b + ')';
-};
-stdlib.INSTR = function(s, p) {
- return '((' + s + ').indexOf(' + p + ')+1)';
-};
-//stdlib.LEN = stdlib.LENGTH = function(s) {return '('+s+'+"").length';};
+ if (this.op === '+') {
+ return 'number';
+ }
-stdlib.LEN = stdlib.LENGTH = function(s) {
- return und(s, 'y.length');
-};
-//stdlib.LENGTH = function(s) {return '('+s+').length'};
+ if (this.op === 'NOT') {
+ return 'boolean';
+ }
-stdlib.LOWER = stdlib.LCASE = function(s) {
- return und(s, 'String(y).toLowerCase()');
+ // Todo: implement default case
};
-//stdlib.LCASE = function(s) {return '('+s+').toLowerCase()';}
-// Returns a character expression after it removes leading blanks.
-// see https://docs.microsoft.com/en-us/sql/t-sql/functions/ltrim-transact-sql
-stdlib.LTRIM = function(s) {
- return und(s, 'y.replace(/^[ ]+/,"")');
-};
+yy.UniOp.prototype.toJS = function(context, tableid, defcols) {
+ if (this.op === '~') {
+ return '(~(' + this.right.toJS(context, tableid, defcols) + '))';
+ }
-// Returns a character string after truncating all trailing spaces.
-// see https://docs.microsoft.com/en-us/sql/t-sql/functions/rtrim-transact-sql
-stdlib.RTRIM = function(s) {
- return und(s, 'y.replace(/[ ]+$/,"")');
-};
+ if (this.op === '-') {
+ return '(-(' + this.right.toJS(context, tableid, defcols) + '))';
+ }
-stdlib.MAX = stdlib.GREATEST = function() {
- return 'Math.max(' + Array.prototype.join.call(arguments, ',') + ')';
-};
+ if (this.op === '+') {
+ return '(' + this.right.toJS(context, tableid, defcols) + ')';
+ }
-stdlib.MIN = stdlib.LEAST = function() {
- return 'Math.min(' + Array.prototype.join.call(arguments, ',') + ')';
-};
+ if (this.op === 'NOT') {
+ return '!(' + this.right.toJS(context, tableid, defcols) + ')';
+ }
-stdlib.SUBSTRING = stdlib.SUBSTR = stdlib.MID = function(a, b, c) {
- if (arguments.length == 2) return und(a, 'y.substr(' + b + '-1)');
- else if (arguments.length == 3) return und(a, 'y.substr(' + b + '-1,' + c + ')');
-};
+ if (this.op === '#') {
+ if (this.right instanceof yy.Column) {
+ return "(alasql.databases[alasql.useid].objects['" + this.right.columnid + "'])";
+ } else {
+ return (
+ '(alasql.databases[alasql.useid].objects[' +
+ this.right.toJS(context, tableid, defcols) +
+ '])'
+ );
+ }
+ }
-stdfn.REGEXP_LIKE = function(a, b, c) {
+ // Please avoid === here
+ if (this.op == null) {
+ // jshint ignore:line
+ return '(' + this.right.toJS(context, tableid, defcols) + ')';
+ }
- return (a || '').search(RegExp(b, c)) > -1;
+ // Todo: implement default case.
};
-// Here we uses undefined instead of null
-stdlib.ISNULL = stdlib.NULLIF = function(a, b) {
- return '(' + a + '==' + b + '?undefined:' + a + ')';
+yy.Column = function(params) {
+ return yy.extend(this, params);
};
-
-stdlib.POWER = function(a, b) {
- return 'Math.pow(' + a + ',' + b + ')';
-};
-
-stdlib.RANDOM = function(r) {
- if (arguments.length == 0) {
- return 'Math.random()';
+yy.Column.prototype.toString = function(dontas) {
+ var s;
+ if (this.columnid == +this.columnid) {
+ // jshint ignore:line
+ s = '[' + this.columnid + ']';
} else {
- return '(Math.random()*(' + r + ')|0)';
+ s = this.columnid;
+ }
+ if (this.tableid) {
+ if (+this.columnid === this.columnid) {
+ s = this.tableid + s;
+ } else {
+ s = this.tableid + '.' + s;
+ }
+ if (this.databaseid) {
+ s = this.databaseid + '.' + s;
+ }
}
+ if (this.alias && !dontas) s += ' AS ' + this.alias;
+ return s;
};
-stdlib.ROUND = function(s, d) {
- if (arguments.length == 2) {
- return 'Math.round((' + s + ')*Math.pow(10,(' + d + ')))/Math.pow(10,(' + d + '))';
+
+yy.Column.prototype.toJS = function(context, tableid, defcols) {
+
+ var s = '';
+ if (!this.tableid && tableid === '' && !defcols) {
+ if (this.columnid !== '_') {
+ s = context + "['" + this.columnid + "']";
+ } else {
+ if (context === 'g') {
+ s = "g['_']";
+ } else {
+ s = context;
+ }
+ }
} else {
- return 'Math.round(' + s + ')';
+ if (context === 'g') {
+ // if(this.columnid == '_') {
+ // } else {
+ s = "g['" + this.nick + "']";
+ // }
+ } else if (this.tableid) {
+ if (this.columnid !== '_') {
+ // if() {
+ // s = context+'[\''+tableid + '\'][\''+this.tableid+'\'][\''+this.columnid+'\']';
+ // } else {
+ s = context + "['" + this.tableid + "']['" + this.columnid + "']";
+ // }
+ } else {
+ if (context === 'g') {
+ s = "g['_']";
+ } else {
+ s = context + "['" + this.tableid + "']";
+ }
+ }
+ } else if (defcols) {
+ var tbid = defcols[this.columnid];
+ if (tbid === '-') {
+ throw new Error(
+ 'Cannot resolve column "' +
+ this.columnid +
+ '" because it exists in two source tables'
+ );
+ } else if (tbid) {
+ if (this.columnid !== '_') {
+ s = context + "['" + tbid + "']['" + this.columnid + "']";
+ } else {
+ s = context + "['" + tbid + "']";
+ }
+
+ } else {
+ if (this.columnid !== '_') {
+ // if(defcols['.'][this.tableid]) {
+
+ // s = context+'[\''+tableid + '\'][\''+this.tableid + '\'][\''+this.columnid+'\']';
+ // } else {
+ s = context + "['" + (this.tableid || tableid) + "']['" + this.columnid + "']";
+ // }
+ } else {
+ s = context + "['" + (this.tableid || tableid) + "']";
+ }
+ }
+ } else if (tableid === -1) {
+ // if(this.columnid != '') {
+ s = context + "['" + this.columnid + "']";
+ // } else {
+ // s = context;
+ // }
+ } else {
+ if (this.columnid !== '_') {
+ s = context + "['" + (this.tableid || tableid) + "']['" + this.columnid + "']";
+ } else {
+ s = context + "['" + (this.tableid || tableid) + "']";
+ }
+ }
}
-};
-stdlib.CEIL = stdlib.CEILING = function(s) {
- return 'Math.ceil(' + s + ')';
-};
-stdlib.FLOOR = function(s) {
- return 'Math.floor(' + s + ')';
-};
-stdlib.ROWNUM = function() {
- return '1';
-};
-stdlib.ROW_NUMBER = function() {
- return '1';
-};
+ // console.trace(new Error());
-stdlib.SQRT = function(s) {
- return 'Math.sqrt(' + s + ')';
+ return s;
};
-stdlib.TRIM = function(s) {
- return und(s, 'y.trim()');
+yy.AggrValue = function(params) {
+ return yy.extend(this, params);
};
+yy.AggrValue.prototype.toString = function(dontas) {
+ var s = '';
+ if (this.aggregatorid === 'REDUCE') {
+ s += this.funcid + '(';
+ } else {
+ s += this.aggregatorid + '(';
+ }
-stdlib.UPPER = stdlib.UCASE = function(s) {
- return und(s, 'String(y).toUpperCase()');
-};
+ if (this.distinct) {
+ s += 'DISTINCT ';
+ }
-// Concatination of strings
-stdfn.CONCAT_WS = function() {
- var args = Array.prototype.slice.call(arguments);
- return args.slice(1, args.length).join(args[0]);
-};
+ if (this.expression) {
+ s += this.expression.toString();
+ }
-//stdlib.UCASE = function(s) {return '('+s+').toUpperCase()';}
-//REPLACE
-// RTRIM
-// SUBSTR
-// TRIM
-//REPLACE
-// RTRIM
-// SUBSTR
-// TRIM
+ s += ')';
-// Aggregator for joining strings
-alasql.aggr.GROUP_CONCAT = function(v, s, stage) {
- if (stage === 1) {
- return '' + v;
- } else if (stage === 2) {
- s += ',' + v;
- return s;
+ if (this.over) {
+ s += ' ' + this.over.toString();
}
+
+ if (this.alias && !dontas) s += ' AS ' + this.alias;
+ // if(this.alias) s += ' AS '+this.alias;
return s;
};
-alasql.aggr.MEDIAN = function(v, s, stage) {
- if (stage === 2) {
- if (v !== null) {
- s.push(v);
- }
- return s;
- } else if (stage === 1) {
- if (v === null) {
- return [];
- }
- return [v];
- } else {
- if (!s.length) {
- return s;
- }
+yy.AggrValue.prototype.findAggregator = function(query) {
- var r = s.sort();
- var p = (r.length + 1) / 2;
- if (Number.isInteger(p)) {
- return r[p - 1];
- }
+ // var colas = this.as || this.toString();
- return (r[Math.floor(p - 1)] + r[Math.ceil(p - 1)]) / 2;
- }
-};
+ var colas = escapeq(this.toString()) + ':' + query.selectGroup.length;
-alasql.aggr.QUART = function(v, s, stage, nth) {
- //Quartile (first quartile per default or input param)
- if (stage === 2) {
- if (v !== null) {
- s.push(v);
- }
- return s;
- } else if (stage === 1) {
- if (v === null) {
- return [];
- }
- return [v];
- } else {
- if (!s.length) {
- return s;
- }
+ // if(!query.selectColumns[colas]) {
+ // }
- nth = !nth ? 1 : nth;
- var r = s.sort();
- var p = nth * (r.length + 1) / 4;
- if (Number.isInteger(p)) {
- return r[p - 1]; //Integer value
+ var found = false;
+
+ if (!found) {
+ if (!this.nick) {
+ this.nick = colas;
+ var found = false;
+ for (var i = 0; i < query.removeKeys.length; i++) {
+ if (query.removeKeys[i] === colas) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ query.removeKeys.push(colas);
+ }
}
- return r[Math.floor(p)]; //Math.ceil -1 or Math.floor
+ query.selectGroup.push(this);
}
-};
-alasql.aggr.QUART2 = function(v, s, stage) {
- //Second Quartile
- return alasql.aggr.QUART(v, s, stage, 2);
-};
-alasql.aggr.QUART3 = function(v, s, stage) {
- //Third Quartile
- return alasql.aggr.QUART(v, s, stage, 3);
+ // this.reduced = true;
+ return;
};
-// Standard deviation
-alasql.aggr.VAR = function(v, s, stage) {
- if (stage === 1) {
- if (v === null) {
- return {arr: [], sum: 0};
- }
- return {arr: [v], sum: v};
- } else if (stage === 2) {
- if (v === null) {
- return s;
- }
- s.arr.push(v);
- s.sum += v;
- return s;
- } else {
- var N = s.arr.length;
- var avg = s.sum / N;
- var std = 0;
- for (var i = 0; i < N; i++) {
- std += (s.arr[i] - avg) * (s.arr[i] - avg);
- }
- std = std / (N - 1);
- return std;
+yy.AggrValue.prototype.toType = function() {
+ if (
+ ['SUM', 'COUNT', 'AVG', 'MIN', 'MAX', 'AGGR', 'VAR', 'STDDEV'].indexOf(this.aggregatorid) >
+ -1
+ ) {
+ return 'number';
}
-};
-alasql.aggr.STDEV = function(v, s, stage) {
- if (stage === 1 || stage === 2) {
- return alasql.aggr.VAR(v, s, stage);
- } else {
- return Math.sqrt(alasql.aggr.VAR(v, s, stage));
+ if (['ARRAY'].indexOf(this.aggregatorid) > -1) {
+ return 'array';
}
-};
-
-// Standard deviation
-// alasql.aggr.VARP = function(v,s,acc){
-
-// };
-alasql.aggr.VARP = function(v, s, stage) {
- if (stage == 1) {
- return {arr: [v], sum: v};
- } else if (stage == 2) {
- s.arr.push(v);
- s.sum += v;
- return s;
- } else {
- var N = s.arr.length;
- var avg = s.sum / N;
- var std = 0;
- for (var i = 0; i < N; i++) {
- std += (s.arr[i] - avg) * (s.arr[i] - avg);
- }
- std = std / N;
- return std;
+ if (['FIRST', 'LAST'].indexOf(this.aggregatorid) > -1) {
+ return this.expression.toType();
}
-};
-alasql.aggr.STD = alasql.aggr.STDDEV = alasql.aggr.STDEVP = function(v, s, stage) {
- if (stage == 1 || stage == 2) {
- return alasql.aggr.VARP(v, s, stage);
- } else {
- return Math.sqrt(alasql.aggr.VARP(v, s, stage));
- }
+ // todo: implement default;
};
-alasql._aggrOriginal = alasql.aggr;
-alasql.aggr = {};
-Object.keys(alasql._aggrOriginal).forEach(function(k) {
- alasql.aggr[k] = function(v, s, stage) {
- if (stage === 3 && typeof s === 'undefined') return undefined;
- return alasql._aggrOriginal[k].apply(null, arguments);
- };
-});
+yy.AggrValue.prototype.toJS = function(/*context, tableid, defcols*/) {
-// String functions
-stdfn.REPLACE = function(target, pattern, replacement) {
- return (target || '').split(pattern).join(replacement);
+ var colas = this.nick;
+ if (colas === undefined) {
+ colas = this.toString();
+ }
+ return "g['" + colas + "']";
};
-// This array is required for fast GUID generation
-var lut = [];
-for (var i = 0; i < 256; i++) {
- lut[i] = (i < 16 ? '0' : '') + i.toString(16);
-}
+yy.OrderExpression = function(params) {
+ return yy.extend(this, params);
+};
+yy.OrderExpression.prototype.toString = yy.Expression.prototype.toString;
-stdfn.NEWID = stdfn.UUID = stdfn.GEN_RANDOM_UUID = function() {
- var d0 = (Math.random() * 0xffffffff) | 0;
- var d1 = (Math.random() * 0xffffffff) | 0;
- var d2 = (Math.random() * 0xffffffff) | 0;
- var d3 = (Math.random() * 0xffffffff) | 0;
- return (
- lut[d0 & 0xff] +
- lut[(d0 >> 8) & 0xff] +
- lut[(d0 >> 16) & 0xff] +
- lut[(d0 >> 24) & 0xff] +
- '-' +
- lut[d1 & 0xff] +
- lut[(d1 >> 8) & 0xff] +
- '-' +
- lut[((d1 >> 16) & 0x0f) | 0x40] +
- lut[(d1 >> 24) & 0xff] +
- '-' +
- lut[(d2 & 0x3f) | 0x80] +
- lut[(d2 >> 8) & 0xff] +
- '-' +
- lut[(d2 >> 16) & 0xff] +
- lut[(d2 >> 24) & 0xff] +
- lut[d3 & 0xff] +
- lut[(d3 >> 8) & 0xff] +
- lut[(d3 >> 16) & 0xff] +
- lut[(d3 >> 24) & 0xff]
- );
+yy.GroupExpression = function(params) {
+ return yy.extend(this, params);
+};
+yy.GroupExpression.prototype.toString = function() {
+ return this.type + '(' + this.group.toString() + ')';
};
-/*
-//
-// CASE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+// Alasql Linq library
-yy.CaseValue = function(params) {
+yy.FromData = function(params) {
return yy.extend(this, params);
};
-yy.CaseValue.prototype.toString = function() {
- var s = 'CASE ';
- if (this.expression) s += this.expression.toString();
- if (this.whens) {
- s += this.whens
- .map(function(w) {
- return ' WHEN ' + w.when.toString() + ' THEN ' + w.then.toString();
- })
- .join();
- }
- s += ' END';
- return s;
+yy.FromData.prototype.toString = function() {
+ if (this.data) return 'DATA(' + ((Math.random() * 10e15) | 0) + ')';
+ else return '?';
};
+yy.FromData.prototype.toJS = function() {
-yy.CaseValue.prototype.findAggregator = function(query) {
+};
- if (this.expression && this.expression.findAggregator) this.expression.findAggregator(query);
- if (this.whens && this.whens.length > 0) {
- this.whens.forEach(function(w) {
- if (w.when.findAggregator) w.when.findAggregator(query);
- if (w.then.findAggregator) w.then.findAggregator(query);
- });
+yy.Select.prototype.exec = function(params, cb) {
+ if (this.preparams) params = this.preparams.concat(params);
+
+ var databaseid = alasql.useid;
+ db = alasql.databases[databaseid];
+ var sql = this.toString();
+ var hh = hash(sql);
+
+ var statement = this.compile(databaseid);
+ if (!statement) return;
+ statement.sql = sql;
+ statement.dbversion = db.dbversion;
+
+ // Secure sqlCache size
+ if (db.sqlCacheSize > alasql.MAXSQLCACHESIZE) {
+ db.resetSqlCache();
}
- if (this.elses && this.elses.findAggregator) this.elses.findAggregator(query);
+ db.sqlCacheSize++;
+ db.sqlCache[hh] = statement;
+ var res = (alasql.res = statement(params, cb));
+ return res;
};
-yy.CaseValue.prototype.toJS = function(context, tableid, defcols) {
- var s = '((function(' + context + ',params,alasql){var y,r;';
- if (this.expression) {
- // this.expression.toJS(context, tableid)
- s += 'v=' + this.expression.toJS(context, tableid, defcols) + ';';
- s += (this.whens || [])
- .map(function(w) {
- return (
- ' if(v==' +
- w.when.toJS(context, tableid, defcols) +
- ') {r=' +
- w.then.toJS(context, tableid, defcols) +
- '}'
- );
- })
- .join(' else ');
- if (this.elses) s += ' else {r=' + this.elses.toJS(context, tableid, defcols) + '}';
+yy.Select.prototype.Select = function() {
+ var self = this;
+ var agrs = [];
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ } else if (arguments.length == 1) {
+ if (Array.isArray(arguments[0])) {
+ args = arguments[0];
+ } else {
+ args = [arguments[0]];
+ }
} else {
- s += (this.whens || [])
- .map(function(w) {
- return (
- ' if(' +
- w.when.toJS(context, tableid, defcols) +
- ') {r=' +
- w.then.toJS(context, tableid, defcols) +
- '}'
- );
- })
- .join(' else ');
- if (this.elses) s += ' else {r=' + this.elses.toJS(context, tableid, defcols) + '}';
+ throw new Error('Wrong number of arguments of Select() function');
}
- // TODO remove bind from CASE
- s += ';return r;}).bind(this))(' + context + ',params,alasql)';
- return s;
-};
+ self.columns = [];
-/*
-//
-// JSON for Alasql.js
-// Date: 19.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ args.forEach(function(arg) {
+ if (typeof arg == 'string') {
+ self.columns.push(new yy.Column({columnid: arg}));
+ } else if (typeof arg == 'function') {
+ var pari = 0;
+ if (self.preparams) {
+ pari = self.preparams.length;
+ } else {
+ self.preparams = [];
+ }
+ self.preparams.push(arg);
+ self.columns.push(new yy.Column({columnid: '*', func: arg, param: pari}));
+ } else {
+ // Unknown type
+ }
+ });
-yy.Json = function(params) {
- return yy.extend(this, params);
-};
-yy.Json.prototype.toString = function() {
- var s = ''; // '@'
- s += JSONtoString(this.value);
- s += '';
- return s;
+ return self;
};
-var JSONtoString = (alasql.utils.JSONtoString = function(obj) {
- var s = '';
- if (typeof obj == 'string') s = '"' + obj + '"';
- else if (typeof obj == 'number') s = obj;
- else if (typeof obj == 'boolean') s = obj;
- else if (typeof obj == 'object') {
- if (Array.isArray(obj)) {
- s +=
- '[' +
- obj
- .map(function(b) {
- return JSONtoString(b);
- })
- .join(',') +
- ']';
- } else if (!obj.toJS || obj instanceof yy.Json) {
- // to prevent recursion
- s = '{';
- var ss = [];
- for (var k in obj) {
- var s1 = '';
- if (typeof k == 'string') s1 += '"' + k + '"';
- else if (typeof k == 'number') s1 += k;
- else if (typeof k == 'boolean') s1 += k;
- else {
- throw new Error('THis is not ES6... no expressions on left side yet');
- }
- s1 += ':' + JSONtoString(obj[k]);
- ss.push(s1);
- }
- s += ss.join(',') + '}';
- } else if (obj.toString) {
- s = obj.toString();
+yy.Select.prototype.From = function(tableid) {
+ var self = this;
+ if (!self.from) self.from = [];
+ if (Array.isArray(tableid)) {
+ var pari = 0;
+ if (self.preparams) {
+ pari = self.preparams.length;
} else {
- throw new Error('1Can not show JSON object ' + JSON.stringify(obj));
+ self.preparams = [];
}
+ self.preparams.push(tableid);
+ self.from.push(new yy.ParamValue({param: pari}));
+ } else if (typeof tableid == 'string') {
+ self.from.push(new yy.Table({tableid: tableid}));
} else {
- throw new Error('2Can not show JSON object ' + JSON.stringify(obj));
+ throw new Error('Unknown arguments in From() function');
}
+ return self;
+};
- return s;
-});
+yy.Select.prototype.OrderBy = function() {
+ var self = this;
+ var agrs = [];
-function JSONtoJS(obj, context, tableid, defcols) {
- var s = '';
- if (typeof obj == 'string') s = '"' + obj + '"';
- else if (typeof obj == 'number') s = '(' + obj + ')';
- else if (typeof obj == 'boolean') s = obj;
- else if (typeof obj == 'object') {
- if (Array.isArray(obj)) {
- s +=
- '[' +
- obj
- .map(function(b) {
- return JSONtoJS(b, context, tableid, defcols);
- })
- .join(',') +
- ']';
- } else if (!obj.toJS || obj instanceof yy.Json) {
- // to prevent recursion
- s = '{';
- var ss = [];
- for (var k in obj) {
- var s1 = '';
- if (typeof k == 'string') s1 += '"' + k + '"';
- else if (typeof k == 'number') s1 += k;
- else if (typeof k == 'boolean') s1 += k;
- else {
- throw new Error('THis is not ES6... no expressions on left side yet');
- }
- s1 += ':' + JSONtoJS(obj[k], context, tableid, defcols);
- ss.push(s1);
+ self.order = [];
+
+ if (arguments.length == 0) {
+ // self.order.push(new yy.OrderExpression({expression: new yy.Column({columnid:"_"}), direction:'ASC'}));
+ args = ['_'];
+ } else if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ } else if (arguments.length == 1) {
+ if (Array.isArray(arguments[0])) {
+ args = arguments[0];
+ } else {
+ args = [arguments[0]];
+ }
+ } else {
+ throw new Error('Wrong number of arguments of Select() function');
+ }
+
+ if (args.length > 0) {
+ args.forEach(function(arg) {
+ var expr = new yy.Column({columnid: arg});
+ if (typeof arg == 'function') {
+ expr = arg;
}
- s += ss.join(',') + '}';
- } else if (obj.toJS) {
- s = obj.toJS(context, tableid, defcols);
+ self.order.push(new yy.OrderExpression({expression: expr, direction: 'ASC'}));
+ });
+ }
+ return self;
+};
+
+yy.Select.prototype.Top = function(topnum) {
+ var self = this;
+ self.top = new yy.NumValue({value: topnum});
+ return self;
+};
+
+yy.Select.prototype.GroupBy = function() {
+ var self = this;
+ var agrs = [];
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ } else if (arguments.length == 1) {
+ if (Array.isArray(arguments[0])) {
+ args = arguments[0];
} else {
- throw new Error('1Can not parse JSON object ' + JSON.stringify(obj));
+ args = [arguments[0]];
}
} else {
- throw new Error('2Can not parse JSON object ' + JSON.stringify(obj));
+ throw new Error('Wrong number of arguments of Select() function');
}
- return s;
-}
+ self.group = [];
-yy.Json.prototype.toJS = function(context, tableid, defcols) {
- // TODO redo
- return JSONtoJS(this.value, context, tableid, defcols);
+ args.forEach(function(arg) {
+ var expr = new yy.Column({columnid: arg});
+ self.group.push(expr);
+ });
+
+ return self;
+};
+
+yy.Select.prototype.Where = function(expr) {
+ var self = this;
+ if (typeof expr == 'function') {
+ self.where = expr;
+ }
+ return self;
};
/*
//
-// CAST and CONVERT functions
+// Functions for Alasql.js
// Date: 03.11.2014
// (c) 2014, Andrey Gershun
//
*/
-yy.Convert = function(params) {
+yy.FuncValue = function(params) {
return yy.extend(this, params);
};
-yy.Convert.prototype.toString = function() {
- var s = 'CONVERT(';
- s += this.dbtypeid;
- if (typeof this.dbsize != 'undefined') {
- s += '(' + this.dbsize;
- if (this.dbprecision) s += ',' + this.dbprecision;
- s += ')';
+yy.FuncValue.prototype.toString = function(dontas) {
+ var s = '';
+
+ if (alasql.fn[this.funcid]) s += this.funcid;
+ else if (alasql.aggr[this.funcid]) s += this.funcid;
+ else if (alasql.stdlib[this.funcid.toUpperCase()] || alasql.stdfn[this.funcid.toUpperCase()])
+ s += this.funcid.toUpperCase();
+
+ s += '(';
+ if (this.args && this.args.length > 0) {
+ s += this.args
+ .map(function(arg) {
+ return arg.toString();
+ })
+ .join(',');
}
- s += ',' + this.expression.toString();
- if (this.style) s += ',' + this.style;
s += ')';
+ if (this.as && !dontas) s += ' AS ' + this.as.toString();
+ // if(this.alias) s += ' AS '+this.alias;
return s;
};
-yy.Convert.prototype.toJS = function(context, tableid, defcols) {
- // if(this.style) {
- return (
- 'alasql.stdfn.CONVERT(' +
- this.expression.toJS(context, tableid, defcols) +
- ',{dbtypeid:"' +
- this.dbtypeid +
- '",dbsize:' +
- this.dbsize +
- ',dbprecision:' +
- this.dbprecision +
- ',style:' +
- this.style +
- '})'
- );
- // }
- throw new Error('There is not such type conversion for ' + this.toString());
+yy.FuncValue.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ alasql.precompile(this, databaseid, params); // Precompile queries
+
+ var expr = new Function('params,alasql', 'var y;return ' + this.toJS('', '', null));
+ expr(params, alasql);
+ if (cb) res = cb(res);
+ return res;
};
-/**
- Convert one type to another
- */
-alasql.stdfn.CONVERT = function(value, args) {
- var val = value;
+yy.FuncValue.prototype.findAggregator = function(query) {
+ if (this.args && this.args.length > 0) {
+ this.args.forEach(function(arg) {
+ if (arg.findAggregator) arg.findAggregator(query);
+ });
+ }
+};
- if (args.style) {
- // TODO 9,109, 20,120,21,121,126,130,131 conversions
- var t;
- if (/\d{8}/.test(val)) {
- t = new Date(+val.substr(0, 4), +val.substr(4, 2) - 1, +val.substr(6, 2));
+yy.FuncValue.prototype.toJS = function(context, tableid, defcols) {
+ var s = '';
+ var funcid = this.funcid;
+ // IF this is standard compile functions
+ if (!alasql.fn[funcid] && alasql.stdlib[funcid.toUpperCase()]) {
+ if (this.args && this.args.length > 0) {
+ s += alasql.stdlib[funcid.toUpperCase()].apply(
+ this,
+ this.args.map(function(arg) {
+ return arg.toJS(context, tableid);
+ })
+ );
} else {
- t = new Date(val);
+ s += alasql.stdlib[funcid.toUpperCase()]();
}
- switch (args.style) {
- case 1: // mm/dd/yy
- val =
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '/' +
- ('0' + t.getDate()).substr(-2) +
- '/' +
- ('0' + t.getYear()).substr(-2);
- break;
- case 2: // yy.mm.dd
- val =
- ('0' + t.getYear()).substr(-2) +
- '.' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + t.getDate()).substr(-2);
- break;
- case 3: // dd/mm/yy
- val =
- ('0' + t.getDate()).substr(-2) +
- '/' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '/' +
- ('0' + t.getYear()).substr(-2);
+ } else if (!alasql.fn[funcid] && alasql.stdfn[funcid.toUpperCase()]) {
+ if (this.newid) s += 'new ';
+ s += 'alasql.stdfn.' + this.funcid.toUpperCase() + '(';
+ // if(this.args) s += this.args.toJS(context, tableid);
+ if (this.args && this.args.length > 0) {
+ s += this.args
+ .map(function(arg) {
+ return arg.toJS(context, tableid, defcols);
+ })
+ .join(',');
+ }
+ s += ')';
+ } else {
+ // This is user-defined run-time function
+ // TODO arguments!!!
+ // var s = '';
+ if (this.newid) s += 'new ';
+ s += 'alasql.fn.' + this.funcid + '(';
+ // if(this.args) s += this.args.toJS(context, tableid);
+ if (this.args && this.args.length > 0) {
+ s += this.args
+ .map(function(arg) {
+ return arg.toJS(context, tableid, defcols);
+ })
+ .join(',');
+ }
+ s += ')';
+ }
+
+ // if(this.alias) s += ' AS '+this.alias;
+ return s;
+};
+
+var stdlib = (alasql.stdlib = {});
+var stdfn = (alasql.stdfn = {});
+
+stdlib.ABS = function(a) {
+ return 'Math.abs(' + a + ')';
+};
+stdlib.CLONEDEEP = function(a) {
+ return 'alasql.utils.cloneDeep(' + a + ')';
+};
+
+stdfn.CONCAT = function() {
+ return Array.prototype.slice.call(arguments).join('');
+};
+stdlib.EXP = function(a) {
+ return 'Math.pow(Math.E,' + a + ')';
+};
+
+stdlib.IIF = function(a, b, c) {
+ if (arguments.length == 3) {
+ return '((' + a + ')?(' + b + '):(' + c + '))';
+ } else {
+ throw new Error('Number of arguments of IFF is not equals to 3');
+ }
+};
+stdlib.IFNULL = function(a, b) {
+ return '(' + a + '||' + b + ')';
+};
+stdlib.INSTR = function(s, p) {
+ return '((' + s + ').indexOf(' + p + ')+1)';
+};
+
+//stdlib.LEN = stdlib.LENGTH = function(s) {return '('+s+'+"").length';};
+
+stdlib.LEN = stdlib.LENGTH = function(s) {
+ return und(s, 'y.length');
+};
+//stdlib.LENGTH = function(s) {return '('+s+').length'};
+
+stdlib.LOWER = stdlib.LCASE = function(s) {
+ return und(s, 'String(y).toLowerCase()');
+};
+//stdlib.LCASE = function(s) {return '('+s+').toLowerCase()';}
+
+// Returns a character expression after it removes leading blanks.
+// see https://docs.microsoft.com/en-us/sql/t-sql/functions/ltrim-transact-sql
+stdlib.LTRIM = function(s) {
+ return und(s, 'y.replace(/^[ ]+/,"")');
+};
+
+// Returns a character string after truncating all trailing spaces.
+// see https://docs.microsoft.com/en-us/sql/t-sql/functions/rtrim-transact-sql
+stdlib.RTRIM = function(s) {
+ return und(s, 'y.replace(/[ ]+$/,"")');
+};
+
+stdlib.MAX = stdlib.GREATEST = function() {
+ return 'Math.max(' + Array.prototype.join.call(arguments, ',') + ')';
+};
+
+stdlib.MIN = stdlib.LEAST = function() {
+ return 'Math.min(' + Array.prototype.join.call(arguments, ',') + ')';
+};
+
+stdlib.SUBSTRING = stdlib.SUBSTR = stdlib.MID = function(a, b, c) {
+ if (arguments.length == 2) return und(a, 'y.substr(' + b + '-1)');
+ else if (arguments.length == 3) return und(a, 'y.substr(' + b + '-1,' + c + ')');
+};
+
+stdfn.REGEXP_LIKE = function(a, b, c) {
+
+ return (a || '').search(RegExp(b, c)) > -1;
+};
+
+// Here we uses undefined instead of null
+stdlib.ISNULL = stdlib.NULLIF = function(a, b) {
+ return '(' + a + '==' + b + '?undefined:' + a + ')';
+};
+
+stdlib.POWER = function(a, b) {
+ return 'Math.pow(' + a + ',' + b + ')';
+};
+
+stdlib.RANDOM = function(r) {
+ if (arguments.length == 0) {
+ return 'Math.random()';
+ } else {
+ return '(Math.random()*(' + r + ')|0)';
+ }
+};
+stdlib.ROUND = function(s, d) {
+ if (arguments.length == 2) {
+ return 'Math.round((' + s + ')*Math.pow(10,(' + d + ')))/Math.pow(10,(' + d + '))';
+ } else {
+ return 'Math.round(' + s + ')';
+ }
+};
+stdlib.CEIL = stdlib.CEILING = function(s) {
+ return 'Math.ceil(' + s + ')';
+};
+stdlib.FLOOR = function(s) {
+ return 'Math.floor(' + s + ')';
+};
+
+stdlib.ROWNUM = function() {
+ return '1';
+};
+stdlib.ROW_NUMBER = function() {
+ return '1';
+};
+
+stdlib.SQRT = function(s) {
+ return 'Math.sqrt(' + s + ')';
+};
+
+stdlib.TRIM = function(s) {
+ return und(s, 'y.trim()');
+};
+
+stdlib.UPPER = stdlib.UCASE = function(s) {
+ return und(s, 'String(y).toUpperCase()');
+};
+
+// Concatination of strings
+stdfn.CONCAT_WS = function() {
+ var args = Array.prototype.slice.call(arguments);
+ return args.slice(1, args.length).join(args[0]);
+};
+
+//stdlib.UCASE = function(s) {return '('+s+').toUpperCase()';}
+//REPLACE
+// RTRIM
+// SUBSTR
+// TRIM
+//REPLACE
+// RTRIM
+// SUBSTR
+// TRIM
+
+// Aggregator for joining strings
+alasql.aggr.GROUP_CONCAT = function(v, s, stage) {
+ if (stage === 1) {
+ return '' + v;
+ } else if (stage === 2) {
+ s += ',' + v;
+ return s;
+ }
+ return s;
+};
+
+alasql.aggr.MEDIAN = function(v, s, stage) {
+ if (stage === 2) {
+ if (v !== null) {
+ s.push(v);
+ }
+ return s;
+ } else if (stage === 1) {
+ if (v === null) {
+ return [];
+ }
+ return [v];
+ } else {
+ if (!s.length) {
+ return s;
+ }
+
+ var r = s.sort();
+ var p = (r.length + 1) / 2;
+ if (Number.isInteger(p)) {
+ return r[p - 1];
+ }
+
+ return (r[Math.floor(p - 1)] + r[Math.ceil(p - 1)]) / 2;
+ }
+};
+
+alasql.aggr.QUART = function(v, s, stage, nth) {
+ //Quartile (first quartile per default or input param)
+ if (stage === 2) {
+ if (v !== null) {
+ s.push(v);
+ }
+ return s;
+ } else if (stage === 1) {
+ if (v === null) {
+ return [];
+ }
+ return [v];
+ } else {
+ if (!s.length) {
+ return s;
+ }
+
+ nth = !nth ? 1 : nth;
+ var r = s.sort();
+ var p = nth * (r.length + 1) / 4;
+ if (Number.isInteger(p)) {
+ return r[p - 1]; //Integer value
+ }
+ return r[Math.floor(p)]; //Math.ceil -1 or Math.floor
+ }
+};
+
+alasql.aggr.QUART2 = function(v, s, stage) {
+ //Second Quartile
+ return alasql.aggr.QUART(v, s, stage, 2);
+};
+alasql.aggr.QUART3 = function(v, s, stage) {
+ //Third Quartile
+ return alasql.aggr.QUART(v, s, stage, 3);
+};
+
+// Standard deviation
+alasql.aggr.VAR = function(v, s, stage) {
+ if (stage === 1) {
+ if (v === null) {
+ return {arr: [], sum: 0};
+ }
+ return {arr: [v], sum: v};
+ } else if (stage === 2) {
+ if (v === null) {
+ return s;
+ }
+ s.arr.push(v);
+ s.sum += v;
+ return s;
+ } else {
+ var N = s.arr.length;
+ var avg = s.sum / N;
+ var std = 0;
+ for (var i = 0; i < N; i++) {
+ std += (s.arr[i] - avg) * (s.arr[i] - avg);
+ }
+ std = std / (N - 1);
+ return std;
+ }
+};
+
+alasql.aggr.STDEV = function(v, s, stage) {
+ if (stage === 1 || stage === 2) {
+ return alasql.aggr.VAR(v, s, stage);
+ } else {
+ return Math.sqrt(alasql.aggr.VAR(v, s, stage));
+ }
+};
+
+// Standard deviation
+// alasql.aggr.VARP = function(v,s,acc){
+
+// };
+
+alasql.aggr.VARP = function(v, s, stage) {
+ if (stage == 1) {
+ return {arr: [v], sum: v};
+ } else if (stage == 2) {
+ s.arr.push(v);
+ s.sum += v;
+ return s;
+ } else {
+ var N = s.arr.length;
+ var avg = s.sum / N;
+ var std = 0;
+ for (var i = 0; i < N; i++) {
+ std += (s.arr[i] - avg) * (s.arr[i] - avg);
+ }
+ std = std / N;
+ return std;
+ }
+};
+
+alasql.aggr.STD = alasql.aggr.STDDEV = alasql.aggr.STDEVP = function(v, s, stage) {
+ if (stage == 1 || stage == 2) {
+ return alasql.aggr.VARP(v, s, stage);
+ } else {
+ return Math.sqrt(alasql.aggr.VARP(v, s, stage));
+ }
+};
+
+alasql._aggrOriginal = alasql.aggr;
+alasql.aggr = {};
+Object.keys(alasql._aggrOriginal).forEach(function(k) {
+ alasql.aggr[k] = function(v, s, stage) {
+ if (stage === 3 && typeof s === 'undefined') return undefined;
+ return alasql._aggrOriginal[k].apply(null, arguments);
+ };
+});
+
+// String functions
+stdfn.REPLACE = function(target, pattern, replacement) {
+ return (target || '').split(pattern).join(replacement);
+};
+
+// This array is required for fast GUID generation
+var lut = [];
+for (var i = 0; i < 256; i++) {
+ lut[i] = (i < 16 ? '0' : '') + i.toString(16);
+}
+
+stdfn.NEWID = stdfn.UUID = stdfn.GEN_RANDOM_UUID = function() {
+ var d0 = (Math.random() * 0xffffffff) | 0;
+ var d1 = (Math.random() * 0xffffffff) | 0;
+ var d2 = (Math.random() * 0xffffffff) | 0;
+ var d3 = (Math.random() * 0xffffffff) | 0;
+ return (
+ lut[d0 & 0xff] +
+ lut[(d0 >> 8) & 0xff] +
+ lut[(d0 >> 16) & 0xff] +
+ lut[(d0 >> 24) & 0xff] +
+ '-' +
+ lut[d1 & 0xff] +
+ lut[(d1 >> 8) & 0xff] +
+ '-' +
+ lut[((d1 >> 16) & 0x0f) | 0x40] +
+ lut[(d1 >> 24) & 0xff] +
+ '-' +
+ lut[(d2 & 0x3f) | 0x80] +
+ lut[(d2 >> 8) & 0xff] +
+ '-' +
+ lut[(d2 >> 16) & 0xff] +
+ lut[(d2 >> 24) & 0xff] +
+ lut[d3 & 0xff] +
+ lut[(d3 >> 8) & 0xff] +
+ lut[(d3 >> 16) & 0xff] +
+ lut[(d3 >> 24) & 0xff]
+ );
+};
+
+/*
+//
+// CASE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.CaseValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.CaseValue.prototype.toString = function() {
+ var s = 'CASE ';
+ if (this.expression) s += this.expression.toString();
+ if (this.whens) {
+ s += this.whens
+ .map(function(w) {
+ return ' WHEN ' + w.when.toString() + ' THEN ' + w.then.toString();
+ })
+ .join();
+ }
+ s += ' END';
+ return s;
+};
+
+yy.CaseValue.prototype.findAggregator = function(query) {
+
+ if (this.expression && this.expression.findAggregator) this.expression.findAggregator(query);
+ if (this.whens && this.whens.length > 0) {
+ this.whens.forEach(function(w) {
+ if (w.when.findAggregator) w.when.findAggregator(query);
+ if (w.then.findAggregator) w.then.findAggregator(query);
+ });
+ }
+ if (this.elses && this.elses.findAggregator) this.elses.findAggregator(query);
+};
+
+yy.CaseValue.prototype.toJS = function(context, tableid, defcols) {
+ var s = '((function(' + context + ',params,alasql){var y,r;';
+ if (this.expression) {
+ // this.expression.toJS(context, tableid)
+ s += 'v=' + this.expression.toJS(context, tableid, defcols) + ';';
+ s += (this.whens || [])
+ .map(function(w) {
+ return (
+ ' if(v==' +
+ w.when.toJS(context, tableid, defcols) +
+ ') {r=' +
+ w.then.toJS(context, tableid, defcols) +
+ '}'
+ );
+ })
+ .join(' else ');
+ if (this.elses) s += ' else {r=' + this.elses.toJS(context, tableid, defcols) + '}';
+ } else {
+ s += (this.whens || [])
+ .map(function(w) {
+ return (
+ ' if(' +
+ w.when.toJS(context, tableid, defcols) +
+ ') {r=' +
+ w.then.toJS(context, tableid, defcols) +
+ '}'
+ );
+ })
+ .join(' else ');
+ if (this.elses) s += ' else {r=' + this.elses.toJS(context, tableid, defcols) + '}';
+ }
+ // TODO remove bind from CASE
+ s += ';return r;}).bind(this))(' + context + ',params,alasql)';
+
+ return s;
+};
+
+/*
+//
+// JSON for Alasql.js
+// Date: 19.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Json = function(params) {
+ return yy.extend(this, params);
+};
+yy.Json.prototype.toString = function() {
+ var s = ''; // '@'
+ s += JSONtoString(this.value);
+ s += '';
+ return s;
+};
+
+var JSONtoString = (alasql.utils.JSONtoString = function(obj) {
+ var s = '';
+ if (typeof obj == 'string') s = '"' + obj + '"';
+ else if (typeof obj == 'number') s = obj;
+ else if (typeof obj == 'boolean') s = obj;
+ else if (typeof obj == 'object') {
+ if (Array.isArray(obj)) {
+ s +=
+ '[' +
+ obj
+ .map(function(b) {
+ return JSONtoString(b);
+ })
+ .join(',') +
+ ']';
+ } else if (!obj.toJS || obj instanceof yy.Json) {
+ // to prevent recursion
+ s = '{';
+ var ss = [];
+ for (var k in obj) {
+ var s1 = '';
+ if (typeof k == 'string') s1 += '"' + k + '"';
+ else if (typeof k == 'number') s1 += k;
+ else if (typeof k == 'boolean') s1 += k;
+ else {
+ throw new Error('THis is not ES6... no expressions on left side yet');
+ }
+ s1 += ':' + JSONtoString(obj[k]);
+ ss.push(s1);
+ }
+ s += ss.join(',') + '}';
+ } else if (obj.toString) {
+ s = obj.toString();
+ } else {
+ throw new Error('1Can not show JSON object ' + JSON.stringify(obj));
+ }
+ } else {
+ throw new Error('2Can not show JSON object ' + JSON.stringify(obj));
+ }
+
+ return s;
+});
+
+function JSONtoJS(obj, context, tableid, defcols) {
+ var s = '';
+ if (typeof obj == 'string') s = '"' + obj + '"';
+ else if (typeof obj == 'number') s = '(' + obj + ')';
+ else if (typeof obj == 'boolean') s = obj;
+ else if (typeof obj == 'object') {
+ if (Array.isArray(obj)) {
+ s +=
+ '[' +
+ obj
+ .map(function(b) {
+ return JSONtoJS(b, context, tableid, defcols);
+ })
+ .join(',') +
+ ']';
+ } else if (!obj.toJS || obj instanceof yy.Json) {
+ // to prevent recursion
+ s = '{';
+ var ss = [];
+ for (var k in obj) {
+ var s1 = '';
+ if (typeof k == 'string') s1 += '"' + k + '"';
+ else if (typeof k == 'number') s1 += k;
+ else if (typeof k == 'boolean') s1 += k;
+ else {
+ throw new Error('THis is not ES6... no expressions on left side yet');
+ }
+ s1 += ':' + JSONtoJS(obj[k], context, tableid, defcols);
+ ss.push(s1);
+ }
+ s += ss.join(',') + '}';
+ } else if (obj.toJS) {
+ s = obj.toJS(context, tableid, defcols);
+ } else {
+ throw new Error('1Can not parse JSON object ' + JSON.stringify(obj));
+ }
+ } else {
+ throw new Error('2Can not parse JSON object ' + JSON.stringify(obj));
+ }
+
+ return s;
+}
+
+yy.Json.prototype.toJS = function(context, tableid, defcols) {
+ // TODO redo
+ return JSONtoJS(this.value, context, tableid, defcols);
+};
+
+/*
+//
+// CAST and CONVERT functions
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Convert = function(params) {
+ return yy.extend(this, params);
+};
+yy.Convert.prototype.toString = function() {
+ var s = 'CONVERT(';
+ s += this.dbtypeid;
+ if (typeof this.dbsize != 'undefined') {
+ s += '(' + this.dbsize;
+ if (this.dbprecision) s += ',' + this.dbprecision;
+ s += ')';
+ }
+ s += ',' + this.expression.toString();
+ if (this.style) s += ',' + this.style;
+ s += ')';
+ return s;
+};
+yy.Convert.prototype.toJS = function(context, tableid, defcols) {
+ // if(this.style) {
+ return (
+ 'alasql.stdfn.CONVERT(' +
+ this.expression.toJS(context, tableid, defcols) +
+ ',{dbtypeid:"' +
+ this.dbtypeid +
+ '",dbsize:' +
+ this.dbsize +
+ ',dbprecision:' +
+ this.dbprecision +
+ ',style:' +
+ this.style +
+ '})'
+ );
+ // }
+
+ throw new Error('There is not such type conversion for ' + this.toString());
+};
+
+/**
+ Convert one type to another
+ */
+alasql.stdfn.CONVERT = function(value, args) {
+ var val = value;
+
+ if (args.style) {
+ // TODO 9,109, 20,120,21,121,126,130,131 conversions
+ var t;
+ if (/\d{8}/.test(val)) {
+ t = new Date(+val.substr(0, 4), +val.substr(4, 2) - 1, +val.substr(6, 2));
+ } else {
+ t = new Date(val);
+ }
+ switch (args.style) {
+ case 1: // mm/dd/yy
+ val =
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '/' +
+ ('0' + t.getDate()).substr(-2) +
+ '/' +
+ ('0' + t.getYear()).substr(-2);
+ break;
+ case 2: // yy.mm.dd
+ val =
+ ('0' + t.getYear()).substr(-2) +
+ '.' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + t.getDate()).substr(-2);
+ break;
+ case 3: // dd/mm/yy
+ val =
+ ('0' + t.getDate()).substr(-2) +
+ '/' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '/' +
+ ('0' + t.getYear()).substr(-2);
break;
case 4: // dd.mm.yy
val =
@@ -12540,7207 +12540,7207 @@ alasql.stdfn.CONVERT = function(value, args) {
('0' + t.getDate()).substr(-2);
break;
- case 112: // yyyymmdd
- val =
- t.getFullYear() +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- ('0' + t.getDate()).substr(-2);
- break;
- default:
- throw new Error('The CONVERT style ' + args.style + ' is not realized yet.');
+ case 112: // yyyymmdd
+ val =
+ t.getFullYear() +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ ('0' + t.getDate()).substr(-2);
+ break;
+ default:
+ throw new Error('The CONVERT style ' + args.style + ' is not realized yet.');
+ }
+ }
+
+ var udbtypeid = args.dbtypeid.toUpperCase();
+
+ if (args.dbtypeid == 'Date') {
+ return new Date(val);
+ } else if (udbtypeid == 'DATE') {
+ var d = new Date(val);
+ var s =
+ d.getFullYear() +
+ '.' +
+ ('0' + (d.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + d.getDate()).substr(-2);
+ return s;
+ } else if (udbtypeid == 'DATETIME' || udbtypeid == 'DATETIME2') {
+ var d = new Date(val);
+ var s =
+ d.getFullYear() +
+ '.' +
+ ('0' + (d.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + d.getDate()).substr(-2);
+ s +=
+ ' ' +
+ ('0' + d.getHours()).substr(-2) +
+ ':' +
+ ('0' + d.getMinutes()).substr(-2) +
+ ':' +
+ ('0' + d.getSeconds()).substr(-2);
+ s += '.' + ('00' + d.getMilliseconds()).substr(-3);
+ return s;
+ } else if (['MONEY'].indexOf(udbtypeid) > -1) {
+ var m = +val;
+ return (m | 0) + ((m * 100) % 100) / 100;
+ } else if (['BOOLEAN'].indexOf(udbtypeid) > -1) {
+ return !!val;
+ } else if (
+ ['INT', 'INTEGER', 'SMALLINT', 'BIGINT', 'SERIAL', 'SMALLSERIAL', 'BIGSERIAL'].indexOf(
+ args.dbtypeid.toUpperCase()
+ ) > -1
+ ) {
+ return val | 0;
+ } else if (
+ ['STRING', 'VARCHAR', 'NVARCHAR', 'CHARACTER VARIABLE'].indexOf(
+ args.dbtypeid.toUpperCase()
+ ) > -1
+ ) {
+ if (args.dbsize) return ('' + val).substr(0, args.dbsize);
+ else return '' + val;
+ } else if (['CHAR', 'CHARACTER', 'NCHAR'].indexOf(udbtypeid) > -1) {
+ return (val + new Array(args.dbsize + 1).join(' ')).substr(0, args.dbsize);
+ //else return ""+val.substr(0,1);
+ } else if (['NUMBER', 'FLOAT', 'DECIMAL', 'NUMERIC'].indexOf(udbtypeid) > -1) {
+ var m = +val;
+ //toPrecision sets the number of numbers total in the result
+ m = args.dbsize !== undefined ? parseFloat(m.toPrecision(args.dbsize)) : m;
+ //toFixed sets the number of numbers to the right of the decimal
+ m = args.dbprecision !== undefined ? parseFloat(m.toFixed(args.dbprecision)) : m;
+ return m;
+ } else if (['JSON'].indexOf(udbtypeid) > -1) {
+ if (typeof val == 'object') return val;
+ try {
+ return JSON.parse(val);
+ } catch (err) {
+ throw new Error('Cannot convert string to JSON');
+ }
+ }
+ return val;
+};
+
+/*
+//
+// CREATE TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* global alasql, yy, hash */
+
+yy.ColumnDef = function(params) {
+ return yy.extend(this, params);
+};
+yy.ColumnDef.prototype.toString = function() {
+ var s = this.columnid;
+ if (this.dbtypeid) {
+ s += ' ' + this.dbtypeid;
+ }
+
+ if (this.dbsize) {
+ s += '(' + this.dbsize;
+ if (this.dbprecision) {
+ s += ',' + this.dbprecision;
+ }
+ s += ')';
+ }
+
+ if (this.primarykey) {
+ s += ' PRIMARY KEY';
+ }
+
+ if (this.notnull) {
+ s += ' NOT NULL';
+ }
+
+ return s;
+};
+
+yy.CreateTable = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateTable.prototype.toString = function() {
+ var s = 'CREATE';
+ if (this.temporary) {
+ s += ' TEMPORARY';
+ }
+
+ if (this.view) {
+ s += ' VIEW';
+ } else {
+ s += ' ' + (this.class ? 'CLASS' : 'TABLE');
+ }
+ if (this.ifnotexists) {
+ s += ' IF NOT EXISTS';
+ }
+ s += ' ' + this.table.toString();
+ if (this.viewcolumns) {
+ s +=
+ '(' +
+ this.viewcolumns
+ .map(function(vcol) {
+ return vcol.toString();
+ })
+ .join(',') +
+ ')';
+ }
+ if (this.as) {
+ s += ' AS ' + this.as;
+ } else {
+ var ss = this.columns.map(function(col) {
+ return col.toString();
+ });
+ s += ' (' + ss.join(',') + ')';
+ }
+
+ if (this.view && this.select) {
+ s += ' AS ' + this.select.toString();
+ }
+
+ return s;
+};
+
+// CREATE TABLE
+//yy.CreateTable.prototype.compile = returnUndefined;
+yy.CreateTable.prototype.execute = function(databaseid, params, cb) {
+ // var self = this;
+ var db = alasql.databases[this.table.databaseid || databaseid];
+
+ var tableid = this.table.tableid;
+ if (!tableid) {
+ throw new Error('Table name is not defined');
+ }
+
+ // var ifnotexists = this.ifnotexists;
+ var columns = this.columns;
+ // if(false) {
+ // if(!columns) {
+ // throw new Error('Columns are not defined');
+ // }
+ // }
+ var constraints = this.constraints || [];
+
+ // IF NOT EXISTS
+ if (this.ifnotexists && db.tables[tableid]) {
+ return cb ? cb(0) : 0;
+ }
+
+ if (db.tables[tableid]) {
+ throw new Error(
+ "Can not create table '" +
+ tableid +
+ "', because it already exists in the database '" +
+ db.databaseid +
+ "'"
+ );
+ }
+
+ var table = (db.tables[tableid] = new alasql.Table()); // TODO Can use special object?
+ // If this is a class
+ if (this.class) {
+ table.isclass = true;
+ }
+
+ var ss = []; // DEFAULT function components
+ var uss = []; // ON UPDATE function components
+ if (columns) {
+ columns.forEach(function(col) {
+ var dbtypeid = col.dbtypeid;
+ if (!alasql.fn[dbtypeid]) {
+ dbtypeid = dbtypeid.toUpperCase();
+ }
+
+ // Process SERIAL data type like Postgress
+ if (['SERIAL', 'SMALLSERIAL', 'BIGSERIAL'].indexOf(dbtypeid) > -1) {
+ col.identity = {value: 1, step: 1};
+ }
+
+ var newcol = {
+ columnid: col.columnid,
+ dbtypeid: dbtypeid,
+ dbsize: col.dbsize, // Fixed issue #150
+ dbprecision: col.dbprecision, // Fixed issue #150
+ notnull: col.notnull,
+ identity: col.identity,
+ };
+ if (col.identity) {
+ table.identities[col.columnid] = {
+ value: +col.identity.value,
+ step: +col.identity.step,
+ };
+ // ss.push('\''+col.columnid+'\':(alasql.databases[\''+db.databaseid+'\'].tables[\''
+ // +tableid+'\'].identities[\''+col.columnid+'\'].value)');
+ }
+ if (col.check) {
+ table.checks.push({
+ id: col.check.constrantid,
+ fn: new Function('r', 'var y;return ' + col.check.expression.toJS('r', '')),
+ });
+ }
+
+ if (col.default) {
+ ss.push("'" + col.columnid + "':" + col.default.toJS('r', ''));
+ }
+
+ // Check for primary key
+ if (col.primarykey) {
+ var pk = (table.pk = {});
+ pk.columns = [col.columnid];
+ pk.onrightfns = "r['" + col.columnid + "']";
+ pk.onrightfn = new Function('r', 'var y;return ' + pk.onrightfns);
+ pk.hh = hash(pk.onrightfns);
+ table.uniqs[pk.hh] = {};
+ }
+
+ // UNIQUE clause
+ if (col.unique) {
+ var uk = {};
+ table.uk = table.uk || [];
+ table.uk.push(uk);
+ uk.columns = [col.columnid];
+ uk.onrightfns = "r['" + col.columnid + "']";
+ uk.onrightfn = new Function('r', 'var y;return ' + uk.onrightfns);
+ uk.hh = hash(uk.onrightfns);
+ table.uniqs[uk.hh] = {};
+ }
+
+ // UNIQUE clause
+ if (col.foreignkey) {
+
+ var fk = col.foreignkey.table;
+ var fktable = alasql.databases[fk.databaseid || databaseid].tables[fk.tableid];
+ if (typeof fk.columnid === 'undefined') {
+ if (fktable.pk.columns && fktable.pk.columns.length > 0) {
+ fk.columnid = fktable.pk.columns[0];
+ } else {
+ throw new Error('FOREIGN KEY allowed only to tables with PRIMARY KEYs');
+ }
+ }
+
+ var fkfn = function(r) {
+ var rr = {};
+ if (typeof r[col.columnid] === 'undefined') {
+ return true;
+ }
+ rr[fk.columnid] = r[col.columnid];
+ var addr = fktable.pk.onrightfn(rr);
+
+ if (!fktable.uniqs[fktable.pk.hh][addr]) {
+ throw new Error(
+ 'Foreign key "' +
+ r[col.columnid] +
+ '" is not found in table ' +
+ fktable.tableid
+ );
+ }
+ return true;
+ };
+ table.checks.push({fn: fkfn});
+
+ }
+
+ if (col.onupdate) {
+ uss.push("r['" + col.columnid + "']=" + col.onupdate.toJS('r', ''));
+ }
+
+ table.columns.push(newcol);
+ table.xcolumns[newcol.columnid] = newcol;
+ });
+ }
+ table.defaultfns = ss.join(',');
+ table.onupdatefns = uss.join(';');
+
+ // if(constraints) {
+ constraints.forEach(function(con) {
+
+ var checkfn;
+
+ if (con.type === 'PRIMARY KEY') {
+ if (table.pk) {
+ throw new Error('Primary key already exists');
+ }
+ var pk = (table.pk = {});
+ pk.columns = con.columns;
+ pk.onrightfns = pk.columns
+ .map(function(columnid) {
+ return "r['" + columnid + "']";
+ })
+ .join("+'`'+");
+ pk.onrightfn = new Function('r', 'var y;return ' + pk.onrightfns);
+ pk.hh = hash(pk.onrightfns);
+ table.uniqs[pk.hh] = {};
+ } else if (con.type === 'CHECK') {
+
+ checkfn = new Function('r', 'var y;return ' + con.expression.toJS('r', ''));
+ } else if (con.type === 'UNIQUE') {
+
+ var uk = {};
+ table.uk = table.uk || [];
+ table.uk.push(uk);
+ uk.columns = con.columns;
+ uk.onrightfns = uk.columns
+ .map(function(columnid) {
+ return "r['" + columnid + "']";
+ })
+ .join("+'`'+");
+ uk.onrightfn = new Function('r', 'var y;return ' + uk.onrightfns);
+ uk.hh = hash(uk.onrightfns);
+ table.uniqs[uk.hh] = {};
+ } else if (con.type === 'FOREIGN KEY') {
+
+ var col = table.xcolumns[con.columns[0]];
+ var fk = con.fktable;
+ if (con.fkcolumns && con.fkcolumns.length > 0) {
+ fk.columnid = con.fkcolumns[0];
+ }
+ var fktable = alasql.databases[fk.databaseid || databaseid].tables[fk.tableid];
+ if (typeof fk.columnid === 'undefined') {
+ fk.columnid = fktable.pk.columns[0];
+ }
+
+ checkfn = function(r) {
+ var rr = {};
+ if (typeof r[col.columnid] === 'undefined') {
+ return true;
+ }
+ rr[fk.columnid] = r[col.columnid];
+ var addr = fktable.pk.onrightfn(rr);
+
+ if (!fktable.uniqs[fktable.pk.hh][addr]) {
+
+ throw new Error(
+ 'Foreign key "' +
+ r[col.columnid] +
+ '" is not found in table ' +
+ fktable.tableid
+ );
+ }
+ return true;
+ };
+ }
+ if (checkfn) {
+ table.checks.push({fn: checkfn, id: con.constraintid, fk: con.type === 'FOREIGN KEY'});
+ }
+ });
+
+ if (this.view && this.viewcolumns) {
+ var self = this;
+ this.viewcolumns.forEach(function(vcol, idx) {
+ self.select.columns[idx].as = vcol.columnid;
+ });
+ }
+
+ //Used in 420from queryfn when table.view = true!
+ if (this.view && this.select) {
+ table.view = true;
+
+ table.select = this.select.compile(this.table.databaseid || databaseid);
+ }
+
+ if (db.engineid) {
+
+ return alasql.engines[db.engineid].createTable(
+ this.table.databaseid || databaseid,
+ tableid,
+ this.ifnotexists,
+ cb
+ );
+
+ // return res1;
+ }
+
+ // }
+ // if(table.pk) {
+
+ table.insert = function(r, orreplace) {
+ var oldinserted = alasql.inserted;
+ alasql.inserted = [r];
+
+ var table = this;
+
+ var toreplace = false; // For INSERT OR REPLACE
+
+ /*
+ // IDENTINY or AUTO_INCREMENT
+ // if(table.identities && table.identities.length>0) {
+ // table.identities.forEach(function(ident){
+ // r[ident.columnid] = ident.value;
+ // });
+ // }
+*/
+ // Trigger prevent functionality
+ var prevent = false;
+ for (var tr in table.beforeinsert) {
+ var trigger = table.beforeinsert[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ if (alasql.fn[trigger.funcid](r) === false) prevent = prevent || true;
+ } else if (trigger.statement) {
+ if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
+ }
+ }
+ }
+ if (prevent) return;
+
+ // Trigger prevent functionality
+ var escape = false;
+ for (tr in table.insteadofinsert) {
+ escape = true;
+ trigger = table.insteadofinsert[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ if (escape) return;
+
+ for (var columnid in table.identities) {
+ var ident = table.identities[columnid];
+
+ r[columnid] = ident.value;
+
+ }
+
+ if (table.checks && table.checks.length > 0) {
+ table.checks.forEach(function(check) {
+ if (!check.fn(r)) {
+ // if(orreplace) toreplace=true; else
+ throw new Error('Violation of CHECK constraint ' + (check.id || ''));
+ }
+ });
+ }
+
+ table.columns.forEach(function(column) {
+ if (column.notnull && typeof r[column.columnid] === 'undefined') {
+ throw new Error('Wrong NULL value in NOT NULL column ' + column.columnid);
+ }
+ });
+ if (table.pk) {
+ var pk = table.pk;
+ var addr = pk.onrightfn(r);
+
+ if (typeof table.uniqs[pk.hh][addr] !== 'undefined') {
+
+ if (orreplace) toreplace = table.uniqs[pk.hh][addr];
+ else
+ throw new Error(
+ 'Cannot insert record, because it already exists in primary key index'
+ );
+ }
+ // table.uniqs[pk.hh][addr]=r;
+ }
+
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ var ukaddr = uk.onrightfn(r);
+ if (typeof table.uniqs[uk.hh][ukaddr] !== 'undefined') {
+ if (orreplace) toreplace = table.uniqs[uk.hh][ukaddr];
+ else
+ throw new Error(
+ 'Cannot insert record, because it already exists in unique index'
+ );
+ }
+ // table.uniqs[uk.hh][ukaddr]=r;
+ });
+ }
+
+ if (toreplace) {
+ // Do UPDATE!!!
+
+ table.update(
+ function(t) {
+ for (var f in r) t[f] = r[f];
+ },
+ table.data.indexOf(toreplace),
+ params
+ );
+ } else {
+ table.data.push(r);
+
+ // Final change before insert
+
+ // Update indices
+
+ for (var columnid in table.identities) {
+ var ident = table.identities[columnid];
+
+ ident.value += ident.step;
+
+ }
+
+ if (table.pk) {
+ var pk = table.pk;
+ var addr = pk.onrightfn(r);
+ table.uniqs[pk.hh][addr] = r;
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ var ukaddr = uk.onrightfn(r);
+ table.uniqs[uk.hh][ukaddr] = r;
+ });
+ }
+ }
+
+ // Trigger prevent functionality
+ for (var tr in table.afterinsert) {
+ var trigger = table.afterinsert[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ alasql.inserted = oldinserted;
+ };
+
+ table.delete = function(index) {
+ var table = this;
+ var r = table.data[index];
+
+ // Prevent trigger
+ var prevent = false;
+ for (var tr in table.beforedelete) {
+ var trigger = table.beforedelete[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ if (alasql.fn[trigger.funcid](r) === false) prevent = prevent || true;
+ } else if (trigger.statement) {
+ if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
+ }
+ }
+ }
+ if (prevent) return false;
+
+ // Trigger prevent functionality
+ var escape = false;
+ for (var tr in table.insteadofdelete) {
+ escape = true;
+ var trigger = table.insteadofdelete[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ if (escape) return;
+
+ if (this.pk) {
+ var pk = this.pk;
+ var addr = pk.onrightfn(r);
+ if (typeof this.uniqs[pk.hh][addr] === 'undefined') {
+ throw new Error('Something wrong with primary key index on table');
+ } else {
+ this.uniqs[pk.hh][addr] = undefined;
+ }
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ var ukaddr = uk.onrightfn(r);
+ if (typeof table.uniqs[uk.hh][ukaddr] === 'undefined') {
+ throw new Error('Something wrong with unique index on table');
+ }
+ table.uniqs[uk.hh][ukaddr] = undefined;
+ });
+ }
+ };
+
+ table.deleteall = function() {
+ this.data.length = 0;
+ if (this.pk) {
+ // var r = this.data[i];
+ this.uniqs[this.pk.hh] = {};
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ table.uniqs[uk.hh] = {};
+ });
+ }
+ };
+
+ table.update = function(assignfn, i, params) {
+ // TODO: Analyze the speed
+ var r = cloneDeep(this.data[i]);
+
+ var pk;
+ // PART 1 - PRECHECK
+ if (this.pk) {
+ pk = this.pk;
+ pk.pkaddr = pk.onrightfn(r, params);
+ if (typeof this.uniqs[pk.hh][pk.pkaddr] === 'undefined') {
+ throw new Error('Something wrong with index on table');
+ }
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ uk.ukaddr = uk.onrightfn(r);
+ if (typeof table.uniqs[uk.hh][uk.ukaddr] === 'undefined') {
+ throw new Error('Something wrong with unique index on table');
+ }
+ });
+ }
+
+ assignfn(r, params, alasql);
+
+ // Prevent trigger
+ var prevent = false;
+ for (var tr in table.beforeupdate) {
+ var trigger = table.beforeupdate[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ if (alasql.fn[trigger.funcid](this.data[i], r) === false)
+ prevent = prevent || true;
+ } else if (trigger.statement) {
+ if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
+ }
+ }
+ }
+ if (prevent) return false;
+
+ // Trigger prevent functionality
+ var escape = false;
+ for (var tr in table.insteadofupdate) {
+ escape = true;
+ var trigger = table.insteadofupdate[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](this.data[i], r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ if (escape) return;
+
+ // PART 2 - POST CHECK
+ if (table.checks && table.checks.length > 0) {
+ table.checks.forEach(function(check) {
+ if (!check.fn(r)) {
+ throw new Error('Violation of CHECK constraint ' + (check.id || ''));
+ }
+ });
+ }
+
+ table.columns.forEach(function(column) {
+ if (column.notnull && typeof r[column.columnid] === 'undefined') {
+ throw new Error('Wrong NULL value in NOT NULL column ' + column.columnid);
+ }
+ });
+ if (this.pk) {
+ pk.newpkaddr = pk.onrightfn(r);
+ if (
+ typeof this.uniqs[pk.hh][pk.newpkaddr] !== 'undefined' &&
+ pk.newpkaddr !== pk.pkaddr
+ ) {
+ throw new Error('Record already exists');
+ }
+ }
+
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ uk.newukaddr = uk.onrightfn(r);
+ if (
+ typeof table.uniqs[uk.hh][uk.newukaddr] !== 'undefined' &&
+ uk.newukaddr !== uk.ukaddr
+ ) {
+ throw new Error('Record already exists');
+ }
+ });
+ }
+
+ // PART 3 UPDATE
+ if (this.pk) {
+ this.uniqs[pk.hh][pk.pkaddr] = undefined;
+ this.uniqs[pk.hh][pk.newpkaddr] = r;
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ table.uniqs[uk.hh][uk.ukaddr] = undefined;
+ table.uniqs[uk.hh][uk.newukaddr] = r;
+ });
+ }
+
+ this.data[i] = r;
+
+ // Trigger prevent functionality
+ for (var tr in table.afterupdate) {
+ var trigger = table.afterupdate[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](this.data[i], r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ };
+
+ var res;
+
+ if (!alasql.options.nocount) {
+ res = 1;
+ }
+
+ if (cb) res = cb(res);
+ return res;
+};
+
+//
+// Date functions
+//
+// (c) 2014, Andrey Gershun
+//
+
+/** Standard JavaScript data types */
+
+alasql.fn.Date = Object;
+alasql.fn.Date = Date;
+alasql.fn.Number = Number;
+alasql.fn.String = String;
+alasql.fn.Boolean = Boolean;
+
+/** Extend Object with properties */
+stdfn.EXTEND = alasql.utils.extend;
+
+stdfn.CHAR = String.fromCharCode.bind(String);
+stdfn.ASCII = function(a) {
+ return a.charCodeAt(0);
+};
+
+/**
+ Return first non-null argument
+ See https://msdn.microsoft.com/en-us/library/ms190349.aspx
+*/
+stdfn.COALESCE = function() {
+ for (var i = 0; i < arguments.length; i++) {
+ if (typeof arguments[i] == 'undefined') continue;
+ if (typeof arguments[i] == 'number' && isNaN(arguments[i])) continue;
+ return arguments[i];
+ }
+ return undefined;
+};
+
+stdfn.USER = function() {
+ return 'alasql';
+};
+
+stdfn.OBJECT_ID = function(objid) {
+ return !!alasql.tables[objid];
+};
+
+stdfn.DATE = function(d) {
+ if (/\d{8}/.test(d)) return new Date(+d.substr(0, 4), +d.substr(4, 2) - 1, +d.substr(6, 2));
+ return new Date(d);
+};
+
+stdfn.NOW = function() {
+ var d = new Date();
+ var s =
+ d.getFullYear() +
+ '.' +
+ ('0' + (d.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + d.getDate()).substr(-2);
+ s +=
+ ' ' +
+ ('0' + d.getHours()).substr(-2) +
+ ':' +
+ ('0' + d.getMinutes()).substr(-2) +
+ ':' +
+ ('0' + d.getSeconds()).substr(-2);
+ s += '.' + ('00' + d.getMilliseconds()).substr(-3);
+ return s;
+};
+
+stdfn.GETDATE = stdfn.NOW;
+stdfn.CURRENT_TIMESTAMP = stdfn.NOW;
+
+stdfn.SECOND = function(d) {
+ var d = new Date(d);
+ return d.getSeconds();
+};
+
+stdfn.MINUTE = function(d) {
+ var d = new Date(d);
+ return d.getMinutes();
+};
+
+stdfn.HOUR = function(d) {
+ var d = new Date(d);
+ return d.getHours();
+};
+
+stdfn.DAYOFWEEK = stdfn.WEEKDAY = function(d) {
+ var d = new Date(d);
+ return d.getDay();
+};
+
+stdfn.DAY = stdfn.DAYOFMONTH = function(d) {
+ var d = new Date(d);
+ return d.getDate();
+};
+
+stdfn.MONTH = function(d) {
+ var d = new Date(d);
+ return d.getMonth() + 1;
+};
+
+stdfn.YEAR = function(d) {
+ var d = new Date(d);
+ return d.getFullYear();
+};
+
+var PERIODS = {
+ year: 1000 * 3600 * 24 * 365,
+ quarter: 1000 * 3600 * 24 * 365 / 4,
+ month: 1000 * 3600 * 24 * 30,
+ week: 1000 * 3600 * 24 * 7,
+ day: 1000 * 3600 * 24,
+ dayofyear: 1000 * 3600 * 24,
+ weekday: 1000 * 3600 * 24,
+ hour: 1000 * 3600,
+ minute: 1000 * 60,
+ second: 1000,
+ millisecond: 1,
+ microsecond: 0.001,
+};
+
+alasql.stdfn.DATEDIFF = function(period, d1, d2) {
+ var interval = new Date(d2).getTime() - new Date(d1).getTime();
+ return interval / PERIODS[period.toLowerCase()];
+};
+
+alasql.stdfn.DATEADD = function(period, interval, d) {
+ var nd = new Date(d).getTime() + interval * PERIODS[period.toLowerCase()];
+ return new Date(nd);
+};
+
+alasql.stdfn.INTERVAL = function(interval, period) {
+ return interval * PERIODS[period.toLowerCase()];
+};
+
+alasql.stdfn.DATE_ADD = alasql.stdfn.ADDDATE = function(d, interval) {
+ var nd = new Date(d).getTime() + interval;
+ return new Date(nd);
+};
+
+alasql.stdfn.DATE_SUB = alasql.stdfn.SUBDATE = function(d, interval) {
+ var nd = new Date(d).getTime() - interval;
+ return new Date(nd);
+};
+
+/*
+//
+// DROP TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.DropTable = function(params) {
+ return yy.extend(this, params);
+};
+yy.DropTable.prototype.toString = function() {
+ var s = 'DROP' + ' ';
+ if (this.view) s += 'VIEW';
+ else s += 'TABLE';
+ if (this.ifexists) s += ' IF EXISTS';
+ s += ' ' + this.tables.toString();
+ return s;
+};
+
+// DROP TABLE
+/**
+ Drop tables
+ @param {string} databaseid Database id
+ @param {object} params Parameters
+ @param {callback} cb Callback function
+ @return Number of dropped tables
+ @example
+ DROP TABLE one;
+ DROP TABLE IF NOT EXISTS two, three;
+*/
+yy.DropTable.prototype.execute = function(databaseid, params, cb) {
+ var ifexists = this.ifexists;
+ var res = 0; // No tables removed
+ var count = 0;
+ var tlen = this.tables.length;
+
+ // For each table in the list
+ this.tables.forEach(function(table) {
+ var db = alasql.databases[table.databaseid || databaseid];
+ var tableid = table.tableid;
+
+ /** @todo Test with AUTOCOMMIT flag is ON */
+ /** @todo Test with IndexedDB and multiple tables */
+
+ if (!ifexists || (ifexists && db.tables[tableid])) {
+ if (!db.tables[tableid]) {
+ if (!alasql.options.dropifnotexists) {
+ throw new Error(
+ "Can not drop table '" +
+ table.tableid +
+ "', because it does not exist in the database."
+ );
+ }
+ } else {
+ if (db.engineid /*&& alasql.options.autocommit*/) {
+ alasql.engines[db.engineid].dropTable(
+ table.databaseid || databaseid,
+ tableid,
+ ifexists,
+ function(res1) {
+ delete db.tables[tableid];
+ res += res1;
+ count++;
+ if (count == tlen && cb) cb(res);
+ }
+ );
+ } else {
+ delete db.tables[tableid];
+ res++;
+ count++;
+ if (count == tlen && cb) cb(res);
+ }
+ }
+ } else {
+ count++;
+ if (count == tlen && cb) cb(res);
+ }
+ });
+ // if(cb) res = cb(res);
+ return res;
+};
+
+yy.TruncateTable = function(params) {
+ return yy.extend(this, params);
+};
+yy.TruncateTable.prototype.toString = function() {
+ var s = 'TRUNCATE TABLE';
+ s += ' ' + this.table.toString();
+ return s;
+};
+
+yy.TruncateTable.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[this.table.databaseid || databaseid];
+ var tableid = this.table.tableid;
+ if (db.engineid) {
+ return alasql.engines[db.engineid].truncateTable(
+ this.table.databaseid || databaseid,
+ tableid,
+ this.ifexists,
+ cb
+ );
+ }
+ if (db.tables[tableid]) {
+ db.tables[tableid].data = [];
+ } else {
+ throw new Error('Cannot truncate table becaues it does not exist');
+ }
+ return cb ? cb(0) : 0;
+};
+
+/*
+//
+// CREATE VERTEX for AlaSQL
+// Date: 21.04.2015
+// (c) 2015, Andrey Gershun
+//
+*/
+
+yy.CreateVertex = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateVertex.prototype.toString = function() {
+ var s = 'CREATE VERTEX ';
+ if (this.class) {
+ s += this.class + ' ';
+ }
+ if (this.sharp) {
+ s += '#' + this.sharp + ' ';
+ }
+ if (this.sets) {
+ s += this.sets.toString();
+ } else if (this.content) {
+ s += this.content.toString();
+ } else if (this.select) {
+ s += this.select.toString();
+ }
+
+ return s;
+};
+
+yy.CreateVertex.prototype.toJS = function(context) {
+
+ var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
+ // var s = '';
+ return s;
+};
+
+// CREATE TABLE
+
+yy.CreateVertex.prototype.compile = function(databaseid) {
+ var dbid = databaseid;
+
+ // CREATE VERTEX #id
+ var sharp = this.sharp;
+
+ // CREATE VERTEX "Name"
+ if (typeof this.name !== 'undefined') {
+ var s = 'x.name=' + this.name.toJS();
+ var namefn = new Function('x', s);
+ }
+
+ if (this.sets && this.sets.length > 0) {
+ var s = this.sets
+ .map(function(st) {
+ return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
+ })
+ .join(';');
+ var setfn = new Function('x,params,alasql', s);
+ }
+
+ // Todo: check for content, select and default
+
+ var statement = function(params, cb) {
+ var res;
+
+ // CREATE VERTEX without parameters
+ var db = alasql.databases[dbid];
+ var id;
+ if (typeof sharp !== 'undefined') {
+ id = sharp;
+ } else {
+ id = db.counter++;
+ }
+ var vertex = {$id: id, $node: 'VERTEX'};
+ db.objects[vertex.$id] = vertex;
+ res = vertex;
+ if (namefn) {
+ namefn(vertex);
+ }
+ if (setfn) {
+ setfn(vertex, params, alasql);
+ }
+
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+ };
+ return statement;
+};
+
+yy.CreateEdge = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateEdge.prototype.toString = function() {
+
+ var s = 'CREATE EDGE' + ' ';
+ if (this.class) {
+ s += this.class + ' ';
+ }
+ // todo: SET
+ // todo: CONTENT
+ // todo: SELECT
+ return s;
+};
+
+yy.CreateEdge.prototype.toJS = function(context) {
+ var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
+ return s;
+};
+
+// CREATE TABLE
+
+yy.CreateEdge.prototype.compile = function(databaseid) {
+ var dbid = databaseid;
+ var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
+ var tofn = new Function('params,alasql', 'var y;return ' + this.to.toJS());
+
+ // CREATE VERTEX "Name"
+ if (typeof this.name !== 'undefined') {
+ var s = 'x.name=' + this.name.toJS();
+ var namefn = new Function('x', s);
+ }
+
+ if (this.sets && this.sets.length > 0) {
+ var s = this.sets
+ .map(function(st) {
+ return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
+ })
+ .join(';');
+ var setfn = new Function('x,params,alasql', 'var y;' + s);
+ }
+
+ /*
+ todo: handle content, select and default
+ else if(this.content) {
+
+ } else if(this.select) {
+
+ } else {
+ }
+ */
+
+ var statement = function(params, cb) {
+ var res = 0;
+ // CREATE VERTEX without parameters
+ var db = alasql.databases[dbid];
+ var edge = {$id: db.counter++, $node: 'EDGE'};
+ var v1 = fromfn(params, alasql);
+ var v2 = tofn(params, alasql);
+ // Set link
+ edge.$in = [v1.$id];
+ edge.$out = [v2.$id];
+ // Set sides
+ if (v1.$out === undefined) {
+ v1.$out = [];
+ }
+ v1.$out.push(edge.$id);
+
+ if (typeof v2.$in === undefined) {
+ v2.$in = [];
+ }
+ v2.$in.push(edge.$id);
+
+ // Save in objects
+ db.objects[edge.$id] = edge;
+ res = edge;
+ if (namefn) {
+ namefn(edge);
+ }
+
+ if (setfn) {
+ setfn(edge, params, alasql);
+ }
+
+ if (cb) {
+ res = cb(res);
+ }
+
+ return res;
+ };
+ return statement;
+};
+
+yy.CreateGraph = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateGraph.prototype.toString = function() {
+ var s = 'CREATE GRAPH' + ' ';
+ if (this.class) {
+ s += this.class + ' ';
+ }
+ return s;
+};
+
+yy.CreateGraph.prototype.execute = function(databaseid, params, cb) {
+ var res = [];
+ if (this.from) {
+ if (alasql.from[this.from.funcid]) {
+ this.graph = alasql.from[this.from.funcid.toUpperCase()];
+ }
+ }
+
+ // stop;
+ this.graph.forEach(function(g) {
+ if (g.source) {
+ // GREATE EDGE
+ var e = {};
+ if (typeof g.as !== 'undefined') {
+ alasql.vars[g.as] = e;
+ }
+
+ if (typeof g.prop !== 'undefined') {
+ // e[g.prop] = e;
+ // v.$id = g.prop; // We do not create $id for edge automatically
+ e.name = g.prop;
+ }
+ if (typeof g.sharp !== 'undefined') {
+ e.$id = g.sharp;
+ }
+ if (typeof g.name !== 'undefined') {
+ e.name = g.name;
+ }
+ if (typeof g.class !== 'undefined') {
+ e.$class = g.class;
+ }
+
+ var db = alasql.databases[databaseid];
+ if (typeof e.$id === 'undefined') {
+ e.$id = db.counter++;
+ }
+ e.$node = 'EDGE';
+ if (typeof g.json !== 'undefined') {
+ extend(
+ e,
+ new Function('params,alasql', 'var y;return ' + g.json.toJS())(params, alasql)
+ );
+ }
+
+ var v1;
+ if (g.source.vars) {
+ var vo = alasql.vars[g.source.vars];
+ if (typeof vo === 'object') {
+ v1 = vo;
+ } else {
+ v1 = db.objects[vo];
+ }
+ } else {
+ var av1 = g.source.sharp;
+ if (typeof av1 === 'undefined') {
+ av1 = g.source.prop;
+ }
+ v1 = alasql.databases[databaseid].objects[av1];
+ if (
+ typeof v1 === 'undefined' &&
+ alasql.options.autovertex &&
+ (typeof g.source.prop !== 'undefined' || typeof g.source.name !== 'undefined')
+ ) {
+ v1 = findVertex(g.source.prop || g.source.name);
+ if (typeof v1 === 'undefined') {
+ v1 = createVertex(g.source);
+ }
+ }
+ }
+
+ var v2;
+ if (g.source.vars) {
+ var vo = alasql.vars[g.target.vars];
+ if (typeof vo === 'object') {
+ v2 = vo;
+ } else {
+ v2 = db.objects[vo];
+ }
+ } else {
+ var av2 = g.target.sharp;
+ if (typeof av2 === 'undefined') {
+ av2 = g.target.prop;
+ }
+ v2 = alasql.databases[databaseid].objects[av2];
+ if (
+ typeof v2 === 'undefined' &&
+ alasql.options.autovertex &&
+ (typeof g.target.prop !== 'undefined' || typeof g.target.name !== 'undefined')
+ ) {
+ v2 = findVertex(g.target.prop || g.target.name);
+ if (typeof v2 === 'undefined') {
+ v2 = createVertex(g.target);
+ }
+ }
+ }
+
+ // Set link
+ e.$in = [v1.$id];
+ e.$out = [v2.$id];
+ // Set sides
+ if (typeof v1.$out === 'undefined') {
+ v1.$out = [];
+ }
+ v1.$out.push(e.$id);
+ if (typeof v2.$in === 'undefined') {
+ v2.$in = [];
+ }
+ v2.$in.push(e.$id);
+
+ db.objects[e.$id] = e;
+ if (typeof e.$class !== 'undefined') {
+ if (typeof alasql.databases[databaseid].tables[e.$class] === 'undefined') {
+ throw new Error('No such class. Pleace use CREATE CLASS');
+ } else {
+ // TODO - add insert()
+ alasql.databases[databaseid].tables[e.$class].data.push(e);
+ }
+ }
+
+ res.push(e.$id);
+ } else {
+ createVertex(g);
+ }
+ });
+
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+
+ // Find vertex by name
+ function findVertex(name) {
+ var objects = alasql.databases[alasql.useid].objects;
+ for (var k in objects) {
+ if (objects[k].name === name) {
+ return objects[k];
+ }
+ }
+ return undefined;
+ }
+
+ function createVertex(g) {
+ // GREATE VERTEX
+ var v = {};
+ if (typeof g.as !== 'undefined') {
+ alasql.vars[g.as] = v;
+ }
+
+ if (typeof g.prop !== 'undefined') {
+ // v[g.prop] = true;
+ v.$id = g.prop;
+ v.name = g.prop;
+ }
+
+ if (typeof g.sharp !== 'undefined') {
+ v.$id = g.sharp;
+ }
+ if (typeof g.name !== 'undefined') {
+ v.name = g.name;
+ }
+ if (typeof g.class !== 'undefined') {
+ v.$class = g.class;
+ }
+
+ var db = alasql.databases[databaseid];
+ if (typeof v.$id === 'undefined') {
+ v.$id = db.counter++;
+ }
+ v.$node = 'VERTEX';
+ if (typeof g.json !== 'undefined') {
+ extend(
+ v,
+ new Function('params,alasql', 'var y;return ' + g.json.toJS())(params, alasql)
+ );
+ }
+ db.objects[v.$id] = v;
+ if (typeof v.$class !== 'undefined') {
+ if (typeof alasql.databases[databaseid].tables[v.$class] === 'undefined') {
+ throw new Error('No such class. Pleace use CREATE CLASS');
+ } else {
+ // TODO - add insert()
+ alasql.databases[databaseid].tables[v.$class].data.push(v);
+ }
+ }
+
+ res.push(v.$id);
+ return v;
+ }
+};
+
+yy.CreateGraph.prototype.compile1 = function(databaseid) {
+ var dbid = databaseid;
+ var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
+ var tofn = new Function('params,alasql', 'var y;return ' + this.to.toJS());
+
+ // CREATE VERTEX "Name"
+ if (typeof this.name !== 'undefined') {
+ var s = 'x.name=' + this.name.toJS();
+ var namefn = new Function('x', s);
+ }
+
+ if (this.sets && this.sets.length > 0) {
+ var s = this.sets
+ .map(function(st) {
+ return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
+ })
+ .join(';');
+ var setfn = new Function('x,params,alasql', 'var y;' + s);
+ }
+
+ // Todo: handle content, select and default
+
+ var statement = function(params, cb) {
+ var res = 0;
+ // CREATE VERTEX without parameters
+ var db = alasql.databases[dbid];
+ var edge = {$id: db.counter++, $node: 'EDGE'};
+ var v1 = fromfn(params, alasql);
+ var v2 = tofn(params, alasql);
+ // Set link
+ edge.$in = [v1.$id];
+ edge.$out = [v2.$id];
+ // Set sides
+ if (typeof v1.$out === 'undefined') {
+ v1.$out = [];
+ }
+ v1.$out.push(edge.$id);
+
+ if (typeof v2.$in === 'undefined') {
+ v2.$in = [];
+ }
+ v2.$in.push(edge.$id);
+ // Save in objects
+ db.objects[edge.$id] = edge;
+ res = edge;
+ if (namefn) {
+ namefn(edge);
+ }
+ if (setfn) {
+ setfn(edge, params, alasql);
+ }
+
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+ };
+ return statement;
+};
+
+/*
+//
+// ALTER TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+/* global alasql yy */
+
+// ALTER TABLE table1 RENAME TO table2
+yy.AlterTable = function(params) {
+ return yy.extend(this, params);
+};
+yy.AlterTable.prototype.toString = function() {
+ var s = 'ALTER TABLE ' + this.table.toString();
+ if (this.renameto) s += ' RENAME TO ' + this.renameto;
+ return s;
+};
+
+yy.AlterTable.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[databaseid];
+ db.dbversion = Date.now();
+
+ if (this.renameto) {
+ var oldtableid = this.table.tableid;
+ var newtableid = this.renameto;
+ var res = 1;
+ if (db.tables[newtableid]) {
+ throw new Error(
+ "Can not rename a table '" +
+ oldtableid +
+ "' to '" +
+ newtableid +
+ "', because the table with this name already exists"
+ );
+ } else if (newtableid === oldtableid) {
+ throw new Error("Can not rename a table '" + oldtableid + "' to itself");
+ } else {
+ db.tables[newtableid] = db.tables[oldtableid];
+ delete db.tables[oldtableid];
+ res = 1;
+ }
+ if (cb) cb(res);
+ return res;
+ } else if (this.addcolumn) {
+ db = alasql.databases[this.table.databaseid || databaseid];
+ db.dbversion++;
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var columnid = this.addcolumn.columnid;
+ if (table.xcolumns[columnid]) {
+ throw new Error(
+ 'Cannot add column "' +
+ columnid +
+ '", because it already exists in the table "' +
+ tableid +
+ '"'
+ );
+ }
+
+ var col = {
+ columnid: columnid,
+ dbtypeid: this.dbtypeid,
+ dbsize: this.dbsize,
+ dbprecision: this.dbprecision,
+ dbenum: this.dbenum,
+ defaultfns: null, // TODO defaultfns!!!
+ };
+
+ var defaultfn = function() {};
+
+ table.columns.push(col);
+ table.xcolumns[columnid] = col;
+
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+
+ table.data[i][columnid] = defaultfn();
+ }
+
+ // TODO
+ return cb ? cb(1) : 1;
+ } else if (this.modifycolumn) {
+ var db = alasql.databases[this.table.databaseid || databaseid];
+ db.dbversion++;
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var columnid = this.modifycolumn.columnid;
+
+ if (!table.xcolumns[columnid]) {
+ throw new Error(
+ 'Cannot modify column "' +
+ columnid +
+ '", because it was not found in the table "' +
+ tableid +
+ '"'
+ );
+ }
+
+ col = table.xcolumns[columnid];
+ col.dbtypeid = this.dbtypeid;
+ col.dbsize = this.dbsize;
+ col.dbprecision = this.dbprecision;
+ col.dbenum = this.dbenum;
+
+ // TODO
+ return cb ? cb(1) : 1;
+ } else if (this.renamecolumn) {
+ var db = alasql.databases[this.table.databaseid || databaseid];
+ db.dbversion++;
+
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var columnid = this.renamecolumn;
+ var tocolumnid = this.to;
+
+ var col;
+ if (!table.xcolumns[columnid]) {
+ throw new Error(
+ 'Column "' + columnid + '" is not found in the table "' + tableid + '"'
+ );
+ }
+ if (table.xcolumns[tocolumnid]) {
+ throw new Error(
+ 'Column "' + tocolumnid + '" already exists in the table "' + tableid + '"'
+ );
+ }
+
+ if (columnid != tocolumnid) {
+ for (var j = 0; j < table.columns.length; j++) {
+ if (table.columns[j].columnid == columnid) {
+ table.columns[j].columnid = tocolumnid;
+ }
+ }
+
+ table.xcolumns[tocolumnid] = table.xcolumns[columnid];
+ delete table.xcolumns[columnid];
+
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+
+ table.data[i][tocolumnid] = table.data[i][columnid];
+ delete table.data[i][columnid];
+ }
+ return table.data.length;
+ } else {
+ return cb ? cb(0) : 0;
+ }
+ } else if (this.dropcolumn) {
+ var db = alasql.databases[this.table.databaseid || databaseid];
+ db.dbversion++;
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var columnid = this.dropcolumn;
+
+ var found = false;
+ for (var j = 0; j < table.columns.length; j++) {
+ if (table.columns[j].columnid == columnid) {
+ found = true;
+ table.columns.splice(j, 1);
+ break;
+ }
+ }
+
+ if (!found) {
+ throw new Error(
+ 'Cannot drop column "' +
+ columnid +
+ '", because it was not found in the table "' +
+ tableid +
+ '"'
+ );
+ }
+
+ delete table.xcolumns[columnid];
+
+ for (i = 0, ilen = table.data.length; i < ilen; i++) {
+ delete table.data[i][columnid];
+ }
+ return cb ? cb(table.data.length) : table.data.length;
+ } else {
+ throw Error('Unknown ALTER TABLE method');
+ }
+};
+
+/*
+//
+// CREATE TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.CreateIndex = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateIndex.prototype.toString = function() {
+ var s = 'CREATE';
+ if (this.unique) s += ' UNIQUE';
+ s += ' INDEX ' + this.indexid + ' ON ' + this.table.toString();
+ s += '(' + this.columns.toString() + ')';
+ return s;
+};
+
+// CREATE TABLE
+yy.CreateIndex.prototype.execute = function(databaseid, params, cb) {
+ // var self = this;
+ var db = alasql.databases[databaseid];
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var indexid = this.indexid;
+ db.indices[indexid] = tableid;
+
+ var rightfns = this.columns
+ .map(function(expr) {
+ return expr.expression.toJS('r', '');
+ })
+ .join("+'`'+");
+
+ var rightfn = new Function('r,params,alasql', 'return ' + rightfns);
+
+ if (this.unique) {
+ table.uniqdefs[indexid] = {
+ rightfns: rightfns,
+ };
+ var ux = (table.uniqs[indexid] = {});
+ if (table.data.length > 0) {
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+ var addr = rightfns(table.data[i]);
+ if (!ux[addr]) {
+ ux[addr] = {num: 0};
+ }
+ ux[addr].num++;
+ }
+ }
+ } else {
+ var hh = hash(rightfns);
+ table.inddefs[indexid] = {rightfns: rightfns, hh: hh};
+ table.indices[hh] = {};
+
+ var ix = (table.indices[hh] = {});
+ if (table.data.length > 0) {
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+ var addr = rightfn(table.data[i], params, alasql);
+ if (!ix[addr]) {
+ ix[addr] = [];
+ }
+ ix[addr].push(table.data[i]);
+ }
+ }
+ }
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+yy.Reindex = function(params) {
+ return yy.extend(this, params);
+};
+yy.Reindex.prototype.toString = function() {
+ var s = 'REINDEX ' + this.indexid;
+ return s;
+};
+
+// CREATE TABLE
+yy.Reindex.prototype.execute = function(databaseid, params, cb) {
+ // var self = this;
+ var db = alasql.databases[databaseid];
+ var indexid = this.indexid;
+
+ var tableid = db.indices[indexid];
+ var table = db.tables[tableid];
+ table.indexColumns();
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+/*
+//
+// DROP TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.DropIndex = function(params) {
+ return yy.extend(this, params);
+};
+yy.DropIndex.prototype.toString = function() {
+ return 'DROP INDEX' + this.indexid;
+};
+
+// DROP TABLE
+yy.DropIndex.prototype.compile = function(db) {
+ var indexid = this.indexid;
+ return function() {
+ return 1;
+ };
+};
+
+/*
+//
+// WITH SELECT for Alasql.js
+// Date: 11.01.2015
+// (c) 2015, Andrey Gershun
+//
+*/
+
+yy.WithSelect = function(params) {
+ return yy.extend(this, params);
+};
+yy.WithSelect.prototype.toString = function() {
+ var s = 'WITH ';
+ s +=
+ this.withs
+ .map(function(w) {
+ return w.name + ' AS (' + w.select.toString() + ')';
+ })
+ .join(',') + ' ';
+ s += this.select.toString();
+ return s;
+};
+
+yy.WithSelect.prototype.execute = function(databaseid, params, cb) {
+ var self = this;
+ // Create temporary tables
+ var savedTables = [];
+ self.withs.forEach(function(w) {
+ savedTables.push(alasql.databases[databaseid].tables[w.name]);
+ var tb = (alasql.databases[databaseid].tables[w.name] = new Table({tableid: w.name}));
+ tb.data = w.select.execute(databaseid, params);
+ });
+
+ var res = 1;
+ res = this.select.execute(databaseid, params, function(data) {
+ // Clear temporary tables
+ // setTimeout(function(){
+ self.withs.forEach(function(w, idx) {
+ if (savedTables[idx]) alasql.databases[databaseid].tables[w.name] = savedTables[idx];
+ else delete alasql.databases[databaseid].tables[w.name];
+ });
+ // },0);
+
+ if (cb) data = cb(data);
+ return data;
+ });
+ return res;
+};
+
+/*
+//
+// IF for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.If = function(params) {
+ return yy.extend(this, params);
+};
+yy.If.prototype.toString = function() {
+ var s = 'IF' + ' ';
+ s += this.expression.toString();
+ s += ' ' + this.thenstat.toString();
+ if (this.elsestat) s += ' ELSE ' + this.thenstat.toString();
+ return s;
+};
+
+// CREATE TABLE
+
+yy.If.prototype.execute = function(databaseid, params, cb) {
+ var res;
+
+ var fn = new Function(
+ 'params,alasql,p',
+ 'var y;return ' + this.expression.toJS('({})', '', null)
+ ).bind(this);
+
+ if (fn(params, alasql)) res = this.thenstat.execute(databaseid, params, cb);
+ else {
+ if (this.elsestat) res = this.elsestat.execute(databaseid, params, cb);
+ else {
+ if (cb) res = cb(res);
}
}
+ // else res = this.elsestat.execute(databaseid,params,cb,scope);
+ return res;
+};
- var udbtypeid = args.dbtypeid.toUpperCase();
+/*
+//
+// CREATE VIEW for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
- if (args.dbtypeid == 'Date') {
- return new Date(val);
- } else if (udbtypeid == 'DATE') {
- var d = new Date(val);
- var s =
- d.getFullYear() +
- '.' +
- ('0' + (d.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + d.getDate()).substr(-2);
- return s;
- } else if (udbtypeid == 'DATETIME' || udbtypeid == 'DATETIME2') {
- var d = new Date(val);
- var s =
- d.getFullYear() +
- '.' +
- ('0' + (d.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + d.getDate()).substr(-2);
- s +=
- ' ' +
- ('0' + d.getHours()).substr(-2) +
- ':' +
- ('0' + d.getMinutes()).substr(-2) +
- ':' +
- ('0' + d.getSeconds()).substr(-2);
- s += '.' + ('00' + d.getMilliseconds()).substr(-3);
- return s;
- } else if (['MONEY'].indexOf(udbtypeid) > -1) {
- var m = +val;
- return (m | 0) + ((m * 100) % 100) / 100;
- } else if (['BOOLEAN'].indexOf(udbtypeid) > -1) {
- return !!val;
- } else if (
- ['INT', 'INTEGER', 'SMALLINT', 'BIGINT', 'SERIAL', 'SMALLSERIAL', 'BIGSERIAL'].indexOf(
- args.dbtypeid.toUpperCase()
- ) > -1
- ) {
- return val | 0;
- } else if (
- ['STRING', 'VARCHAR', 'NVARCHAR', 'CHARACTER VARIABLE'].indexOf(
- args.dbtypeid.toUpperCase()
- ) > -1
- ) {
- if (args.dbsize) return ('' + val).substr(0, args.dbsize);
- else return '' + val;
- } else if (['CHAR', 'CHARACTER', 'NCHAR'].indexOf(udbtypeid) > -1) {
- return (val + new Array(args.dbsize + 1).join(' ')).substr(0, args.dbsize);
- //else return ""+val.substr(0,1);
- } else if (['NUMBER', 'FLOAT', 'DECIMAL', 'NUMERIC'].indexOf(udbtypeid) > -1) {
- var m = +val;
- //toPrecision sets the number of numbers total in the result
- m = args.dbsize !== undefined ? parseFloat(m.toPrecision(args.dbsize)) : m;
- //toFixed sets the number of numbers to the right of the decimal
- m = args.dbprecision !== undefined ? parseFloat(m.toFixed(args.dbprecision)) : m;
- return m;
- } else if (['JSON'].indexOf(udbtypeid) > -1) {
- if (typeof val == 'object') return val;
- try {
- return JSON.parse(val);
- } catch (err) {
- throw new Error('Cannot convert string to JSON');
+yy.While = function(params) {
+ return yy.extend(this, params);
+};
+yy.While.prototype.toString = function() {
+ var s = 'WHILE ';
+ s += this.expression.toString();
+ s += ' ' + this.loopstat.toString();
+ return s;
+};
+
+yy.While.prototype.execute = function(databaseid, params, cb) {
+ var self = this;
+ var res = [];
+
+ var fn = new Function('params,alasql,p', 'var y;return ' + this.expression.toJS());
+
+ if (cb) {
+ var first = false;
+ loop();
+ function loop(data) {
+ if (first) {
+ res.push(data);
+ } else {
+ first = true;
+ }
+ setTimeout(function() {
+ if (fn(params, alasql)) {
+ self.loopstat.execute(databaseid, params, loop);
+ } else {
+ res = cb(res);
+ }
+ }, 0);
+ }
+ } else {
+ while (fn(params, alasql)) {
+ var res1 = self.loopstat.execute(databaseid, params);
+ res.push(res1);
}
}
- return val;
+ return res;
+};
+
+yy.Break = function(params) {
+ return yy.extend(this, params);
+};
+yy.Break.prototype.toString = function() {
+ var s = 'BREAK';
+ return s;
+};
+
+yy.Break.prototype.execute = function(databaseid, params, cb, scope) {
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+yy.Continue = function(params) {
+ return yy.extend(this, params);
+};
+yy.Continue.prototype.toString = function() {
+ var s = 'CONTINUE';
+ return s;
+};
+
+yy.Continue.prototype.execute = function(databaseid, params, cb, scope) {
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+yy.BeginEnd = function(params) {
+ return yy.extend(this, params);
+};
+yy.BeginEnd.prototype.toString = function() {
+ var s = 'BEGIN ' + this.statements.toString() + ' END';
+ return s;
+};
+
+yy.BeginEnd.prototype.execute = function(databaseid, params, cb, scope) {
+ var self = this;
+ var res = [];
+
+ var idx = 0;
+ runone();
+ function runone() {
+ self.statements[idx].execute(databaseid, params, function(data) {
+ res.push(data);
+ idx++;
+ if (idx < self.statements.length) return runone();
+ if (cb) res = cb(res);
+ });
+ }
+ return res;
};
/*
//
-// CREATE TABLE for Alasql.js
+// INSERT for Alasql.js
// Date: 03.11.2014
// (c) 2014, Andrey Gershun
//
*/
-/* global alasql, yy, hash */
-
-yy.ColumnDef = function(params) {
+/* global yy alasql*/
+yy.Insert = function(params) {
return yy.extend(this, params);
};
-yy.ColumnDef.prototype.toString = function() {
- var s = this.columnid;
- if (this.dbtypeid) {
- s += ' ' + this.dbtypeid;
+yy.Insert.prototype.toString = function() {
+ var s = 'INSERT ';
+ if (this.orreplace) s += 'OR REPLACE ';
+ if (this.replaceonly) s = 'REPLACE ';
+ s += 'INTO ' + this.into.toString();
+ if (this.columns) s += '(' + this.columns.toString() + ')';
+ if (this.values) s += ' VALUES ' + this.values.toString();
+ if (this.select) s += ' ' + this.select.toString();
+ return s;
+};
+
+yy.Insert.prototype.toJS = function(context, tableid, defcols) {
+
+ // if(this.expression.reduced) return 'true';
+ // return this.expression.toJS(context, tableid, defcols);
+
+ // var s = 'this.queriesdata['+(this.queriesidx-1)+'][0]';
+
+ var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
+
+ return s;
+};
+
+yy.Insert.prototype.compile = function(databaseid) {
+ var self = this;
+ databaseid = self.into.databaseid || databaseid;
+ var db = alasql.databases[databaseid];
+
+ var tableid = self.into.tableid;
+ var table = db.tables[tableid];
+
+ if (!table) {
+ throw "Table '" + tableid + "' could not be found";
}
- if (this.dbsize) {
- s += '(' + this.dbsize;
- if (this.dbprecision) {
- s += ',' + this.dbprecision;
+ // Check, if this dirty flag is required
+ var s = '';
+ var sw = '';
+ var s = "db.tables['" + tableid + "'].dirty=true;";
+ var s3 = 'var a,aa=[],x;';
+
+ var s33;
+
+ // INSERT INTO table VALUES
+ if (this.values) {
+ if (this.exists) {
+ this.existsfn = this.exists.map(function(ex) {
+ var nq = ex.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+ if (this.queries) {
+ this.queriesfn = this.queries.map(function(q) {
+ var nq = q.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
}
- s += ')';
- }
- if (this.primarykey) {
- s += ' PRIMARY KEY';
+ self.values.forEach(function(values) {
+ var ss = [];
+
+ // s += 'db.tables[\''+tableid+'\'].data.push({';
+
+ // s += '';
+ if (self.columns) {
+ self.columns.forEach(function(col, idx) {
+
+ // ss.push(col.columnid +':'+ self.values[idx].value.toString());
+
+ // if(rec[f.name.value] == "NULL") rec[f.name.value] = undefined;
+
+ // if(table.xflds[f.name.value].dbtypeid == "INT") rec[f.name.value] = +rec[f.name.value]|0;
+ // else if(table.xflds[f.name.value].dbtypeid == "FLOAT") rec[f.name.value] = +rec[f.name.value];
+ var q = "'" + col.columnid + "':";
+ if (table.xcolumns && table.xcolumns[col.columnid]) {
+ if (
+ ['INT', 'FLOAT', 'NUMBER', 'MONEY'].indexOf(
+ table.xcolumns[col.columnid].dbtypeid
+ ) >= 0
+ ) {
+ //q += ''
+ q += '(x=' + values[idx].toJS() + ',x==undefined?undefined:+x)';
+ } else if (alasql.fn[table.xcolumns[col.columnid].dbtypeid]) {
+ q += '(new ' + table.xcolumns[col.columnid].dbtypeid + '(';
+ q += values[idx].toJS();
+ q += '))';
+ } else {
+ q += values[idx].toJS();
+ }
+ } else {
+ q += values[idx].toJS();
+ }
+ ss.push(q);
+ });
+ } else {
+ // var table = db.tables[tableid];
+
+ if (Array.isArray(values) && table.columns && table.columns.length > 0) {
+ table.columns.forEach(function(col, idx) {
+ var q = "'" + col.columnid + "':";
+ // var val = values[idx].toJS();
+
+ if (['INT', 'FLOAT', 'NUMBER', 'MONEY'].indexOf(col.dbtypeid) >= 0) {
+ q += '+' + values[idx].toJS();
+ } else if (alasql.fn[col.dbtypeid]) {
+ q += '(new ' + col.dbtypeid + '(';
+ q += values[idx].toJS();
+ q += '))';
+ } else {
+ q += values[idx].toJS();
+ }
+
+ ss.push(q);
+
+ });
+ } else {
+
+ // sw = 'var w='+JSONtoJS(values)+';for(var k in w){r[k]=w[k]};';
+ sw = JSONtoJS(values);
+ }
+ }
+
+ if (db.tables[tableid].defaultfns) {
+ ss.unshift(db.tables[tableid].defaultfns);
+ }
+ if (sw) {
+ s += 'a=' + sw + ';';
+ } else {
+ s += 'a={' + ss.join(',') + '};';
+ }
+
+ // If this is a class
+ if (db.tables[tableid].isclass) {
+ s += "var db=alasql.databases['" + databaseid + "'];";
+ s += 'a.$class="' + tableid + '";';
+ s += 'a.$id=db.counter++;';
+ s += 'db.objects[a.$id]=a;';
+ }
+ // s += 'db.tables[\''+tableid+'\'].insert(r);';
+ if (db.tables[tableid].insert) {
+ s += "var db=alasql.databases['" + databaseid + "'];";
+ s +=
+ "db.tables['" +
+ tableid +
+ "'].insert(a," +
+ (self.orreplace ? 'true' : 'false') +
+ ');';
+ } else {
+ s += 'aa.push(a);';
+ }
+ });
+
+ s33 = s3 + s;
+
+ if (db.tables[tableid].insert) {
+ // s += 'alasql.databases[\''+databaseid+'\'].tables[\''+tableid+'\'].insert(r);';
+ } else {
+ s +=
+ "alasql.databases['" +
+ databaseid +
+ "'].tables['" +
+ tableid +
+ "'].data=" +
+ "alasql.databases['" +
+ databaseid +
+ "'].tables['" +
+ tableid +
+ "'].data.concat(aa);";
+ }
+
+ if (db.tables[tableid].insert) {
+ if (db.tables[tableid].isclass) {
+ s += 'return a.$id;';
+ } else {
+ s += 'return ' + self.values.length;
+ }
+ } else {
+ s += 'return ' + self.values.length;
+ }
+
+ var insertfn = new Function('db, params, alasql', 'var y;' + s3 + s).bind(this);
+
+ // INSERT INTO table SELECT
+ } else if (this.select) {
+ this.select.modifier = 'RECORDSET';
+ var selectfn = this.select.compile(databaseid);
+ if (db.engineid && alasql.engines[db.engineid].intoTable) {
+ var statement = function(params, cb) {
+ var aa = selectfn(params);
+ var res = alasql.engines[db.engineid].intoTable(
+ db.databaseid,
+ tableid,
+ aa.data,
+ null,
+ cb
+ );
+ return res;
+ };
+ return statement;
+ } else {
+
+ var defaultfns = 'return alasql.utils.extend(r,{' + table.defaultfns + '})';
+ var defaultfn = new Function('r,db,params,alasql', defaultfns);
+ var insertfn = function(db, params, alasql) {
+ var res = selectfn(params).data;
+ if (db.tables[tableid].insert) {
+ // If insert() function exists (issue #92)
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ var r = cloneDeep(res[i]);
+ defaultfn(r, db, params, alasql);
+ db.tables[tableid].insert(r, self.orreplace);
+ }
+ } else {
+ db.tables[tableid].data = db.tables[tableid].data.concat(res);
+ }
+ if (alasql.options.nocount) return;
+ else return res.length;
+ };
+ }
+ } else if (this.default) {
+ var insertfns =
+ "db.tables['" + tableid + "'].data.push({" + table.defaultfns + '});return 1;';
+ var insertfn = new Function('db,params,alasql', insertfns);
+ } else {
+ throw new Error('Wrong INSERT parameters');
}
- if (this.notnull) {
- s += ' NOT NULL';
+ if (db.engineid && alasql.engines[db.engineid].intoTable && alasql.options.autocommit) {
+ var statement = function(params, cb) {
+ var aa = new Function('db,params', 'var y;' + s33 + 'return aa;')(db, params);
+
+ var res = alasql.engines[db.engineid].intoTable(db.databaseid, tableid, aa, null, cb);
+ // if(cb) cb(res);
+ return res;
+ };
+ } else {
+ var statement = function(params, cb) {
+
+ var db = alasql.databases[databaseid];
+
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].loadTableData(databaseid, tableid);
+ }
+
+ var res = insertfn(db, params, alasql);
+
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].saveTableData(databaseid, tableid);
+ }
+ // var res = insertfn(db, params);
+ if (alasql.options.nocount) res = undefined;
+ if (cb) cb(res);
+ return res;
+ };
}
- return s;
+ return statement;
};
-yy.CreateTable = function(params) {
+yy.Insert.prototype.execute = function(databaseid, params, cb) {
+ return this.compile(databaseid)(params, cb);
+ // throw new Error('Insert statement is should be compiled')
+};
+
+/*
+//
+// TRIGGER for Alasql.js
+// Date: 29.12.2015
+//
+*/
+
+yy.CreateTrigger = function(params) {
return yy.extend(this, params);
};
-yy.CreateTable.prototype.toString = function() {
- var s = 'CREATE';
- if (this.temporary) {
- s += ' TEMPORARY';
- }
+yy.CreateTrigger.prototype.toString = function() {
+ var s = 'CREATE TRIGGER ' + this.trigger + ' ';
+ if (this.when) s += this.when + ' ';
+ s += this.action + ' ON ';
+ if (this.table.databaseid) s += this.table.databaseid + '.';
+ s += this.table.tableid + ' ';
+ s += this.statement.toString();
+ return s;
+};
- if (this.view) {
- s += ' VIEW';
- } else {
- s += ' ' + (this.class ? 'CLASS' : 'TABLE');
- }
- if (this.ifnotexists) {
- s += ' IF NOT EXISTS';
- }
- s += ' ' + this.table.toString();
- if (this.viewcolumns) {
- s +=
- '(' +
- this.viewcolumns
- .map(function(vcol) {
- return vcol.toString();
- })
- .join(',') +
- ')';
+yy.CreateTrigger.prototype.execute = function(databaseid, params, cb) {
+ var res = 1; // No tables removed
+ var triggerid = this.trigger;
+ databaseid = this.table.databaseid || databaseid;
+ var db = alasql.databases[databaseid];
+ var tableid = this.table.tableid;
+
+ var trigger = {
+ action: this.action,
+ when: this.when,
+ statement: this.statement,
+ funcid: this.funcid,
+ };
+
+ db.triggers[triggerid] = trigger;
+ if (trigger.action == 'INSERT' && trigger.when == 'BEFORE') {
+ db.tables[tableid].beforeinsert[triggerid] = trigger;
+ } else if (trigger.action == 'INSERT' && trigger.when == 'AFTER') {
+ db.tables[tableid].afterinsert[triggerid] = trigger;
+ } else if (trigger.action == 'INSERT' && trigger.when == 'INSTEADOF') {
+ db.tables[tableid].insteadofinsert[triggerid] = trigger;
+ } else if (trigger.action == 'DELETE' && trigger.when == 'BEFORE') {
+ db.tables[tableid].beforedelete[triggerid] = trigger;
+ } else if (trigger.action == 'DELETE' && trigger.when == 'AFTER') {
+ db.tables[tableid].afterdelete[triggerid] = trigger;
+ } else if (trigger.action == 'DELETE' && trigger.when == 'INSTEADOF') {
+ db.tables[tableid].insteadofdelete[triggerid] = trigger;
+ } else if (trigger.action == 'UPDATE' && trigger.when == 'BEFORE') {
+ db.tables[tableid].beforeupdate[triggerid] = trigger;
+ } else if (trigger.action == 'UPDATE' && trigger.when == 'AFTER') {
+ db.tables[tableid].afterupdate[triggerid] = trigger;
+ } else if (trigger.action == 'UPDATE' && trigger.when == 'INSTEADOF') {
+ db.tables[tableid].insteadofupdate[triggerid] = trigger;
}
- if (this.as) {
- s += ' AS ' + this.as;
+
+ if (cb) res = cb(res);
+ return res;
+};
+
+yy.DropTrigger = function(params) {
+ return yy.extend(this, params);
+};
+yy.DropTrigger.prototype.toString = function() {
+ var s = 'DROP TRIGGER ' + this.trigger;
+ return s;
+};
+
+/**
+ Drop trigger
+ @param {string} databaseid Database id
+ @param {object} params Parameters
+ @param {callback} cb Callback function
+ @return Number of dropped triggers
+ @example
+ DROP TRIGGER one;
+*/
+yy.DropTrigger.prototype.execute = function(databaseid, params, cb) {
+ var res = 0; // No tables removed
+ var db = alasql.databases[databaseid];
+ var triggerid = this.trigger;
+ // For each table in the list
+ var tableid = db.triggers[triggerid];
+ if (tableid) {
+ res = 1;
+ delete db.tables[tableid].beforeinsert[triggerid];
+ delete db.tables[tableid].afterinsert[triggerid];
+ delete db.tables[tableid].insteadofinsert[triggerid];
+ delete db.tables[tableid].beforedelte[triggerid];
+ delete db.tables[tableid].afterdelete[triggerid];
+ delete db.tables[tableid].insteadofdelete[triggerid];
+ delete db.tables[tableid].beforeupdate[triggerid];
+ delete db.tables[tableid].afterupdate[triggerid];
+ delete db.tables[tableid].insteadofupdate[triggerid];
+ delete db.triggers[triggerid];
} else {
- var ss = this.columns.map(function(col) {
- return col.toString();
- });
- s += ' (' + ss.join(',') + ')';
+ throw new Error('Trigger not found');
}
+ if (cb) res = cb(res);
+ return res;
+};
- if (this.view && this.select) {
- s += ' AS ' + this.select.toString();
- }
+/*
+//
+// DELETE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+yy.Delete = function(params) {
+ return yy.extend(this, params);
+};
+yy.Delete.prototype.toString = function() {
+ var s = 'DELETE FROM ' + this.table.toString();
+ if (this.where) s += ' WHERE ' + this.where.toString();
return s;
};
-// CREATE TABLE
-//yy.CreateTable.prototype.compile = returnUndefined;
-yy.CreateTable.prototype.execute = function(databaseid, params, cb) {
- // var self = this;
- var db = alasql.databases[this.table.databaseid || databaseid];
+yy.Delete.prototype.compile = function(databaseid) {
+ databaseid = this.table.databaseid || databaseid;
var tableid = this.table.tableid;
- if (!tableid) {
- throw new Error('Table name is not defined');
- }
-
- // var ifnotexists = this.ifnotexists;
- var columns = this.columns;
- // if(false) {
- // if(!columns) {
- // throw new Error('Columns are not defined');
- // }
- // }
- var constraints = this.constraints || [];
-
- // IF NOT EXISTS
- if (this.ifnotexists && db.tables[tableid]) {
- return cb ? cb(0) : 0;
- }
+ var statement;
+ var db = alasql.databases[databaseid];
- if (db.tables[tableid]) {
- throw new Error(
- "Can not create table '" +
- tableid +
- "', because it already exists in the database '" +
- db.databaseid +
- "'"
- );
- }
+ if (this.where) {
- var table = (db.tables[tableid] = new alasql.Table()); // TODO Can use special object?
- // If this is a class
- if (this.class) {
- table.isclass = true;
- }
+ // this.query = {};
- var ss = []; // DEFAULT function components
- var uss = []; // ON UPDATE function components
- if (columns) {
- columns.forEach(function(col) {
- var dbtypeid = col.dbtypeid;
- if (!alasql.fn[dbtypeid]) {
- dbtypeid = dbtypeid.toUpperCase();
- }
+ if (this.exists) {
+ this.existsfn = this.exists.map(function(ex) {
+ var nq = ex.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+ if (this.queries) {
+ this.queriesfn = this.queries.map(function(q) {
+ var nq = q.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
- // Process SERIAL data type like Postgress
- if (['SERIAL', 'SMALLSERIAL', 'BIGSERIAL'].indexOf(dbtypeid) > -1) {
- col.identity = {value: 1, step: 1};
- }
+ // try {
- var newcol = {
- columnid: col.columnid,
- dbtypeid: dbtypeid,
- dbsize: col.dbsize, // Fixed issue #150
- dbprecision: col.dbprecision, // Fixed issue #150
- notnull: col.notnull,
- identity: col.identity,
- };
- if (col.identity) {
- table.identities[col.columnid] = {
- value: +col.identity.value,
- step: +col.identity.step,
- };
- // ss.push('\''+col.columnid+'\':(alasql.databases[\''+db.databaseid+'\'].tables[\''
- // +tableid+'\'].identities[\''+col.columnid+'\'].value)');
- }
- if (col.check) {
- table.checks.push({
- id: col.check.constrantid,
- fn: new Function('r', 'var y;return ' + col.check.expression.toJS('r', '')),
- });
- }
+ // var query = {};
- if (col.default) {
- ss.push("'" + col.columnid + "':" + col.default.toJS('r', ''));
- }
+ var wherefn = new Function(
+ 'r,params,alasql',
+ 'var y;return (' + this.where.toJS('r', '') + ')'
+ ).bind(this);
- // Check for primary key
- if (col.primarykey) {
- var pk = (table.pk = {});
- pk.columns = [col.columnid];
- pk.onrightfns = "r['" + col.columnid + "']";
- pk.onrightfn = new Function('r', 'var y;return ' + pk.onrightfns);
- pk.hh = hash(pk.onrightfns);
- table.uniqs[pk.hh] = {};
+ statement = function(params, cb) {
+ if (db.engineid && alasql.engines[db.engineid].deleteFromTable) {
+ return alasql.engines[db.engineid].deleteFromTable(
+ databaseid,
+ tableid,
+ wherefn,
+ params,
+ cb
+ );
}
- // UNIQUE clause
- if (col.unique) {
- var uk = {};
- table.uk = table.uk || [];
- table.uk.push(uk);
- uk.columns = [col.columnid];
- uk.onrightfns = "r['" + col.columnid + "']";
- uk.onrightfn = new Function('r', 'var y;return ' + uk.onrightfns);
- uk.hh = hash(uk.onrightfns);
- table.uniqs[uk.hh] = {};
+ if (alasql.options.autocommit && db.engineid && db.engineid == 'LOCALSTORAGE') {
+ alasql.engines[db.engineid].loadTableData(databaseid, tableid);
}
- // UNIQUE clause
- if (col.foreignkey) {
+ var table = db.tables[tableid];
+ // table.dirty = true;
+ var orignum = table.data.length;
- var fk = col.foreignkey.table;
- var fktable = alasql.databases[fk.databaseid || databaseid].tables[fk.tableid];
- if (typeof fk.columnid === 'undefined') {
- if (fktable.pk.columns && fktable.pk.columns.length > 0) {
- fk.columnid = fktable.pk.columns[0];
+ var newtable = [];
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+ if (wherefn(table.data[i], params, alasql)) {
+ // Check for transaction - if it is not possible then return all back
+ if (table.delete) {
+ table.delete(i, params, alasql);
} else {
- throw new Error('FOREIGN KEY allowed only to tables with PRIMARY KEYs');
- }
- }
-
- var fkfn = function(r) {
- var rr = {};
- if (typeof r[col.columnid] === 'undefined') {
- return true;
- }
- rr[fk.columnid] = r[col.columnid];
- var addr = fktable.pk.onrightfn(rr);
-
- if (!fktable.uniqs[fktable.pk.hh][addr]) {
- throw new Error(
- 'Foreign key "' +
- r[col.columnid] +
- '" is not found in table ' +
- fktable.tableid
- );
+ // Simply do not push
}
- return true;
- };
- table.checks.push({fn: fkfn});
-
- }
-
- if (col.onupdate) {
- uss.push("r['" + col.columnid + "']=" + col.onupdate.toJS('r', ''));
- }
-
- table.columns.push(newcol);
- table.xcolumns[newcol.columnid] = newcol;
- });
- }
- table.defaultfns = ss.join(',');
- table.onupdatefns = uss.join(';');
-
- // if(constraints) {
- constraints.forEach(function(con) {
-
- var checkfn;
-
- if (con.type === 'PRIMARY KEY') {
- if (table.pk) {
- throw new Error('Primary key already exists');
- }
- var pk = (table.pk = {});
- pk.columns = con.columns;
- pk.onrightfns = pk.columns
- .map(function(columnid) {
- return "r['" + columnid + "']";
- })
- .join("+'`'+");
- pk.onrightfn = new Function('r', 'var y;return ' + pk.onrightfns);
- pk.hh = hash(pk.onrightfns);
- table.uniqs[pk.hh] = {};
- } else if (con.type === 'CHECK') {
-
- checkfn = new Function('r', 'var y;return ' + con.expression.toJS('r', ''));
- } else if (con.type === 'UNIQUE') {
-
- var uk = {};
- table.uk = table.uk || [];
- table.uk.push(uk);
- uk.columns = con.columns;
- uk.onrightfns = uk.columns
- .map(function(columnid) {
- return "r['" + columnid + "']";
- })
- .join("+'`'+");
- uk.onrightfn = new Function('r', 'var y;return ' + uk.onrightfns);
- uk.hh = hash(uk.onrightfns);
- table.uniqs[uk.hh] = {};
- } else if (con.type === 'FOREIGN KEY') {
-
- var col = table.xcolumns[con.columns[0]];
- var fk = con.fktable;
- if (con.fkcolumns && con.fkcolumns.length > 0) {
- fk.columnid = con.fkcolumns[0];
- }
- var fktable = alasql.databases[fk.databaseid || databaseid].tables[fk.tableid];
- if (typeof fk.columnid === 'undefined') {
- fk.columnid = fktable.pk.columns[0];
+ } else newtable.push(table.data[i]);
}
-
- checkfn = function(r) {
- var rr = {};
- if (typeof r[col.columnid] === 'undefined') {
- return true;
- }
- rr[fk.columnid] = r[col.columnid];
- var addr = fktable.pk.onrightfn(rr);
-
- if (!fktable.uniqs[fktable.pk.hh][addr]) {
-
- throw new Error(
- 'Foreign key "' +
- r[col.columnid] +
- '" is not found in table ' +
- fktable.tableid
- );
+ // table.data = table.data.filter(function(r){return !;});
+ table.data = newtable;
+
+ // Trigger prevent functionality
+ for (var tr in table.afterdelete) {
+ var trigger = table.afterdelete[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid]();
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
}
- return true;
- };
- }
- if (checkfn) {
- table.checks.push({fn: checkfn, id: con.constraintid, fk: con.type === 'FOREIGN KEY'});
- }
- });
+ }
- if (this.view && this.viewcolumns) {
- var self = this;
- this.viewcolumns.forEach(function(vcol, idx) {
- self.select.columns[idx].as = vcol.columnid;
- });
- }
+ var res = orignum - table.data.length;
+ if (alasql.options.autocommit && db.engineid && db.engineid == 'LOCALSTORAGE') {
+ alasql.engines[db.engineid].saveTableData(databaseid, tableid);
+ }
- //Used in 420from queryfn when table.view = true!
- if (this.view && this.select) {
- table.view = true;
+ if (cb) cb(res);
+ return res;
+ };
+ // .bind(query);
- table.select = this.select.compile(this.table.databaseid || databaseid);
- }
+ // if(!this.queries) return;
+ // query.queriesfn = this.queries.map(function(q) {
+ // return q.compile(alasql.useid);
+ // });
+ } else {
+ statement = function(params, cb) {
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].loadTableData(databaseid, tableid);
+ }
- if (db.engineid) {
+ var table = db.tables[tableid];
+ table.dirty = true;
+ var orignum = db.tables[tableid].data.length;
+ //table.deleteall();
+ // Delete all records from the array
+ db.tables[tableid].data.length = 0;
- return alasql.engines[db.engineid].createTable(
- this.table.databaseid || databaseid,
- tableid,
- this.ifnotexists,
- cb
- );
+ // Reset PRIMARY KEY and indexes
+ for (var ix in db.tables[tableid].uniqs) {
+ db.tables[tableid].uniqs[ix] = {};
+ }
- // return res1;
- }
+ for (var ix in db.tables[tableid].indices) {
+ db.tables[tableid].indices[ix] = {};
+ }
- // }
- // if(table.pk) {
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].saveTableData(databaseid, tableid);
+ }
- table.insert = function(r, orreplace) {
- var oldinserted = alasql.inserted;
- alasql.inserted = [r];
+ if (cb) cb(orignum);
+ return orignum;
+ };
+ }
- var table = this;
+ return statement;
+};
- var toreplace = false; // For INSERT OR REPLACE
+yy.Delete.prototype.execute = function(databaseid, params, cb) {
+ return this.compile(databaseid)(params, cb);
+};
- /*
- // IDENTINY or AUTO_INCREMENT
- // if(table.identities && table.identities.length>0) {
- // table.identities.forEach(function(ident){
- // r[ident.columnid] = ident.value;
- // });
- // }
+/*
+//
+// UPDATE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
*/
- // Trigger prevent functionality
- var prevent = false;
- for (var tr in table.beforeinsert) {
- var trigger = table.beforeinsert[tr];
- if (trigger) {
- if (trigger.funcid) {
- if (alasql.fn[trigger.funcid](r) === false) prevent = prevent || true;
- } else if (trigger.statement) {
- if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
- }
- }
- }
- if (prevent) return;
- // Trigger prevent functionality
- var escape = false;
- for (tr in table.insteadofinsert) {
- escape = true;
- trigger = table.insteadofinsert[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
- if (escape) return;
+/* global yy alasql */
- for (var columnid in table.identities) {
- var ident = table.identities[columnid];
+yy.Update = function(params) {
+ return yy.extend(this, params);
+};
+yy.Update.prototype.toString = function() {
+ var s = 'UPDATE ' + this.table.toString();
+ if (this.columns) s += ' SET ' + this.columns.toString();
+ if (this.where) s += ' WHERE ' + this.where.toString();
+ return s;
+};
- r[columnid] = ident.value;
+yy.SetColumn = function(params) {
+ return yy.extend(this, params);
+};
+yy.SetColumn.prototype.toString = function() {
+ return this.column.toString() + '=' + this.expression.toString();
+};
- }
+yy.Update.prototype.compile = function(databaseid) {
- if (table.checks && table.checks.length > 0) {
- table.checks.forEach(function(check) {
- if (!check.fn(r)) {
- // if(orreplace) toreplace=true; else
- throw new Error('Violation of CHECK constraint ' + (check.id || ''));
- }
+ databaseid = this.table.databaseid || databaseid;
+ var tableid = this.table.tableid;
+
+ if (this.where) {
+ if (this.exists) {
+ this.existsfn = this.exists.map(function(ex) {
+ var nq = ex.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+ if (this.queries) {
+ this.queriesfn = this.queries.map(function(q) {
+ var nq = q.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
});
}
- table.columns.forEach(function(column) {
- if (column.notnull && typeof r[column.columnid] === 'undefined') {
- throw new Error('Wrong NULL value in NOT NULL column ' + column.columnid);
- }
- });
- if (table.pk) {
- var pk = table.pk;
- var addr = pk.onrightfn(r);
+ var wherefn = new Function(
+ 'r,params,alasql',
+ 'var y;return ' + this.where.toJS('r', '')
+ ).bind(this);
+ }
- if (typeof table.uniqs[pk.hh][addr] !== 'undefined') {
+ // Construct update function
+ var s = alasql.databases[databaseid].tables[tableid].onupdatefns || '';
+ s += ';';
+ this.columns.forEach(function(col) {
+ s += "r['" + col.column.columnid + "']=" + col.expression.toJS('r', '') + ';';
+ });
- if (orreplace) toreplace = table.uniqs[pk.hh][addr];
- else
- throw new Error(
- 'Cannot insert record, because it already exists in primary key index'
- );
- }
- // table.uniqs[pk.hh][addr]=r;
+ var assignfn = new Function('r,params,alasql', 'var y;' + s);
+
+ var statement = function(params, cb) {
+ var db = alasql.databases[databaseid];
+
+ if (db.engineid && alasql.engines[db.engineid].updateTable) {
+
+ return alasql.engines[db.engineid].updateTable(
+ databaseid,
+ tableid,
+ assignfn,
+ wherefn,
+ params,
+ cb
+ );
}
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- var ukaddr = uk.onrightfn(r);
- if (typeof table.uniqs[uk.hh][ukaddr] !== 'undefined') {
- if (orreplace) toreplace = table.uniqs[uk.hh][ukaddr];
- else
- throw new Error(
- 'Cannot insert record, because it already exists in unique index'
- );
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].loadTableData(databaseid, tableid);
+ }
+
+ var table = db.tables[tableid];
+ if (!table) {
+ throw new Error("Table '" + tableid + "' not exists");
+ }
+ // table.dirty = true;
+ var numrows = 0;
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+ if (!wherefn || wherefn(table.data[i], params, alasql)) {
+ if (table.update) {
+ table.update(assignfn, i, params);
+ } else {
+ assignfn(table.data[i], params, alasql);
}
- // table.uniqs[uk.hh][ukaddr]=r;
- });
+ numrows++;
+ }
}
- if (toreplace) {
- // Do UPDATE!!!
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].saveTableData(databaseid, tableid);
+ }
+
+ if (cb) cb(numrows);
+ return numrows;
+ };
+ return statement;
+};
+
+yy.Update.prototype.execute = function(databaseid, params, cb) {
+ return this.compile(databaseid)(params, cb);
+};
+
+/*
+//
+// SET for Alasql.js
+// Date: 01.12.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* global alasql, yy */
+
+yy.Merge = function(params) {
+ return yy.extend(this, params);
+};
+yy.Merge.prototype.toString = function() {
+ var s = 'MERGE ';
+ s += this.into.tableid + ' ';
+ if (this.into.as) s += 'AS ' + this.into.as + ' ';
+ s += 'USING ' + this.using.tableid + ' ';
+ if (this.using.as) s += 'AS ' + this.using.as + ' ';
+ s += 'ON ' + this.on.toString() + ' ';
+ this.matches.forEach(function(m) {
+ s += 'WHEN ';
+ if (!m.matched) s += 'NOT ';
+ s += 'MATCHED ';
+ if (m.bytarget) s += 'BY TARGET ';
+ if (m.bysource) s += 'BY SOURCE ';
+ if (m.expr) s += 'AND' + ' ' + m.expr.toString() + ' ';
+ s += 'THEN ';
+ if (m.action.delete) s += 'DELETE ';
+ if (m.action.insert) {
+ s += 'INSERT ';
+ if (m.action.columns) s += '(' + m.action.columns.toString() + ') ';
+ if (m.action.values) s += 'VALUES (' + m.action.values.toString() + ') ';
+ if (m.action.defaultvalues) s += 'DEFAULT VALUES ';
+ }
+ if (m.action.update) {
+ s += 'UPDATE ';
+ s +=
+ m.action.update
+ .map(function(u) {
+ return u.toString();
+ })
+ .join(',') + ' ';
+ }
+ });
- table.update(
- function(t) {
- for (var f in r) t[f] = r[f];
- },
- table.data.indexOf(toreplace),
- params
- );
- } else {
- table.data.push(r);
+ return s;
+};
- // Final change before insert
+yy.Merge.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
- // Update indices
+ if (cb) res = cb(res);
+ return res;
+};
- for (var columnid in table.identities) {
- var ident = table.identities[columnid];
+/*
+//
+// UPDATE for Alasql.js
+// Date: 03.11.2014
+// Modified: 16.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
- ident.value += ident.step;
+/* global yy alasql */
- }
+// CREATE DATABASE databaseid
+yy.CreateDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateDatabase.prototype.toString = function() {
+ var s = 'CREATE';
+ if (this.engineid) s += ' ' + this.engineid;
+ s += ' DATABASE';
+ if (this.ifnotexists) s += ' IF NOT EXISTS';
+ s += ' ' + this.databaseid;
+ if (this.args && this.args.length > 0) {
+ s +=
+ '(' +
+ this.args
+ .map(function(arg) {
+ return arg.toString();
+ })
+ .join(', ') +
+ ')';
+ }
+ if (this.as) s += ' AS ' + this.as;
+ return s;
+};
+//yy.CreateDatabase.prototype.compile = returnUndefined;
+yy.CreateDatabase.prototype.execute = function(databaseid, params, cb) {
+ var args;
+ if (this.args && this.args.length > 0) {
+ args = this.args.map(function(arg) {
- if (table.pk) {
- var pk = table.pk;
- var addr = pk.onrightfn(r);
- table.uniqs[pk.hh][addr] = r;
- }
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- var ukaddr = uk.onrightfn(r);
- table.uniqs[uk.hh][ukaddr] = r;
- });
- }
+ return new Function('params,alasql', 'var y;return ' + arg.toJS())(params, alasql);
+ });
+ }
+ if (this.engineid) {
+ var res = alasql.engines[this.engineid].createDatabase(
+ this.databaseid,
+ this.args,
+ this.ifnotexists,
+ this.as,
+ cb
+ );
+ return res;
+ } else {
+ var dbid = this.databaseid;
+ if (alasql.databases[dbid]) {
+ throw new Error("Database '" + dbid + "' already exists");
}
+ var a = new alasql.Database(dbid);
+ var res = 1;
+ if (cb) return cb(res);
+ return res;
+ }
+};
- // Trigger prevent functionality
- for (var tr in table.afterinsert) {
- var trigger = table.afterinsert[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
+// CREATE DATABASE databaseid
+yy.AttachDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.AttachDatabase.prototype.toString = function(args) {
+ var s = 'ATTACH';
+ if (this.engineid) s += ' ' + this.engineid;
+ s += ' DATABASE' + ' ' + this.databaseid;
+ // TODO add params
+ if (args) {
+ s += '(';
+ if (args.length > 0) {
+ s += args
+ .map(function(arg) {
+ return arg.toString();
+ })
+ .join(', ');
}
- alasql.inserted = oldinserted;
- };
+ s += ')';
+ }
+ if (this.as) s += ' AS' + ' ' + this.as;
+ return s;
+};
+//yy.CreateDatabase.prototype.compile = returnUndefined;
+yy.AttachDatabase.prototype.execute = function(databaseid, params, cb) {
+ if (!alasql.engines[this.engineid]) {
+ throw new Error('Engine "' + this.engineid + '" is not defined.');
+ }
+ var res = alasql.engines[this.engineid].attachDatabase(
+ this.databaseid,
+ this.as,
+ this.args,
+ params,
+ cb
+ );
+ return res;
+};
- table.delete = function(index) {
- var table = this;
- var r = table.data[index];
+// CREATE DATABASE databaseid
+yy.DetachDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.DetachDatabase.prototype.toString = function() {
+ var s = 'DETACH';
+ s += ' DATABASE' + ' ' + this.databaseid;
+ return s;
+};
+//yy.CreateDatabase.prototype.compile = returnUndefined;
+yy.DetachDatabase.prototype.execute = function(databaseid, params, cb) {
+ if (!alasql.databases[this.databaseid].engineid) {
+ throw new Error(
+ 'Cannot detach database "' + this.engineid + '", because it was not attached.'
+ );
+ }
+ var res;
- // Prevent trigger
- var prevent = false;
- for (var tr in table.beforedelete) {
- var trigger = table.beforedelete[tr];
- if (trigger) {
- if (trigger.funcid) {
- if (alasql.fn[trigger.funcid](r) === false) prevent = prevent || true;
- } else if (trigger.statement) {
- if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
- }
- }
- }
- if (prevent) return false;
+ var dbid = this.databaseid;
- // Trigger prevent functionality
- var escape = false;
- for (var tr in table.insteadofdelete) {
- escape = true;
- var trigger = table.insteadofdelete[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
- if (escape) return;
+ if (dbid === alasql.DEFAULTDATABASEID) {
+ throw new Error('Drop of default database is prohibited');
+ }
- if (this.pk) {
- var pk = this.pk;
- var addr = pk.onrightfn(r);
- if (typeof this.uniqs[pk.hh][addr] === 'undefined') {
- throw new Error('Something wrong with primary key index on table');
- } else {
- this.uniqs[pk.hh][addr] = undefined;
- }
+ if (!alasql.databases[dbid]) {
+ if (!this.ifexists) {
+ throw new Error("Database '" + dbid + "' does not exist");
+ } else {
+ res = 0;
}
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- var ukaddr = uk.onrightfn(r);
- if (typeof table.uniqs[uk.hh][ukaddr] === 'undefined') {
- throw new Error('Something wrong with unique index on table');
- }
- table.uniqs[uk.hh][ukaddr] = undefined;
- });
+ } else {
+ delete alasql.databases[dbid];
+ if (dbid === alasql.useid) {
+ alasql.use();
}
- };
+ res = 1;
+ }
+ if (cb) cb(res);
+ return res;
+ // var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, cb);
+ // return res;
+};
+
+// USE DATABSE databaseid
+// USE databaseid
+yy.UseDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.UseDatabase.prototype.toString = function() {
+ return 'USE' + ' ' + 'DATABASE' + ' ' + this.databaseid;
+};
+//yy.UseDatabase.prototype.compile = returnUndefined;
+yy.UseDatabase.prototype.execute = function(databaseid, params, cb) {
+ var dbid = this.databaseid;
+ if (!alasql.databases[dbid]) {
+ throw new Error("Database '" + dbid + "' does not exist");
+ }
+ alasql.use(dbid);
+ var res = 1;
+ if (cb) cb(res);
+ return res;
+};
+
+// DROP DATABASE databaseid
+yy.DropDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.DropDatabase.prototype.toString = function() {
+ var s = 'DROP';
+ if (this.ifexists) s += ' IF EXISTS';
+ s += ' DATABASE ' + this.databaseid;
+ return s;
+};
+//yy.DropDatabase.prototype.compile = returnUndefined;
+yy.DropDatabase.prototype.execute = function(databaseid, params, cb) {
+ if (this.engineid) {
+ return alasql.engines[this.engineid].dropDatabase(this.databaseid, this.ifexists, cb);
+ }
+ var res;
- table.deleteall = function() {
- this.data.length = 0;
- if (this.pk) {
- // var r = this.data[i];
- this.uniqs[this.pk.hh] = {};
+ var dbid = this.databaseid;
+
+ if (dbid === alasql.DEFAULTDATABASEID) {
+ throw new Error('Drop of default database is prohibited');
+ }
+ if (!alasql.databases[dbid]) {
+ if (!this.ifexists) {
+ throw new Error("Database '" + dbid + "' does not exist");
+ } else {
+ res = 0;
}
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- table.uniqs[uk.hh] = {};
- });
+ } else {
+ if (alasql.databases[dbid].engineid) {
+ throw new Error(
+ "Cannot drop database '" + dbid + "', because it is attached. Detach it."
+ );
}
- };
-
- table.update = function(assignfn, i, params) {
- // TODO: Analyze the speed
- var r = cloneDeep(this.data[i]);
- var pk;
- // PART 1 - PRECHECK
- if (this.pk) {
- pk = this.pk;
- pk.pkaddr = pk.onrightfn(r, params);
- if (typeof this.uniqs[pk.hh][pk.pkaddr] === 'undefined') {
- throw new Error('Something wrong with index on table');
- }
- }
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- uk.ukaddr = uk.onrightfn(r);
- if (typeof table.uniqs[uk.hh][uk.ukaddr] === 'undefined') {
- throw new Error('Something wrong with unique index on table');
- }
- });
+ delete alasql.databases[dbid];
+ if (dbid === alasql.useid) {
+ alasql.use();
}
+ res = 1;
+ }
+ if (cb) cb(res);
+ return res;
+};
- assignfn(r, params, alasql);
+/*
+//
+// SET for Alasql.js
+// Date: 01.12.2014
+// (c) 2014, Andrey Gershun
+//
+*/
- // Prevent trigger
- var prevent = false;
- for (var tr in table.beforeupdate) {
- var trigger = table.beforeupdate[tr];
- if (trigger) {
- if (trigger.funcid) {
- if (alasql.fn[trigger.funcid](this.data[i], r) === false)
- prevent = prevent || true;
- } else if (trigger.statement) {
- if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
+yy.Declare = function(params) {
+ return yy.extend(this, params);
+};
+yy.Declare.prototype.toString = function() {
+ var s = 'DECLARE ';
+ if (this.declares && this.declares.length > 0) {
+ s = this.declares
+ .map(function(declare) {
+ var s = '';
+ s += '@' + declare.variable + ' ';
+ s += declare.dbtypeid;
+ if (this.dbsize) {
+ s += '(' + this.dbsize;
+ if (this.dbprecision) {
+ s += ',' + this.dbprecision;
+ }
+ s += ')';
}
- }
- }
- if (prevent) return false;
-
- // Trigger prevent functionality
- var escape = false;
- for (var tr in table.insteadofupdate) {
- escape = true;
- var trigger = table.insteadofupdate[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](this.data[i], r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
+ if (declare.expression) {
+ s += ' = ' + declare.expression.toString();
}
+ return s;
+ })
+ .join(',');
+ }
+ return s;
+};
+
+yy.Declare.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ if (this.declares && this.declares.length > 0) {
+ this.declares.map(function(declare) {
+ var dbtypeid = declare.dbtypeid;
+ if (!alasql.fn[dbtypeid]) {
+ dbtypeid = dbtypeid.toUpperCase();
}
- }
- if (escape) return;
+ alasql.declares[declare.variable] = {
+ dbtypeid: dbtypeid,
+ dbsize: declare.dbsize,
+ dbprecision: declare.dbprecision,
+ };
- // PART 2 - POST CHECK
- if (table.checks && table.checks.length > 0) {
- table.checks.forEach(function(check) {
- if (!check.fn(r)) {
- throw new Error('Violation of CHECK constraint ' + (check.id || ''));
- }
- });
- }
+ // Set value
+ if (declare.expression) {
- table.columns.forEach(function(column) {
- if (column.notnull && typeof r[column.columnid] === 'undefined') {
- throw new Error('Wrong NULL value in NOT NULL column ' + column.columnid);
+ alasql.vars[declare.variable] = new Function(
+ 'params,alasql',
+ 'return ' + declare.expression.toJS('({})', '', null)
+ )(params, alasql);
+ if (alasql.declares[declare.variable]) {
+ alasql.vars[declare.variable] = alasql.stdfn.CONVERT(
+ alasql.vars[declare.variable],
+ alasql.declares[declare.variable]
+ );
+ }
}
});
- if (this.pk) {
- pk.newpkaddr = pk.onrightfn(r);
- if (
- typeof this.uniqs[pk.hh][pk.newpkaddr] !== 'undefined' &&
- pk.newpkaddr !== pk.pkaddr
- ) {
- throw new Error('Record already exists');
- }
- }
+ }
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- uk.newukaddr = uk.onrightfn(r);
- if (
- typeof table.uniqs[uk.hh][uk.newukaddr] !== 'undefined' &&
- uk.newukaddr !== uk.ukaddr
- ) {
- throw new Error('Record already exists');
- }
- });
- }
+/*
+//
+// SHOW for Alasql.js
+// Date: 19.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
- // PART 3 UPDATE
- if (this.pk) {
- this.uniqs[pk.hh][pk.pkaddr] = undefined;
- this.uniqs[pk.hh][pk.newpkaddr] = r;
+yy.ShowDatabases = function(params) {
+ return yy.extend(this, params);
+};
+yy.ShowDatabases.prototype.toString = function() {
+ var s = 'SHOW DATABASES';
+ if (this.like) s += 'LIKE ' + this.like.toString();
+ return s;
+};
+yy.ShowDatabases.prototype.execute = function(databaseid, params, cb) {
+ if (this.engineid) {
+ return alasql.engines[this.engineid].showDatabases(this.like, cb);
+ } else {
+ var self = this;
+ var res = [];
+ for (var dbid in alasql.databases) {
+ res.push({databaseid: dbid});
}
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- table.uniqs[uk.hh][uk.ukaddr] = undefined;
- table.uniqs[uk.hh][uk.newukaddr] = r;
+ if (self.like && res && res.length > 0) {
+ res = res.filter(function(d) {
+ // return d.databaseid.match(new RegExp((self.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g'));
+ return alasql.utils.like(self.like.value, d.databaseid);
});
}
+ if (cb) cb(res);
+ return res;
+ }
+};
- this.data[i] = r;
-
- // Trigger prevent functionality
- for (var tr in table.afterupdate) {
- var trigger = table.afterupdate[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](this.data[i], r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
- };
-
- var res;
+yy.ShowTables = function(params) {
+ return yy.extend(this, params);
+};
+yy.ShowTables.prototype.toString = function() {
+ var s = 'SHOW TABLES';
+ if (this.databaseid) s += ' FROM ' + this.databaseid;
+ if (this.like) s += ' LIKE ' + this.like.toString();
+ return s;
+};
+yy.ShowTables.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[this.databaseid || databaseid];
- if (!alasql.options.nocount) {
- res = 1;
+ var self = this;
+ var res = [];
+ for (var tableid in db.tables) {
+ res.push({tableid: tableid});
+ }
+ if (self.like && res && res.length > 0) {
+ res = res.filter(function(d) {
+ //return d.tableid.match(new RegExp((self.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g'));
+ return alasql.utils.like(self.like.value, d.tableid);
+ });
}
-
- if (cb) res = cb(res);
+ if (cb) cb(res);
return res;
};
-//
-// Date functions
-//
-// (c) 2014, Andrey Gershun
-//
-
-/** Standard JavaScript data types */
-
-alasql.fn.Date = Object;
-alasql.fn.Date = Date;
-alasql.fn.Number = Number;
-alasql.fn.String = String;
-alasql.fn.Boolean = Boolean;
-
-/** Extend Object with properties */
-stdfn.EXTEND = alasql.utils.extend;
-
-stdfn.CHAR = String.fromCharCode.bind(String);
-stdfn.ASCII = function(a) {
- return a.charCodeAt(0);
-};
-
-/**
- Return first non-null argument
- See https://msdn.microsoft.com/en-us/library/ms190349.aspx
-*/
-stdfn.COALESCE = function() {
- for (var i = 0; i < arguments.length; i++) {
- if (typeof arguments[i] == 'undefined') continue;
- if (typeof arguments[i] == 'number' && isNaN(arguments[i])) continue;
- return arguments[i];
- }
- return undefined;
-};
-
-stdfn.USER = function() {
- return 'alasql';
-};
-
-stdfn.OBJECT_ID = function(objid) {
- return !!alasql.tables[objid];
-};
-
-stdfn.DATE = function(d) {
- if (/\d{8}/.test(d)) return new Date(+d.substr(0, 4), +d.substr(4, 2) - 1, +d.substr(6, 2));
- return new Date(d);
-};
-
-stdfn.NOW = function() {
- var d = new Date();
- var s =
- d.getFullYear() +
- '.' +
- ('0' + (d.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + d.getDate()).substr(-2);
- s +=
- ' ' +
- ('0' + d.getHours()).substr(-2) +
- ':' +
- ('0' + d.getMinutes()).substr(-2) +
- ':' +
- ('0' + d.getSeconds()).substr(-2);
- s += '.' + ('00' + d.getMilliseconds()).substr(-3);
- return s;
-};
-
-stdfn.GETDATE = stdfn.NOW;
-stdfn.CURRENT_TIMESTAMP = stdfn.NOW;
-
-stdfn.SECOND = function(d) {
- var d = new Date(d);
- return d.getSeconds();
-};
-
-stdfn.MINUTE = function(d) {
- var d = new Date(d);
- return d.getMinutes();
-};
-
-stdfn.HOUR = function(d) {
- var d = new Date(d);
- return d.getHours();
-};
-
-stdfn.DAYOFWEEK = stdfn.WEEKDAY = function(d) {
- var d = new Date(d);
- return d.getDay();
-};
-
-stdfn.DAY = stdfn.DAYOFMONTH = function(d) {
- var d = new Date(d);
- return d.getDate();
-};
-
-stdfn.MONTH = function(d) {
- var d = new Date(d);
- return d.getMonth() + 1;
-};
-
-stdfn.YEAR = function(d) {
- var d = new Date(d);
- return d.getFullYear();
-};
-
-var PERIODS = {
- year: 1000 * 3600 * 24 * 365,
- quarter: 1000 * 3600 * 24 * 365 / 4,
- month: 1000 * 3600 * 24 * 30,
- week: 1000 * 3600 * 24 * 7,
- day: 1000 * 3600 * 24,
- dayofyear: 1000 * 3600 * 24,
- weekday: 1000 * 3600 * 24,
- hour: 1000 * 3600,
- minute: 1000 * 60,
- second: 1000,
- millisecond: 1,
- microsecond: 0.001,
-};
-
-alasql.stdfn.DATEDIFF = function(period, d1, d2) {
- var interval = new Date(d2).getTime() - new Date(d1).getTime();
- return interval / PERIODS[period.toLowerCase()];
-};
-
-alasql.stdfn.DATEADD = function(period, interval, d) {
- var nd = new Date(d).getTime() + interval * PERIODS[period.toLowerCase()];
- return new Date(nd);
-};
-
-alasql.stdfn.INTERVAL = function(interval, period) {
- return interval * PERIODS[period.toLowerCase()];
-};
-
-alasql.stdfn.DATE_ADD = alasql.stdfn.ADDDATE = function(d, interval) {
- var nd = new Date(d).getTime() + interval;
- return new Date(nd);
-};
-
-alasql.stdfn.DATE_SUB = alasql.stdfn.SUBDATE = function(d, interval) {
- var nd = new Date(d).getTime() - interval;
- return new Date(nd);
-};
-
-/*
-//
-// DROP TABLE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.DropTable = function(params) {
+yy.ShowColumns = function(params) {
return yy.extend(this, params);
};
-yy.DropTable.prototype.toString = function() {
- var s = 'DROP' + ' ';
- if (this.view) s += 'VIEW';
- else s += 'TABLE';
- if (this.ifexists) s += ' IF EXISTS';
- s += ' ' + this.tables.toString();
+yy.ShowColumns.prototype.toString = function() {
+ var s = 'SHOW COLUMNS';
+ if (this.table.tableid) s += ' FROM ' + this.table.tableid;
+ if (this.databaseid) s += ' FROM ' + this.databaseid;
return s;
};
-// DROP TABLE
-/**
- Drop tables
- @param {string} databaseid Database id
- @param {object} params Parameters
- @param {callback} cb Callback function
- @return Number of dropped tables
- @example
- DROP TABLE one;
- DROP TABLE IF NOT EXISTS two, three;
-*/
-yy.DropTable.prototype.execute = function(databaseid, params, cb) {
- var ifexists = this.ifexists;
- var res = 0; // No tables removed
- var count = 0;
- var tlen = this.tables.length;
-
- // For each table in the list
- this.tables.forEach(function(table) {
- var db = alasql.databases[table.databaseid || databaseid];
- var tableid = table.tableid;
+yy.ShowColumns.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[this.databaseid || databaseid];
+ var table = db.tables[this.table.tableid];
- /** @todo Test with AUTOCOMMIT flag is ON */
- /** @todo Test with IndexedDB and multiple tables */
+ if (table && table.columns) {
+ var res = table.columns.map(function(col) {
+ return {columnid: col.columnid, dbtypeid: col.dbtypeid, dbsize: col.dbsize};
+ });
+ if (cb) cb(res);
+ return res;
+ } else {
+ if (cb) cb([]);
+ return [];
+ }
+};
- if (!ifexists || (ifexists && db.tables[tableid])) {
- if (!db.tables[tableid]) {
- if (!alasql.options.dropifnotexists) {
- throw new Error(
- "Can not drop table '" +
- table.tableid +
- "', because it does not exist in the database."
- );
- }
- } else {
- if (db.engineid /*&& alasql.options.autocommit*/) {
- alasql.engines[db.engineid].dropTable(
- table.databaseid || databaseid,
- tableid,
- ifexists,
- function(res1) {
- delete db.tables[tableid];
- res += res1;
- count++;
- if (count == tlen && cb) cb(res);
- }
- );
- } else {
- delete db.tables[tableid];
- res++;
- count++;
- if (count == tlen && cb) cb(res);
- }
- }
- } else {
- count++;
- if (count == tlen && cb) cb(res);
+yy.ShowIndex = function(params) {
+ return yy.extend(this, params);
+};
+yy.ShowIndex.prototype.toString = function() {
+ var s = 'SHOW INDEX';
+ if (this.table.tableid) s += ' FROM ' + this.table.tableid;
+ if (this.databaseid) s += ' FROM ' + this.databaseid;
+ return s;
+};
+yy.ShowIndex.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[this.databaseid || databaseid];
+ var table = db.tables[this.table.tableid];
+ var res = [];
+ if (table && table.indices) {
+ for (var ind in table.indices) {
+ res.push({hh: ind, len: Object.keys(table.indices[ind]).length});
}
- });
- // if(cb) res = cb(res);
+ }
+
+ if (cb) cb(res);
return res;
};
-yy.TruncateTable = function(params) {
+yy.ShowCreateTable = function(params) {
return yy.extend(this, params);
};
-yy.TruncateTable.prototype.toString = function() {
- var s = 'TRUNCATE TABLE';
- s += ' ' + this.table.toString();
+yy.ShowCreateTable.prototype.toString = function() {
+ var s = 'SHOW CREATE TABLE ' + this.table.tableid;
+ if (this.databaseid) s += ' FROM ' + this.databaseid;
return s;
};
-
-yy.TruncateTable.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[this.table.databaseid || databaseid];
- var tableid = this.table.tableid;
- if (db.engineid) {
- return alasql.engines[db.engineid].truncateTable(
- this.table.databaseid || databaseid,
- tableid,
- this.ifexists,
- cb
- );
- }
- if (db.tables[tableid]) {
- db.tables[tableid].data = [];
+yy.ShowCreateTable.prototype.execute = function(databaseid) {
+ var db = alasql.databases[this.databaseid || databaseid];
+ var table = db.tables[this.table.tableid];
+ if (table) {
+ var s = 'CREATE TABLE ' + this.table.tableid + ' (';
+ var ss = [];
+ if (table.columns) {
+ table.columns.forEach(function(col) {
+ var a = col.columnid + ' ' + col.dbtypeid;
+ if (col.dbsize) a += '(' + col.dbsize + ')';
+ if (col.primarykey) a += ' PRIMARY KEY';
+ // TODO extend
+ ss.push(a);
+ });
+ s += ss.join(', ');
+ }
+ s += ')';
+ return s;
} else {
- throw new Error('Cannot truncate table becaues it does not exist');
+ throw new Error('There is no such table "' + this.table.tableid + '"');
}
- return cb ? cb(0) : 0;
};
/*
//
-// CREATE VERTEX for AlaSQL
-// Date: 21.04.2015
-// (c) 2015, Andrey Gershun
+// SET for Alasql.js
+// Date: 01.12.2014
+// (c) 2014, Andrey Gershun
//
*/
-yy.CreateVertex = function(params) {
+yy.SetVariable = function(params) {
return yy.extend(this, params);
};
-yy.CreateVertex.prototype.toString = function() {
- var s = 'CREATE VERTEX ';
- if (this.class) {
- s += this.class + ' ';
- }
- if (this.sharp) {
- s += '#' + this.sharp + ' ';
+yy.SetVariable.prototype.toString = function() {
+ var s = 'SET ';
+ if (typeof this.value != 'undefined')
+ s += this.variable.toUpperCase() + ' ' + (this.value ? 'ON' : 'OFF');
+ if (this.expression) s += this.method + this.variable + ' = ' + this.expression.toString();
+ return s;
+};
+
+yy.SetVariable.prototype.execute = function(databaseid, params, cb) {
+
+ if (typeof this.value != 'undefined') {
+ var val = this.value;
+ if (val == 'ON') val = true;
+ else if (val == 'OFF') val = false;
+ // if(this.method == '@') {
+ alasql.options[this.variable] = val;
+ // } else {
+ // params[this.variable] = val;
+ // }
+ } else if (this.expression) {
+ if (this.exists) {
+ this.existsfn = this.exists.map(function(ex) {
+ var nq = ex.compile(databaseid);
+ if (nq.query && !nq.query.modifier) nq.query.modifier = 'RECORDSET';
+ return nq;
+ // return ex.compile(databaseid);
+ // TODO Include modifier
+ });
+ }
+ if (this.queries) {
+ this.queriesfn = this.queries.map(function(q) {
+ var nq = q.compile(databaseid);
+ if (nq.query && !nq.query.modifier) nq.query.modifier = 'RECORDSET';
+ return nq;
+ // TODO Include modifier
+ });
+ }
+
+ var res = new Function(
+ 'params,alasql',
+ 'return ' + this.expression.toJS('({})', '', null)
+ ).bind(this)(params, alasql);
+ if (alasql.declares[this.variable]) {
+ res = alasql.stdfn.CONVERT(res, alasql.declares[this.variable]);
+ }
+ if (this.props && this.props.length > 0) {
+ if (this.method == '@') {
+ var fs = "alasql.vars['" + this.variable + "']";
+ } else {
+ var fs = "params['" + this.variable + "']";
+ }
+ fs += this.props
+ .map(function(prop) {
+ if (typeof prop == 'string') {
+ return "['" + prop + "']";
+ } else if (typeof prop == 'number') {
+ return '[' + prop + ']';
+ } else {
+
+ return '[' + prop.toJS() + ']';
+ // } else {
+
+ // throw new Error('Wrong SET property');
+ }
+ })
+ .join();
+
+ new Function('value,params,alasql', 'var y;' + fs + '=value')(res, params, alasql);
+ } else {
+ if (this.method == '@') {
+ alasql.vars[this.variable] = res;
+ } else {
+ params[this.variable] = res;
+ }
+ }
}
- if (this.sets) {
- s += this.sets.toString();
- } else if (this.content) {
- s += this.content.toString();
- } else if (this.select) {
- s += this.select.toString();
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+// Console functions
+
+/* global alasql, yy */
+
+alasql.test = function(name, times, fn) {
+ if (arguments.length === 0) {
+ alasql.log(alasql.con.results);
+ return;
}
- return s;
-};
+ var tm = Date.now();
-yy.CreateVertex.prototype.toJS = function(context) {
+ if (arguments.length === 1) {
+ fn();
+ alasql.con.log(Date.now() - tm);
+ return;
+ }
- var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
- // var s = '';
- return s;
+ if (arguments.length === 2) {
+ fn = times;
+ times = 1;
+ }
+
+ for (var i = 0; i < times; i++) {
+ fn();
+ }
+ alasql.con.results[name] = Date.now() - tm;
};
-// CREATE TABLE
+// Console
+// alasql.log = function(sql, params) {
-yy.CreateVertex.prototype.compile = function(databaseid) {
- var dbid = databaseid;
+// };
- // CREATE VERTEX #id
- var sharp = this.sharp;
+/* global alasql, yy, utils */
- // CREATE VERTEX "Name"
- if (typeof this.name !== 'undefined') {
- var s = 'x.name=' + this.name.toJS();
- var namefn = new Function('x', s);
+// Console
+alasql.log = function(sql, params) {
+ var olduseid = alasql.useid;
+ var target = alasql.options.logtarget;
+ // For node other
+ if (utils.isNode) {
+ target = 'console';
}
- if (this.sets && this.sets.length > 0) {
- var s = this.sets
- .map(function(st) {
- return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
- })
- .join(';');
- var setfn = new Function('x,params,alasql', s);
+ var res;
+ if (typeof sql === 'string') {
+ res = alasql(sql, params);
+ } else {
+ res = sql;
}
- // Todo: check for content, select and default
-
- var statement = function(params, cb) {
- var res;
+ // For Node and console.output
+ if (target === 'console' || utils.isNode) {
+ if (typeof sql === 'string' && alasql.options.logprompt) {
+ console.log(olduseid + '>', sql);
+ }
- // CREATE VERTEX without parameters
- var db = alasql.databases[dbid];
- var id;
- if (typeof sharp !== 'undefined') {
- id = sharp;
+ if (Array.isArray(res)) {
+ if (console.table) {
+ // For Chrome and other consoles
+ console.table(res);
+ } else {
+ // Add print procedure
+ console.log(JSONtoString(res));
+ }
} else {
- id = db.counter++;
+ console.log(JSONtoString(res));
}
- var vertex = {$id: id, $node: 'VERTEX'};
- db.objects[vertex.$id] = vertex;
- res = vertex;
- if (namefn) {
- namefn(vertex);
+ } else {
+ var el;
+ if (target === 'output') {
+ el = document.getElementsByTagName('output')[0];
+ } else {
+ if (typeof target === 'string') {
+ el = document.getElementById(target);
+ } else {
+ // in case of DOM
+ el = target;
+ }
}
- if (setfn) {
- setfn(vertex, params, alasql);
+
+ var s = '';
+
+ if (typeof sql === 'string' && alasql.options.logprompt) {
+ // s += ''+olduseid+'> '+alasql.pretty(sql)+'
';
+ s += '' + alasql.pretty(sql) + ' ';
}
- if (cb) {
- res = cb(res);
+ if (Array.isArray(res)) {
+ if (res.length === 0) {
+ s += '[ ]
';
+ } else if (typeof res[0] !== 'object' || Array.isArray(res[0])) {
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ s += '' + loghtml(res[i]) + '
';
+ }
+ } else {
+ s += loghtml(res);
+ }
+ } else {
+ s += loghtml(res);
}
- return res;
- };
- return statement;
+ el.innerHTML += s;
+ }
};
-yy.CreateEdge = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateEdge.prototype.toString = function() {
+alasql.clear = function() {
+ var target = alasql.options.logtarget;
+ // For node other
- var s = 'CREATE EDGE' + ' ';
- if (this.class) {
- s += this.class + ' ';
+ if (utils.isNode || utils.isMeteorServer) {
+ if (console.clear) {
+ console.clear();
+ }
+ } else {
+ var el;
+ if (target === 'output') {
+ el = document.getElementsByTagName('output')[0];
+ } else {
+ if (typeof target === 'string') {
+ el = document.getElementById(target);
+ } else {
+ // in case of DOM
+ el = target;
+ }
+ }
+ el.innerHTML = '';
}
- // todo: SET
- // todo: CONTENT
- // todo: SELECT
- return s;
-};
-
-yy.CreateEdge.prototype.toJS = function(context) {
- var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
- return s;
};
-// CREATE TABLE
-
-yy.CreateEdge.prototype.compile = function(databaseid) {
- var dbid = databaseid;
- var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
- var tofn = new Function('params,alasql', 'var y;return ' + this.to.toJS());
-
- // CREATE VERTEX "Name"
- if (typeof this.name !== 'undefined') {
- var s = 'x.name=' + this.name.toJS();
- var namefn = new Function('x', s);
- }
+alasql.write = function(s) {
- if (this.sets && this.sets.length > 0) {
- var s = this.sets
- .map(function(st) {
- return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
- })
- .join(';');
- var setfn = new Function('x,params,alasql', 'var y;' + s);
+ var target = alasql.options.logtarget;
+ // For node other
+ if (utils.isNode || utils.isMeteorServer) {
+ if (console.log) {
+ console.log(s);
+ }
+ } else {
+ var el;
+ if (target === 'output') {
+ el = document.getElementsByTagName('output')[0];
+ } else {
+ if (typeof target === 'string') {
+ el = document.getElementById(target);
+ } else {
+ // in case of DOM
+ el = target;
+ }
+ }
+ el.innerHTML += s;
}
+};
- /*
- todo: handle content, select and default
- else if(this.content) {
+function loghtml(res) {
- } else if(this.select) {
+ var s = '';
+ if (res === undefined) {
+ s += 'undefined';
+ } else if (Array.isArray(res)) {
+ s += '';
+ s += '';
+ var cols = [];
+ for (var colid in res[0]) {
+ cols.push(colid);
+ }
+ s += '#';
+ cols.forEach(function(colid) {
+ s += ' ' + colid;
+ });
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ s += ' ' + (i + 1);
+ cols.forEach(function(colid) {
+ s += ' ';
+ if (res[i][colid] == +res[i][colid]) {
+ // jshint ignore:line
+ s += '';
+ if (typeof res[i][colid] === 'undefined') {
+ s += 'NULL';
+ } else {
+ s += res[i][colid];
+ }
+ s += '
';
+ } else {
+ if (typeof res[i][colid] === 'undefined') {
+ s += 'NULL';
+ } else if (typeof res[i][colid] === 'string') {
+ s += res[i][colid];
+ } else {
+ s += JSONtoString(res[i][colid]);
+ }
+ // s += res[i][colid];
+ }
+ });
+ }
+ s += '
';
} else {
+ s += '' + JSONtoString(res) + '
';
}
- */
+ // if() {}
- var statement = function(params, cb) {
- var res = 0;
- // CREATE VERTEX without parameters
- var db = alasql.databases[dbid];
- var edge = {$id: db.counter++, $node: 'EDGE'};
- var v1 = fromfn(params, alasql);
- var v2 = tofn(params, alasql);
- // Set link
- edge.$in = [v1.$id];
- edge.$out = [v2.$id];
- // Set sides
- if (v1.$out === undefined) {
- v1.$out = [];
- }
- v1.$out.push(edge.$id);
+ // if(typeof res == 'object') {
+ // s += ''+JSON.stringify(res)+'
';
+ // } else {
+ // }
+ return s;
+}
- if (typeof v2.$in === undefined) {
- v2.$in = [];
- }
- v2.$in.push(edge.$id);
+function scrollTo(element, to, duration) {
+ if (duration <= 0) {
+ return;
+ }
+ var difference = to - element.scrollTop;
+ var perTick = difference / duration * 10;
- // Save in objects
- db.objects[edge.$id] = edge;
- res = edge;
- if (namefn) {
- namefn(edge);
+ setTimeout(function() {
+ if (element.scrollTop === to) {
+ return;
}
+ element.scrollTop = element.scrollTop + perTick;
+ scrollTo(element, to, duration - 10);
+ }, 10);
+}
- if (setfn) {
- setfn(edge, params, alasql);
- }
+alasql.prompt = function(el, useidel, firstsql) {
+ if (utils.isNode) {
+ throw new Error('The prompt not realized for Node.js');
+ }
- if (cb) {
- res = cb(res);
- }
+ var prompti = 0;
- return res;
- };
- return statement;
-};
+ if (typeof el === 'string') {
+ el = document.getElementById(el);
+ }
-yy.CreateGraph = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateGraph.prototype.toString = function() {
- var s = 'CREATE GRAPH' + ' ';
- if (this.class) {
- s += this.class + ' ';
+ if (typeof useidel === 'string') {
+ useidel = document.getElementById(useidel);
}
- return s;
-};
-yy.CreateGraph.prototype.execute = function(databaseid, params, cb) {
- var res = [];
- if (this.from) {
- if (alasql.from[this.from.funcid]) {
- this.graph = alasql.from[this.from.funcid.toUpperCase()];
+ useidel.textContent = alasql.useid;
+
+ if (firstsql) {
+ alasql.prompthistory.push(firstsql);
+ prompti = alasql.prompthistory.length;
+ try {
+ var tm = Date.now();
+ alasql.log(firstsql);
+ alasql.write('' + (Date.now() - tm) + ' ms
');
+ } catch (err) {
+ alasql.write('' + olduseid + '> ' + sql + '
');
+ alasql.write('' + err + '
');
}
}
- // stop;
- this.graph.forEach(function(g) {
- if (g.source) {
- // GREATE EDGE
- var e = {};
- if (typeof g.as !== 'undefined') {
- alasql.vars[g.as] = e;
- }
+ var y = el.getBoundingClientRect().top + document.getElementsByTagName('body')[0].scrollTop;
+ scrollTo(document.getElementsByTagName('body')[0], y, 500);
- if (typeof g.prop !== 'undefined') {
- // e[g.prop] = e;
- // v.$id = g.prop; // We do not create $id for edge automatically
- e.name = g.prop;
- }
- if (typeof g.sharp !== 'undefined') {
- e.$id = g.sharp;
- }
- if (typeof g.name !== 'undefined') {
- e.name = g.name;
- }
- if (typeof g.class !== 'undefined') {
- e.$class = g.class;
+ el.onkeydown = function(event) {
+ if (event.which === 13) {
+ var sql = el.value;
+ var olduseid = alasql.useid;
+ el.value = '';
+ alasql.prompthistory.push(sql);
+ prompti = alasql.prompthistory.length;
+ try {
+ var tm = Date.now();
+ alasql.log(sql);
+ alasql.write('
' + (Date.now() - tm) + ' ms
');
+ } catch (err) {
+ alasql.write('' + olduseid + '> ' + alasql.pretty(sql, false) + '
');
+ alasql.write('' + err + '
');
}
+ el.focus();
- var db = alasql.databases[databaseid];
- if (typeof e.$id === 'undefined') {
- e.$id = db.counter++;
- }
- e.$node = 'EDGE';
- if (typeof g.json !== 'undefined') {
- extend(
- e,
- new Function('params,alasql', 'var y;return ' + g.json.toJS())(params, alasql)
- );
+ useidel.textContent = alasql.useid;
+ var y =
+ el.getBoundingClientRect().top + document.getElementsByTagName('body')[0].scrollTop;
+ scrollTo(document.getElementsByTagName('body')[0], y, 500);
+ } else if (event.which === 38) {
+ prompti--;
+ if (prompti < 0) {
+ prompti = 0;
}
-
- var v1;
- if (g.source.vars) {
- var vo = alasql.vars[g.source.vars];
- if (typeof vo === 'object') {
- v1 = vo;
- } else {
- v1 = db.objects[vo];
- }
- } else {
- var av1 = g.source.sharp;
- if (typeof av1 === 'undefined') {
- av1 = g.source.prop;
- }
- v1 = alasql.databases[databaseid].objects[av1];
- if (
- typeof v1 === 'undefined' &&
- alasql.options.autovertex &&
- (typeof g.source.prop !== 'undefined' || typeof g.source.name !== 'undefined')
- ) {
- v1 = findVertex(g.source.prop || g.source.name);
- if (typeof v1 === 'undefined') {
- v1 = createVertex(g.source);
- }
- }
+ if (alasql.prompthistory[prompti]) {
+ el.value = alasql.prompthistory[prompti];
+ event.preventDefault();
}
-
- var v2;
- if (g.source.vars) {
- var vo = alasql.vars[g.target.vars];
- if (typeof vo === 'object') {
- v2 = vo;
- } else {
- v2 = db.objects[vo];
- }
- } else {
- var av2 = g.target.sharp;
- if (typeof av2 === 'undefined') {
- av2 = g.target.prop;
- }
- v2 = alasql.databases[databaseid].objects[av2];
- if (
- typeof v2 === 'undefined' &&
- alasql.options.autovertex &&
- (typeof g.target.prop !== 'undefined' || typeof g.target.name !== 'undefined')
- ) {
- v2 = findVertex(g.target.prop || g.target.name);
- if (typeof v2 === 'undefined') {
- v2 = createVertex(g.target);
- }
- }
+ } else if (event.which === 40) {
+ prompti++;
+ if (prompti >= alasql.prompthistory.length) {
+ prompti = alasql.prompthistory.length;
+ el.value = '';
+ } else if (alasql.prompthistory[prompti]) {
+ el.value = alasql.prompthistory[prompti];
+ event.preventDefault();
}
+ }
+ };
+};
- // Set link
- e.$in = [v1.$id];
- e.$out = [v2.$id];
- // Set sides
- if (typeof v1.$out === 'undefined') {
- v1.$out = [];
- }
- v1.$out.push(e.$id);
- if (typeof v2.$in === 'undefined') {
- v2.$in = [];
- }
- v2.$in.push(e.$id);
+/*
+//
+// Commit for Alasql.js
+// Date: 01.12.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+yy.BeginTransaction = function(params) {
+ return yy.extend(this, params);
+};
+yy.BeginTransaction.prototype.toString = function() {
+ return 'BEGIN TRANSACTION';
+};
- db.objects[e.$id] = e;
- if (typeof e.$class !== 'undefined') {
- if (typeof alasql.databases[databaseid].tables[e.$class] === 'undefined') {
- throw new Error('No such class. Pleace use CREATE CLASS');
- } else {
- // TODO - add insert()
- alasql.databases[databaseid].tables[e.$class].data.push(e);
- }
- }
+yy.BeginTransaction.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ if (alasql.databases[databaseid].engineid) {
+ return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid, cb);
+ } else {
+ // alasql commit!!!
+ }
+ if (cb) cb(res);
+ return res;
+};
- res.push(e.$id);
- } else {
- createVertex(g);
- }
- });
+yy.CommitTransaction = function(params) {
+ return yy.extend(this, params);
+};
+yy.CommitTransaction.prototype.toString = function() {
+ return 'COMMIT TRANSACTION';
+};
- if (cb) {
- res = cb(res);
+yy.CommitTransaction.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ if (alasql.databases[databaseid].engineid) {
+ return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid, cb);
+ } else {
+ // alasql commit!!!
}
+ if (cb) cb(res);
return res;
+};
- // Find vertex by name
- function findVertex(name) {
- var objects = alasql.databases[alasql.useid].objects;
- for (var k in objects) {
- if (objects[k].name === name) {
- return objects[k];
- }
- }
- return undefined;
+yy.RollbackTransaction = function(params) {
+ return yy.extend(this, params);
+};
+yy.RollbackTransaction.prototype.toString = function() {
+ return 'ROLLBACK TRANSACTION';
+};
+
+yy.RollbackTransaction.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ if (alasql.databases[databaseid].engineid) {
+ return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid, cb);
+ } else {
+ // alasql commit!!!
}
+ if (cb) cb(res);
+ return res;
+};
- function createVertex(g) {
- // GREATE VERTEX
- var v = {};
- if (typeof g.as !== 'undefined') {
- alasql.vars[g.as] = v;
- }
+if (alasql.options.tsql) {
+ //
+ // Check tables and views
+ // IF OBJECT_ID('dbo.Employees') IS NOT NULL
+ // DROP TABLE dbo.Employees;
+ // IF OBJECT_ID('dbo.VSortedOrders', 'V') IS NOT NULL
+ // DROP VIEW dbo.VSortedOrders;
- if (typeof g.prop !== 'undefined') {
- // v[g.prop] = true;
- v.$id = g.prop;
- v.name = g.prop;
- }
+ alasql.stdfn.OBJECT_ID = function(name, type) {
+ if (typeof type == 'undefined') type = 'T';
+ type = type.toUpperCase();
- if (typeof g.sharp !== 'undefined') {
- v.$id = g.sharp;
- }
- if (typeof g.name !== 'undefined') {
- v.name = g.name;
- }
- if (typeof g.class !== 'undefined') {
- v.$class = g.class;
+ var sname = name.split('.');
+ var dbid = alasql.useid;
+ var objname = sname[0];
+ if (sname.length == 2) {
+ dbid = sname[0];
+ objname = sname[1];
}
- var db = alasql.databases[databaseid];
- if (typeof v.$id === 'undefined') {
- v.$id = db.counter++;
- }
- v.$node = 'VERTEX';
- if (typeof g.json !== 'undefined') {
- extend(
- v,
- new Function('params,alasql', 'var y;return ' + g.json.toJS())(params, alasql)
- );
+ var tables = alasql.databases[dbid].tables;
+ dbid = alasql.databases[dbid].databaseid;
+ for (var tableid in tables) {
+ if (tableid == objname) {
+ // TODO: What OBJECT_ID actually returns
+
+ if (tables[tableid].view && type == 'V') return dbid + '.' + tableid;
+ if (!tables[tableid].view && type == 'T') return dbid + '.' + tableid;
+ return undefined;
+ }
}
- db.objects[v.$id] = v;
- if (typeof v.$class !== 'undefined') {
- if (typeof alasql.databases[databaseid].tables[v.$class] === 'undefined') {
- throw new Error('No such class. Pleace use CREATE CLASS');
- } else {
- // TODO - add insert()
- alasql.databases[databaseid].tables[v.$class].data.push(v);
+
+ return undefined;
+ };
+}
+
+if (alasql.options.mysql) {
+}
+
+if (alasql.options.mysql || alasql.options.sqlite) {
+ // Pseudo INFORMATION_SCHEMA function
+ alasql.from.INFORMATION_SCHEMA = function(filename, opts, cb, idx, query) {
+ if (filename == 'VIEWS' || filename == 'TABLES') {
+ var res = [];
+ for (var databaseid in alasql.databases) {
+ var tables = alasql.databases[databaseid].tables;
+ for (var tableid in tables) {
+ if (
+ (tables[tableid].view && filename == 'VIEWS') ||
+ (!tables[tableid].view && filename == 'TABLES')
+ ) {
+ res.push({TABLE_CATALOG: databaseid, TABLE_NAME: tableid});
+ }
+ }
}
+ if (cb) res = cb(res, idx, query);
+ return res;
}
+ throw new Error('Unknown INFORMATION_SCHEMA table');
+ };
+}
- res.push(v.$id);
- return v;
- }
-};
+if (alasql.options.postgres) {
+}
-yy.CreateGraph.prototype.compile1 = function(databaseid) {
- var dbid = databaseid;
- var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
- var tofn = new Function('params,alasql', 'var y;return ' + this.to.toJS());
+if (alasql.options.oracle) {
+}
- // CREATE VERTEX "Name"
- if (typeof this.name !== 'undefined') {
- var s = 'x.name=' + this.name.toJS();
- var namefn = new Function('x', s);
+if (alasql.options.sqlite) {
+}
+
+//
+// into functions
+//
+// (c) 2014 Andrey Gershun
+//
+
+alasql.into.SQL = function(filename, opts, data, columns, cb) {
+ var res;
+ if (typeof filename === 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+ var opt = {};
+ alasql.utils.extend(opt, opts);
+ if (typeof opt.tableid === 'undefined') {
+ throw new Error('Table for INSERT TO is not defined.');
}
- if (this.sets && this.sets.length > 0) {
- var s = this.sets
- .map(function(st) {
- return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
+ var s = '';
+ if (columns.length === 0) {
+ if (typeof data[0] === 'object') {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ } else {
+ // What should I do?
+ // columns = [{columnid:"_"}];
+ }
+ }
+
+ for (var i = 0, ilen = data.length; i < ilen; i++) {
+ s += 'INSERT INTO ' + opts.tableid + '(';
+ s += columns
+ .map(function(col) {
+ return col.columnid;
})
- .join(';');
- var setfn = new Function('x,params,alasql', 'var y;' + s);
+ .join(',');
+ s += ') VALUES (';
+ s += columns.map(function(col) {
+ var val = data[i][col.columnid];
+ if (col.typeid) {
+ if (
+ col.typeid === 'STRING' ||
+ col.typeid === 'VARCHAR' ||
+ col.typeid === 'NVARCHAR' ||
+ col.typeid === 'CHAR' ||
+ col.typeid === 'NCHAR'
+ ) {
+ val = "'" + escapeqq(val) + "'";
+ }
+ } else {
+ if (typeof val == 'string') {
+ val = "'" + escapeqq(val) + "'";
+ }
+ }
+ return val;
+ });
+ s += ');\n';
+ }
+ // if(filename === '') {
+ // res = s;
+ // } else {
+ // res = data.length;
+ filename = alasql.utils.autoExtFilename(filename, 'sql', opts);
+ res = alasql.utils.saveFile(filename, s);
+ if (cb) {
+ res = cb(res);
}
+ return res;
+};
- // Todo: handle content, select and default
+alasql.into.HTML = function(selector, opts, data, columns, cb) {
+ var res = 1;
+ if (typeof exports !== 'object') {
+ var opt = {headers: true};
+ alasql.utils.extend(opt, opts);
- var statement = function(params, cb) {
- var res = 0;
- // CREATE VERTEX without parameters
- var db = alasql.databases[dbid];
- var edge = {$id: db.counter++, $node: 'EDGE'};
- var v1 = fromfn(params, alasql);
- var v2 = tofn(params, alasql);
- // Set link
- edge.$in = [v1.$id];
- edge.$out = [v2.$id];
- // Set sides
- if (typeof v1.$out === 'undefined') {
- v1.$out = [];
+ var sel = document.querySelector(selector);
+ if (!sel) {
+ throw new Error('Selected HTML element is not found');
}
- v1.$out.push(edge.$id);
- if (typeof v2.$in === 'undefined') {
- v2.$in = [];
- }
- v2.$in.push(edge.$id);
- // Save in objects
- db.objects[edge.$id] = edge;
- res = edge;
- if (namefn) {
- namefn(edge);
+ if (columns.length === 0) {
+ if (typeof data[0] === 'object') {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ } else {
+ // What should I do?
+ // columns = [{columnid:"_"}];
+ }
}
- if (setfn) {
- setfn(edge, params, alasql);
+
+ var tbe = document.createElement('table');
+ var thead = document.createElement('thead');
+ tbe.appendChild(thead);
+ if (opt.headers) {
+ var tre = document.createElement('tr');
+ for (var i = 0; i < columns.length; i++) {
+ var the = document.createElement('th');
+ the.textContent = columns[i].columnid;
+ tre.appendChild(the);
+ }
+ thead.appendChild(tre);
}
- if (cb) {
- res = cb(res);
+ var tbody = document.createElement('tbody');
+ tbe.appendChild(tbody);
+ for (var j = 0; j < data.length; j++) {
+ var tre = document.createElement('tr');
+ for (var i = 0; i < columns.length; i++) {
+ var the = document.createElement('td');
+ the.textContent = data[j][columns[i].columnid];
+ tre.appendChild(the);
+ }
+ tbody.appendChild(tre);
}
- return res;
- };
- return statement;
+ alasql.utils.domEmptyChildren(sel);
+
+ sel.appendChild(tbe);
+ }
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
};
-/*
-//
-// ALTER TABLE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-/* global alasql yy */
+alasql.into.JSON = function(filename, opts, data, columns, cb) {
+ var res = 1;
+ if (typeof filename === 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+ var s = JSON.stringify(data);
-// ALTER TABLE table1 RENAME TO table2
-yy.AlterTable = function(params) {
- return yy.extend(this, params);
-};
-yy.AlterTable.prototype.toString = function() {
- var s = 'ALTER TABLE ' + this.table.toString();
- if (this.renameto) s += ' RENAME TO ' + this.renameto;
- return s;
+ filename = alasql.utils.autoExtFilename(filename, 'json', opts);
+ res = alasql.utils.saveFile(filename, s);
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
};
-yy.AlterTable.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[databaseid];
- db.dbversion = Date.now();
-
- if (this.renameto) {
- var oldtableid = this.table.tableid;
- var newtableid = this.renameto;
- var res = 1;
- if (db.tables[newtableid]) {
- throw new Error(
- "Can not rename a table '" +
- oldtableid +
- "' to '" +
- newtableid +
- "', because the table with this name already exists"
- );
- } else if (newtableid === oldtableid) {
- throw new Error("Can not rename a table '" + oldtableid + "' to itself");
- } else {
- db.tables[newtableid] = db.tables[oldtableid];
- delete db.tables[oldtableid];
- res = 1;
- }
- if (cb) cb(res);
- return res;
- } else if (this.addcolumn) {
- db = alasql.databases[this.table.databaseid || databaseid];
- db.dbversion++;
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var columnid = this.addcolumn.columnid;
- if (table.xcolumns[columnid]) {
- throw new Error(
- 'Cannot add column "' +
- columnid +
- '", because it already exists in the table "' +
- tableid +
- '"'
- );
- }
+alasql.into.TXT = function(filename, opts, data, columns, cb) {
+ // If columns is empty
+ if (columns.length === 0 && data.length > 0) {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
+ // If one parameter
+ if (typeof filename === 'object') {
+ opts = filename;
+ filename = undefined;
+ }
- var col = {
- columnid: columnid,
- dbtypeid: this.dbtypeid,
- dbsize: this.dbsize,
- dbprecision: this.dbprecision,
- dbenum: this.dbenum,
- defaultfns: null, // TODO defaultfns!!!
- };
+ var res = data.length;
+ var s = '';
+ if (data.length > 0) {
+ var key = columns[0].columnid;
+ s += data
+ .map(function(d) {
+ return d[key];
+ })
+ .join('\n');
+ }
- var defaultfn = function() {};
+ // } else {
+ // if(utils.isNode) {
+ // process.stdout.write(s);
+ // } else {
- table.columns.push(col);
- table.xcolumns[columnid] = col;
+ // };
+ // }
+ filename = alasql.utils.autoExtFilename(filename, 'txt', opts);
+ res = alasql.utils.saveFile(filename, s);
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+alasql.into.TAB = alasql.into.TSV = function(filename, opts, data, columns, cb) {
+ var opt = {};
+ alasql.utils.extend(opt, opts);
+ opt.separator = '\t';
+ filename = alasql.utils.autoExtFilename(filename, 'tab', opts);
+ opt.autoExt = false;
+ return alasql.into.CSV(filename, opt, data, columns, cb);
+};
- table.data[i][columnid] = defaultfn();
- }
+alasql.into.CSV = function(filename, opts, data, columns, cb) {
+ if (columns.length === 0 && data.length > 0) {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
+ if (typeof filename === 'object') {
+ opts = filename;
+ filename = undefined;
+ }
- // TODO
- return cb ? cb(1) : 1;
- } else if (this.modifycolumn) {
- var db = alasql.databases[this.table.databaseid || databaseid];
- db.dbversion++;
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var columnid = this.modifycolumn.columnid;
+ var opt = {headers: true};
+ //opt.separator = ',';
+ opt.separator = ';';
+ opt.quote = '"';
- if (!table.xcolumns[columnid]) {
- throw new Error(
- 'Cannot modify column "' +
- columnid +
- '", because it was not found in the table "' +
- tableid +
- '"'
- );
- }
+ opt.utf8Bom = true;
+ if (opts && !opts.headers && typeof opts.headers !== 'undefined') {
+ opt.utf8Bom = false;
+ }
- col = table.xcolumns[columnid];
- col.dbtypeid = this.dbtypeid;
- col.dbsize = this.dbsize;
- col.dbprecision = this.dbprecision;
- col.dbenum = this.dbenum;
+ alasql.utils.extend(opt, opts);
+ var res = data.length;
+ var s = opt.utf8Bom ? '\ufeff' : '';
+ if (opt.headers) {
+ s +=
+ opt.quote +
+ columns
+ .map(function(col) {
+ return col.columnid.trim();
+ })
+ .join(opt.quote + opt.separator + opt.quote) +
+ opt.quote +
+ '\r\n';
+ }
- // TODO
- return cb ? cb(1) : 1;
- } else if (this.renamecolumn) {
- var db = alasql.databases[this.table.databaseid || databaseid];
- db.dbversion++;
+ data.forEach(function(d) {
+ s +=
+ columns
+ .map(function(col) {
+ var s = d[col.columnid];
+ // escape the character wherever it appears in the field
+ if (opt.quote !== '') {
+ s = (s + '').replace(
+ new RegExp('\\' + opt.quote, 'g'),
+ opt.quote + opt.quote
+ );
+ }
+ // if((s+"").indexOf(opt.separator) > -1 || (s+"").indexOf(opt.quote) > -1) s = opt.quote + s + opt.quote;
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var columnid = this.renamecolumn;
- var tocolumnid = this.to;
+ //Excel 2013 needs quotes around strings - thanks for _not_ complying with RFC for CSV
+ if (+s != s) {
+ // jshint ignore:line
+ s = opt.quote + s + opt.quote;
+ }
- var col;
- if (!table.xcolumns[columnid]) {
- throw new Error(
- 'Column "' + columnid + '" is not found in the table "' + tableid + '"'
- );
- }
- if (table.xcolumns[tocolumnid]) {
- throw new Error(
- 'Column "' + tocolumnid + '" already exists in the table "' + tableid + '"'
- );
+ return s;
+ })
+ .join(opt.separator) + '\r\n';
+ });
+
+ filename = alasql.utils.autoExtFilename(filename, 'csv', opts);
+ res = alasql.utils.saveFile(filename, s, null, {disableAutoBom: true});
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
+
+//
+// 831xl.js - Coloring Excel
+// 18.04.2015
+// Generate XLS file with colors and styles
+// with Excel
+
+alasql.into.XLS = function(filename, opts, data, columns, cb) {
+ // If filename is not defined then output to the result
+ if (typeof filename == 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+
+ // Set sheets
+ var sheets = {};
+ if (opts && opts.sheets) {
+ sheets = opts.sheets;
+ }
+
+ // Default sheet
+ var sheet = {headers: true};
+ if (typeof sheets['Sheet1'] != 'undefined') {
+ sheet = sheets[0];
+ } else {
+ if (typeof opts != 'undefined') {
+ sheet = opts;
}
+ }
- if (columnid != tocolumnid) {
- for (var j = 0; j < table.columns.length; j++) {
- if (table.columns[j].columnid == columnid) {
- table.columns[j].columnid = tocolumnid;
+ // Set sheet name and default is 'Sheet1'
+ if (typeof sheet.sheetid == 'undefined') {
+ sheet.sheetid = 'Sheet1';
+ }
+
+ var s = toHTML();
+
+ // File is ready to save
+ filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
+ var res = alasql.utils.saveFile(filename, s);
+ if (cb) res = cb(res);
+ return res;
+
+ function toHTML() {
+ // Generate prologue
+ var s =
+ '
\
+ \
+ ';
+
+ // Generate body
+ s += '';
+ s += '';
+ if (typeof sheet.caption != 'undefined') {
+ var caption = sheet.caption;
+ if (typeof caption == 'string') {
+ caption = {title: caption};
+ }
+ s += '';
+ s += caption.title;
+ s += ' ';
+ }
- table.xcolumns[tocolumnid] = table.xcolumns[columnid];
- delete table.xcolumns[columnid];
+ // Columns
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+ // var columns = [];
- table.data[i][tocolumnid] = table.data[i][columnid];
- delete table.data[i][columnid];
- }
- return table.data.length;
+ // If columns defined in sheet, then take them
+ if (typeof sheet.columns != 'undefined') {
+ columns = sheet.columns;
} else {
- return cb ? cb(0) : 0;
+ // Autogenerate columns if they are passed as parameters
+ if (columns.length == 0 && data.length > 0) {
+ if (typeof data[0] == 'object') {
+ if (Array.isArray(data[0])) {
+ columns = data[0].map(function(d, columnidx) {
+ return {columnid: columnidx};
+ });
+ } else {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
+ }
+ }
}
- } else if (this.dropcolumn) {
- var db = alasql.databases[this.table.databaseid || databaseid];
- db.dbversion++;
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var columnid = this.dropcolumn;
- var found = false;
- for (var j = 0; j < table.columns.length; j++) {
- if (table.columns[j].columnid == columnid) {
- found = true;
- table.columns.splice(j, 1);
- break;
+ // Prepare columns
+ columns.forEach(function(column, columnidx) {
+ if (typeof sheet.column != 'undefined') {
+ extend(column, sheet.column);
}
- }
- if (!found) {
- throw new Error(
- 'Cannot drop column "' +
- columnid +
- '", because it was not found in the table "' +
- tableid +
- '"'
- );
- }
+ if (typeof column.width == 'undefined') {
+ if (sheet.column && sheet.column.width != 'undefined') {
+ column.width = sheet.column.width;
+ } else {
+ column.width = '120px';
+ }
+ }
+ if (typeof column.width == 'number') column.width = column.width + 'px';
+ if (typeof column.columnid == 'undefined') column.columnid = columnidx;
+ if (typeof column.title == 'undefined') column.title = '' + column.columnid.trim();
+ if (sheet.headers && Array.isArray(sheet.headers))
+ column.title = sheet.headers[columnidx];
+ });
- delete table.xcolumns[columnid];
+ // Set columns widths
+ s += '';
+ columns.forEach(function(column) {
+ s += ' ';
+ });
+ s += ' ';
+
+ // Headers
+ if (sheet.headers) {
+ s += '';
+ s += '';
+
+ // TODO: Skip columns to body
+
+ // Headers
+ columns.forEach(function(column, columnidx) {
+ s += '';
- for (i = 0, ilen = table.data.length; i < ilen; i++) {
- delete table.data[i][columnid];
- }
- return cb ? cb(table.data.length) : table.data.length;
- } else {
- throw Error('Unknown ALTER TABLE method');
- }
-};
+ // Column title
+ if (typeof column.title != 'undefined') {
+ if (typeof column.title == 'function') {
+ s += column.title(sheet, column, columnidx);
+ } else {
+ s += column.title;
+ }
+ }
+ s += ' ';
+ });
-/*
-//
-// CREATE TABLE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ s += ' ';
+ s += ' ';
+ }
-yy.CreateIndex = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateIndex.prototype.toString = function() {
- var s = 'CREATE';
- if (this.unique) s += ' UNIQUE';
- s += ' INDEX ' + this.indexid + ' ON ' + this.table.toString();
- s += '(' + this.columns.toString() + ')';
- return s;
-};
+ s += '';
-// CREATE TABLE
-yy.CreateIndex.prototype.execute = function(databaseid, params, cb) {
- // var self = this;
- var db = alasql.databases[databaseid];
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var indexid = this.indexid;
- db.indices[indexid] = tableid;
+ // TODO: Skip lines between header and body
- var rightfns = this.columns
- .map(function(expr) {
- return expr.expression.toJS('r', '');
- })
- .join("+'`'+");
+ if (data && data.length > 0) {
+ // TODO: Skip columns to body
- var rightfn = new Function('r,params,alasql', 'return ' + rightfns);
+ // Loop over data rows
+ data.forEach(function(row, rowidx) {
+ // Limit number of rows on the sheet
+ if (rowidx > sheet.limit) return;
+ // Create row
+ s += ' 0) {
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
- var addr = rightfns(table.data[i]);
- if (!ux[addr]) {
- ux[addr] = {num: 0};
+ var srow = {};
+ extend(srow, sheet.row);
+ if (sheet.rows && sheet.rows[rowidx]) {
+ extend(srow, sheet.rows[rowidx]);
}
- ux[addr].num++;
- }
+ // Row style fromdefault sheet
+ if (typeof srow != 'undefined') {
+ if (typeof srow.style != 'undefined') {
+ s += ' style="';
+ if (typeof srow.style == 'function') {
+ s += srow.style(sheet, row, rowidx);
+ } else {
+ s += srow.style;
+ }
+ s += '" ';
+ }
+ }
+ s += '>';
+ // Loop over columns
+ columns.forEach(function(column, columnidx) {
+ // Parameters
+ var cell = {};
+ extend(cell, sheet.cell);
+ extend(cell, srow.cell);
+ if (typeof sheet.column != 'undefined') {
+ extend(cell, sheet.column.cell);
+ }
+ extend(cell, column.cell);
+ if (sheet.cells && sheet.cells[rowidx] && sheet.cells[rowidx][columnidx]) {
+ extend(cell, sheet.cells[rowidx][columnidx]);
+ }
+
+ // Create value
+ var value = row[column.columnid];
+ if (typeof cell.value == 'function') {
+ value = cell.value(value, sheet, row, column, cell, rowidx, columnidx);
+ }
+
+ // Define cell type
+ var typeid = cell.typeid;
+ if (typeof typeid == 'function') {
+ typeid = typeid(value, sheet, row, column, cell, rowidx, columnidx);
+ }
+
+ if (typeof typeid == 'undefined') {
+ if (typeof value == 'number') typeid = 'number';
+ else if (typeof value == 'string') typeid = 'string';
+ else if (typeof value == 'boolean') typeid = 'boolean';
+ else if (typeof value == 'object') {
+ if (value instanceof Date) typeid = 'date';
+ }
+ }
+
+ var typestyle = '';
+
+ if (typeid == 'money') {
+ typestyle =
+ 'mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;';
+ } else if (typeid == 'number') {
+ typestyle = ' ';
+ } else if (typeid == 'date') {
+ typestyle = 'mso-number-format:"Short Date";';
+ } else {
+ // FOr other types is saved
+ if (opts.types && opts.types[typeid] && opts.types[typeid].typestyle) {
+ typestyle = opts.types[typeid].typestyle;
+ }
+ }
+
+ // TODO Replace with extend...
+ typestyle = typestyle || 'mso-number-format:"\\@";'; // Default type style
+
+ s += "';
+
+ // TODO Replace with extend...
+ var format = cell.format;
+ if (typeof value == 'undefined') {
+ s += '';
+ } else if (typeof format != 'undefined') {
+ if (typeof format == 'function') {
+ s += format(value);
+ } else if (typeof format == 'string') {
+ s += value; // TODO - add string format
+ } else {
+ throw new Error('Unknown format type. Should be function or string');
+ }
+ } else {
+ if (typeid == 'number' || typeid == 'date') {
+ s += value.toString();
+ } else if (typeid == 'money') {
+ s += (+value).toFixed(2);
+ } else {
+ s += value;
+ }
+ }
+ s += ' ';
+ });
+
+ s += ' ';
+ });
}
- } else {
- var hh = hash(rightfns);
- table.inddefs[indexid] = {rightfns: rightfns, hh: hh};
- table.indices[hh] = {};
- var ix = (table.indices[hh] = {});
- if (table.data.length > 0) {
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
- var addr = rightfn(table.data[i], params, alasql);
- if (!ix[addr]) {
- ix[addr] = [];
- }
- ix[addr].push(table.data[i]);
- }
+ s += ' ';
+
+ // Generate epilogue
+ s += '
';
+ s += '';
+ s += '';
+
+ return s;
+ }
+
+ // Style function
+ function style(a) {
+ var s = ' style="';
+ if (a && typeof a.style != 'undefined') {
+ s += a.style + ';';
}
+ s += '" ';
+ return s;
}
- var res = 1;
- if (cb) res = cb(res);
- return res;
};
-yy.Reindex = function(params) {
- return yy.extend(this, params);
-};
-yy.Reindex.prototype.toString = function() {
- var s = 'REINDEX ' + this.indexid;
- return s;
-};
+alasql.into.XLSXML = function(filename, opts, data, columns, cb) {
+ opts = opts || {};
-// CREATE TABLE
-yy.Reindex.prototype.execute = function(databaseid, params, cb) {
- // var self = this;
- var db = alasql.databases[databaseid];
- var indexid = this.indexid;
+ // If filename is not defined then output to the result
+ if (typeof filename == 'object') {
+ opts = filename;
+ filename = undefined;
+ }
- var tableid = db.indices[indexid];
- var table = db.tables[tableid];
- table.indexColumns();
- var res = 1;
+ // Set sheets
+ var sheets = {};
+ var sheetsdata;
+ var sheetscolumns;
+ if (opts && opts.sheets) {
+ sheets = opts.sheets;
+ // data and columns are already an array for the sheets
+ sheetsdata = data;
+ sheetscolumns = columns;
+ } else {
+ sheets.Sheet1 = opts;
+ // wrapd ata and columns array for single sheet
+ sheetsdata = [data];
+ sheetscolumns = [columns];
+ }
+
+ // File is ready to save
+ filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
+ var res = alasql.utils.saveFile(filename, toXML());
if (cb) res = cb(res);
return res;
-};
-/*
-//
-// DROP TABLE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ function toXML() {
+ var s1 =
+ ' \
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ 0 \
+ \
+ \
+ ';
+
+ var s2 = ''; // for styles
+
+ var s3 = ' ';
+
+ var styles = {}; // hash based storage for styles
+ var stylesn = 62; // First style
+
+ // Generate style
+ function hstyle(st) {
+ // Prepare string
+ var s = '';
+ for (var key in st) {
+ s += '<' + key;
+ for (var attr in st[key]) {
+ s += ' ';
+ if (attr.substr(0, 2) == 'x:') {
+ s += attr;
+ } else {
+ s += 'ss:';
+ }
+ s += attr + '="' + st[key][attr] + '"';
+ }
+ s += '/>';
+ }
-yy.DropIndex = function(params) {
- return yy.extend(this, params);
-};
-yy.DropIndex.prototype.toString = function() {
- return 'DROP INDEX' + this.indexid;
-};
+ var hh = hash(s);
+ // Store in hash
+ if (styles[hh]) {
+ } else {
+ styles[hh] = {styleid: stylesn};
+ s2 += '';
+ stylesn++;
+ }
+ return 's' + styles[hh].styleid;
+ }
-// DROP TABLE
-yy.DropIndex.prototype.compile = function(db) {
- var indexid = this.indexid;
- return function() {
- return 1;
- };
-};
+ function values(obj) {
+ try {
+ return Object.values(obj);
+ } catch (e) {
+ // support for older runtimes
+ return Object.keys(obj).map(function(e) {
+ return obj[e];
+ });
+ }
+ }
-/*
-//
-// WITH SELECT for Alasql.js
-// Date: 11.01.2015
-// (c) 2015, Andrey Gershun
-//
-*/
+ var sheetidx = 0;
+ for (var sheetid in sheets) {
+ var sheet = sheets[sheetid];
+ var idx = typeof sheet.dataidx != 'undefined' ? sheet.dataidx : sheetidx++;
+ var data = values(sheetsdata[idx]);
+ // If columns defined in sheet, then take them
+ var columns = undefined;
+ if (typeof sheet.columns != 'undefined') {
+ columns = sheet.columns;
+ } else {
+ // Autogenerate columns if they are passed as parameters
+ columns = sheetscolumns[idx];
+ if (columns === undefined || (columns.length == 0 && data.length > 0)) {
+ if (typeof data[0] == 'object') {
+ if (Array.isArray(data[0])) {
+ columns = data[0].map(function(d, columnidx) {
+ return {columnid: columnidx};
+ });
+ } else {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
+ }
+ }
+ }
-yy.WithSelect = function(params) {
- return yy.extend(this, params);
-};
-yy.WithSelect.prototype.toString = function() {
- var s = 'WITH ';
- s +=
- this.withs
- .map(function(w) {
- return w.name + ' AS (' + w.select.toString() + ')';
- })
- .join(',') + ' ';
- s += this.select.toString();
- return s;
-};
+ // Prepare columns
+ columns.forEach(function(column, columnidx) {
+ if (typeof sheet.column != 'undefined') {
+ extend(column, sheet.column);
+ }
-yy.WithSelect.prototype.execute = function(databaseid, params, cb) {
- var self = this;
- // Create temporary tables
- var savedTables = [];
- self.withs.forEach(function(w) {
- savedTables.push(alasql.databases[databaseid].tables[w.name]);
- var tb = (alasql.databases[databaseid].tables[w.name] = new Table({tableid: w.name}));
- tb.data = w.select.execute(databaseid, params);
- });
+ if (typeof column.width == 'undefined') {
+ if (sheet.column && typeof sheet.column.width != 'undefined') {
+ column.width = sheet.column.width;
+ } else {
+ column.width = 120;
+ }
+ }
+ if (typeof column.width == 'number') column.width = column.width;
+ if (typeof column.columnid == 'undefined') column.columnid = columnidx;
+ if (typeof column.title == 'undefined') column.title = '' + column.columnid.trim();
+ if (sheet.headers && Array.isArray(sheet.headers))
+ column.title = sheet.headers[columnidx];
+ });
- var res = 1;
- res = this.select.execute(databaseid, params, function(data) {
- // Clear temporary tables
- // setTimeout(function(){
- self.withs.forEach(function(w, idx) {
- if (savedTables[idx]) alasql.databases[databaseid].tables[w.name] = savedTables[idx];
- else delete alasql.databases[databaseid].tables[w.name];
- });
- // },0);
+ // Header
+ s3 +=
+ ' \
+ ';
+
+ columns.forEach(function(column, columnidx) {
+ s3 +=
+ ' ';
+ });
- if (cb) data = cb(data);
- return data;
- });
- return res;
-};
+ // Headers
+ if (sheet.headers) {
+ s3 += '';
-/*
-//
-// IF for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ // TODO: Skip columns to body
-yy.If = function(params) {
- return yy.extend(this, params);
-};
-yy.If.prototype.toString = function() {
- var s = 'IF' + ' ';
- s += this.expression.toString();
- s += ' ' + this.thenstat.toString();
- if (this.elsestat) s += ' ELSE ' + this.thenstat.toString();
- return s;
-};
+ // Headers
+ columns.forEach(function(column, columnidx) {
+ s3 += '';
- var fn = new Function(
- 'params,alasql,p',
- 'var y;return ' + this.expression.toJS('({})', '', null)
- ).bind(this);
+ // Column title
+ if (typeof column.title != 'undefined') {
+ if (typeof column.title == 'function') {
+ s3 += column.title(sheet, column, columnidx);
+ } else {
+ s3 += column.title;
+ }
+ }
+ s3 += ' | ';
+ });
- if (fn(params, alasql)) res = this.thenstat.execute(databaseid, params, cb);
- else {
- if (this.elsestat) res = this.elsestat.execute(databaseid, params, cb);
- else {
- if (cb) res = cb(res);
- }
- }
- // else res = this.elsestat.execute(databaseid,params,cb,scope);
- return res;
-};
+ s3 += '
';
+ }
-/*
-//
-// CREATE VIEW for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ // Data
+ if (data && data.length > 0) {
+ // Loop over data rows
+ data.forEach(function(row, rowidx) {
+ // Limit number of rows on the sheet
+ if (rowidx > sheet.limit) return;
+
+ // Extend row properties
+ var srow = {};
+ extend(srow, sheet.row);
+ if (sheet.rows && sheet.rows[rowidx]) {
+ extend(srow, sheet.rows[rowidx]);
+ }
-yy.While = function(params) {
- return yy.extend(this, params);
-};
-yy.While.prototype.toString = function() {
- var s = 'WHILE ';
- s += this.expression.toString();
- s += ' ' + this.loopstat.toString();
- return s;
-};
+ s3 += ''; //'ss:AutoFitHeight="0">'
- if (cb) {
- var first = false;
- loop();
- function loop(data) {
- if (first) {
- res.push(data);
- } else {
- first = true;
- }
- setTimeout(function() {
- if (fn(params, alasql)) {
- self.loopstat.execute(databaseid, params, loop);
- } else {
- res = cb(res);
- }
- }, 0);
- }
- } else {
- while (fn(params, alasql)) {
- var res1 = self.loopstat.execute(databaseid, params);
- res.push(res1);
- }
- }
- return res;
-};
+ // Data
+ columns.forEach(function(column, columnidx) {
+ // Parameters
+ var cell = {};
+ extend(cell, sheet.cell);
+ extend(cell, srow.cell);
+ if (typeof sheet.column != 'undefined') {
+ extend(cell, sheet.column.cell);
+ }
+ extend(cell, column.cell);
+ if (sheet.cells && sheet.cells[rowidx] && sheet.cells[rowidx][columnidx]) {
+ extend(cell, sheet.cells[rowidx][columnidx]);
+ }
-yy.Break = function(params) {
- return yy.extend(this, params);
-};
-yy.Break.prototype.toString = function() {
- var s = 'BREAK';
- return s;
-};
+ // Create value
+ var value = row[column.columnid];
+ if (typeof cell.value == 'function') {
+ value = cell.value(value, sheet, row, column, cell, rowidx, columnidx);
+ }
-yy.Break.prototype.execute = function(databaseid, params, cb, scope) {
- var res = 1;
- if (cb) res = cb(res);
- return res;
-};
+ // Define cell type
+ var typeid = cell.typeid;
+ if (typeof typeid == 'function') {
+ typeid = typeid(value, sheet, row, column, cell, rowidx, columnidx);
+ }
-yy.Continue = function(params) {
- return yy.extend(this, params);
-};
-yy.Continue.prototype.toString = function() {
- var s = 'CONTINUE';
- return s;
+ if (typeof typeid == 'undefined') {
+ if (typeof value == 'number') typeid = 'number';
+ else if (typeof value == 'string') typeid = 'string';
+ else if (typeof value == 'boolean') typeid = 'boolean';
+ else if (typeof value == 'object') {
+ if (value instanceof Date) typeid = 'date';
+ }
+ }
+
+ var Type = 'String';
+ if (typeid == 'number') Type = 'Number';
+ else if (typeid == 'date') Type = 'Date';
+ // TODO: What else?
+
+ // Prepare Data types styles
+ var typestyle = '';
+
+ if (typeid == 'money') {
+ typestyle =
+ 'mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;';
+ } else if (typeid == 'number') {
+ typestyle = ' ';
+ } else if (typeid == 'date') {
+ typestyle = 'mso-number-format:"Short Date";';
+ } else {
+ // For other types is saved
+ if (opts.types && opts.types[typeid] && opts.types[typeid].typestyle) {
+ typestyle = opts.types[typeid].typestyle;
+ }
+ }
+
+ // TODO Replace with extend...
+ typestyle = typestyle || 'mso-number-format:"\\@";'; // Default type style
+
+ s3 += '';
+
+ s3 += '';
+
+ // TODO Replace with extend...
+ var format = cell.format;
+ if (typeof value == 'undefined') {
+ s3 += '';
+ } else if (typeof format != 'undefined') {
+ if (typeof format == 'function') {
+ s3 += format(value);
+ } else if (typeof format == 'string') {
+ s3 += value; // TODO - add string format
+ } else {
+ throw new Error(
+ 'Unknown format type. Should be function or string'
+ );
+ }
+ } else {
+ if (typeid == 'number' || typeid == 'date') {
+ s3 += value.toString();
+ } else if (typeid == 'money') {
+ s3 += (+value).toFixed(2);
+ } else {
+ s3 += value;
+ }
+ }
+
+ // s3 += row[column.columnid];
+ s3 += ' | ';
+ });
+
+ s3 += '
';
+ });
+ }
+ // Finish
+ s3 += '
';
+ }
+
+ s3 += ' ';
+
+ return s1 + s2 + s3;
+ }
};
-yy.Continue.prototype.execute = function(databaseid, params, cb, scope) {
+/**
+ Export to XLSX function
+ @function
+ @param {string|object} filename Filename or options
+ @param {object|undefined} opts Options or undefined
+ @param {array} data Data
+ @param {array} columns Columns
+ @parab {callback} cb Callback function
+ @return {number} Number of files processed
+*/
+
+alasql.into.XLSX = function(filename, opts, data, columns, cb) {
+ /** @type {number} result */
var res = 1;
- if (cb) res = cb(res);
- return res;
-};
-yy.BeginEnd = function(params) {
- return yy.extend(this, params);
-};
-yy.BeginEnd.prototype.toString = function() {
- var s = 'BEGIN ' + this.statements.toString() + ' END';
- return s;
-};
+ if (deepEqual(columns, [{columnid: '_'}])) {
+ data = data.map(function(dat) {
+ return dat._;
+ });
+ columns = undefined;
+ // res = [{_:1}];
+ } else {
+ // data = data1;
+ }
-yy.BeginEnd.prototype.execute = function(databaseid, params, cb, scope) {
- var self = this;
- var res = [];
+ filename = alasql.utils.autoExtFilename(filename, 'xlsx', opts);
- var idx = 0;
- runone();
- function runone() {
- self.statements[idx].execute(databaseid, params, function(data) {
- res.push(data);
- idx++;
- if (idx < self.statements.length) return runone();
- if (cb) res = cb(res);
+ var XLSX = getXLSX();
+
+ /* If called without filename, use opts */
+ if (typeof filename == 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+
+ /** @type {object} Workbook */
+ var wb = {SheetNames: [], Sheets: {}};
+
+ // ToDo: check if cb must be treated differently here
+ if (opts.sourcefilename) {
+ alasql.utils.loadBinaryFile(opts.sourcefilename, !!cb, function(data) {
+ wb = XLSX.read(data, {type: 'binary'});
+ doExport();
});
+ } else {
+ doExport();
}
+
+ /* Return result */
+ if (cb) res = cb(res);
return res;
-};
-/*
-//
-// INSERT for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/* global yy alasql*/
-yy.Insert = function(params) {
- return yy.extend(this, params);
-};
-yy.Insert.prototype.toString = function() {
- var s = 'INSERT ';
- if (this.orreplace) s += 'OR REPLACE ';
- if (this.replaceonly) s = 'REPLACE ';
- s += 'INTO ' + this.into.toString();
- if (this.columns) s += '(' + this.columns.toString() + ')';
- if (this.values) s += ' VALUES ' + this.values.toString();
- if (this.select) s += ' ' + this.select.toString();
- return s;
-};
-
-yy.Insert.prototype.toJS = function(context, tableid, defcols) {
-
- // if(this.expression.reduced) return 'true';
- // return this.expression.toJS(context, tableid, defcols);
-
- // var s = 'this.queriesdata['+(this.queriesidx-1)+'][0]';
-
- var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
-
- return s;
-};
-
-yy.Insert.prototype.compile = function(databaseid) {
- var self = this;
- databaseid = self.into.databaseid || databaseid;
- var db = alasql.databases[databaseid];
-
- var tableid = self.into.tableid;
- var table = db.tables[tableid];
-
- if (!table) {
- throw "Table '" + tableid + "' could not be found";
- }
-
- // Check, if this dirty flag is required
- var s = '';
- var sw = '';
- var s = "db.tables['" + tableid + "'].dirty=true;";
- var s3 = 'var a,aa=[],x;';
-
- var s33;
-
- // INSERT INTO table VALUES
- if (this.values) {
- if (this.exists) {
- this.existsfn = this.exists.map(function(ex) {
- var nq = ex.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
- if (this.queries) {
- this.queriesfn = this.queries.map(function(q) {
- var nq = q.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
-
- self.values.forEach(function(values) {
- var ss = [];
-
- // s += 'db.tables[\''+tableid+'\'].data.push({';
-
- // s += '';
- if (self.columns) {
- self.columns.forEach(function(col, idx) {
-
- // ss.push(col.columnid +':'+ self.values[idx].value.toString());
-
- // if(rec[f.name.value] == "NULL") rec[f.name.value] = undefined;
-
- // if(table.xflds[f.name.value].dbtypeid == "INT") rec[f.name.value] = +rec[f.name.value]|0;
- // else if(table.xflds[f.name.value].dbtypeid == "FLOAT") rec[f.name.value] = +rec[f.name.value];
- var q = "'" + col.columnid + "':";
- if (table.xcolumns && table.xcolumns[col.columnid]) {
- if (
- ['INT', 'FLOAT', 'NUMBER', 'MONEY'].indexOf(
- table.xcolumns[col.columnid].dbtypeid
- ) >= 0
- ) {
- //q += ''
- q += '(x=' + values[idx].toJS() + ',x==undefined?undefined:+x)';
- } else if (alasql.fn[table.xcolumns[col.columnid].dbtypeid]) {
- q += '(new ' + table.xcolumns[col.columnid].dbtypeid + '(';
- q += values[idx].toJS();
- q += '))';
- } else {
- q += values[idx].toJS();
- }
- } else {
- q += values[idx].toJS();
- }
- ss.push(q);
- });
- } else {
- // var table = db.tables[tableid];
-
- if (Array.isArray(values) && table.columns && table.columns.length > 0) {
- table.columns.forEach(function(col, idx) {
- var q = "'" + col.columnid + "':";
- // var val = values[idx].toJS();
-
- if (['INT', 'FLOAT', 'NUMBER', 'MONEY'].indexOf(col.dbtypeid) >= 0) {
- q += '+' + values[idx].toJS();
- } else if (alasql.fn[col.dbtypeid]) {
- q += '(new ' + col.dbtypeid + '(';
- q += values[idx].toJS();
- q += '))';
- } else {
- q += values[idx].toJS();
- }
-
- ss.push(q);
-
- });
- } else {
-
- // sw = 'var w='+JSONtoJS(values)+';for(var k in w){r[k]=w[k]};';
- sw = JSONtoJS(values);
- }
- }
-
- if (db.tables[tableid].defaultfns) {
- ss.unshift(db.tables[tableid].defaultfns);
- }
- if (sw) {
- s += 'a=' + sw + ';';
- } else {
- s += 'a={' + ss.join(',') + '};';
- }
-
- // If this is a class
- if (db.tables[tableid].isclass) {
- s += "var db=alasql.databases['" + databaseid + "'];";
- s += 'a.$class="' + tableid + '";';
- s += 'a.$id=db.counter++;';
- s += 'db.objects[a.$id]=a;';
- }
- // s += 'db.tables[\''+tableid+'\'].insert(r);';
- if (db.tables[tableid].insert) {
- s += "var db=alasql.databases['" + databaseid + "'];";
- s +=
- "db.tables['" +
- tableid +
- "'].insert(a," +
- (self.orreplace ? 'true' : 'false') +
- ');';
- } else {
- s += 'aa.push(a);';
- }
- });
-
- s33 = s3 + s;
-
- if (db.tables[tableid].insert) {
- // s += 'alasql.databases[\''+databaseid+'\'].tables[\''+tableid+'\'].insert(r);';
- } else {
- s +=
- "alasql.databases['" +
- databaseid +
- "'].tables['" +
- tableid +
- "'].data=" +
- "alasql.databases['" +
- databaseid +
- "'].tables['" +
- tableid +
- "'].data.concat(aa);";
- }
-
- if (db.tables[tableid].insert) {
- if (db.tables[tableid].isclass) {
- s += 'return a.$id;';
- } else {
- s += 'return ' + self.values.length;
- }
- } else {
- s += 'return ' + self.values.length;
- }
-
- var insertfn = new Function('db, params, alasql', 'var y;' + s3 + s).bind(this);
-
- // INSERT INTO table SELECT
- } else if (this.select) {
- this.select.modifier = 'RECORDSET';
- var selectfn = this.select.compile(databaseid);
- if (db.engineid && alasql.engines[db.engineid].intoTable) {
- var statement = function(params, cb) {
- var aa = selectfn(params);
- var res = alasql.engines[db.engineid].intoTable(
- db.databaseid,
- tableid,
- aa.data,
- null,
- cb
- );
- return res;
- };
- return statement;
- } else {
-
- var defaultfns = 'return alasql.utils.extend(r,{' + table.defaultfns + '})';
- var defaultfn = new Function('r,db,params,alasql', defaultfns);
- var insertfn = function(db, params, alasql) {
- var res = selectfn(params).data;
- if (db.tables[tableid].insert) {
- // If insert() function exists (issue #92)
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- var r = cloneDeep(res[i]);
- defaultfn(r, db, params, alasql);
- db.tables[tableid].insert(r, self.orreplace);
- }
- } else {
- db.tables[tableid].data = db.tables[tableid].data.concat(res);
- }
- if (alasql.options.nocount) return;
- else return res.length;
- };
- }
- } else if (this.default) {
- var insertfns =
- "db.tables['" + tableid + "'].data.push({" + table.defaultfns + '});return 1;';
- var insertfn = new Function('db,params,alasql', insertfns);
- } else {
- throw new Error('Wrong INSERT parameters');
- }
-
- if (db.engineid && alasql.engines[db.engineid].intoTable && alasql.options.autocommit) {
- var statement = function(params, cb) {
- var aa = new Function('db,params', 'var y;' + s33 + 'return aa;')(db, params);
-
- var res = alasql.engines[db.engineid].intoTable(db.databaseid, tableid, aa, null, cb);
- // if(cb) cb(res);
- return res;
- };
- } else {
- var statement = function(params, cb) {
-
- var db = alasql.databases[databaseid];
-
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].loadTableData(databaseid, tableid);
- }
-
- var res = insertfn(db, params, alasql);
-
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].saveTableData(databaseid, tableid);
- }
- // var res = insertfn(db, params);
- if (alasql.options.nocount) res = undefined;
- if (cb) cb(res);
- return res;
- };
- }
-
- return statement;
-};
-
-yy.Insert.prototype.execute = function(databaseid, params, cb) {
- return this.compile(databaseid)(params, cb);
- // throw new Error('Insert statement is should be compiled')
-};
+ /**
+ Export workbook
+ @function
+ */
+ function doExport() {
+ /*
+ If opts is array of arrays then this is a
+ multisheet workboook, else it is a singlesheet
+ */
+ if (typeof opts == 'object' && Array.isArray(opts)) {
+ if (data && data.length > 0) {
+ data.forEach(function(dat, idx) {
+ prepareSheet(opts[idx], dat, undefined, idx + 1);
+ });
+ }
+ } else {
+ prepareSheet(opts, data, columns, 1);
+ }
-/*
-//
-// TRIGGER for Alasql.js
-// Date: 29.12.2015
-//
-*/
+ saveWorkbook(cb);
+ }
-yy.CreateTrigger = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateTrigger.prototype.toString = function() {
- var s = 'CREATE TRIGGER ' + this.trigger + ' ';
- if (this.when) s += this.when + ' ';
- s += this.action + ' ON ';
- if (this.table.databaseid) s += this.table.databaseid + '.';
- s += this.table.tableid + ' ';
- s += this.statement.toString();
- return s;
-};
+ /**
+ Prepare sheet
+ @params {object} opts
+ @params {array|object} data
+ @params {array} columns Columns
+ */
+ function prepareSheet(opts, data, columns, idx) {
+ /** Default options for sheet */
+ var opt = {sheetid: 'Sheet ' + idx, headers: true};
+ alasql.utils.extend(opt, opts);
-yy.CreateTrigger.prototype.execute = function(databaseid, params, cb) {
- var res = 1; // No tables removed
- var triggerid = this.trigger;
- databaseid = this.table.databaseid || databaseid;
- var db = alasql.databases[databaseid];
- var tableid = this.table.tableid;
+ var dataLength = Object.keys(data).length;
- var trigger = {
- action: this.action,
- when: this.when,
- statement: this.statement,
- funcid: this.funcid,
- };
+ // Generate columns if they are not defined
+ if ((!columns || columns.length == 0) && dataLength > 0) {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
- db.triggers[triggerid] = trigger;
- if (trigger.action == 'INSERT' && trigger.when == 'BEFORE') {
- db.tables[tableid].beforeinsert[triggerid] = trigger;
- } else if (trigger.action == 'INSERT' && trigger.when == 'AFTER') {
- db.tables[tableid].afterinsert[triggerid] = trigger;
- } else if (trigger.action == 'INSERT' && trigger.when == 'INSTEADOF') {
- db.tables[tableid].insteadofinsert[triggerid] = trigger;
- } else if (trigger.action == 'DELETE' && trigger.when == 'BEFORE') {
- db.tables[tableid].beforedelete[triggerid] = trigger;
- } else if (trigger.action == 'DELETE' && trigger.when == 'AFTER') {
- db.tables[tableid].afterdelete[triggerid] = trigger;
- } else if (trigger.action == 'DELETE' && trigger.when == 'INSTEADOF') {
- db.tables[tableid].insteadofdelete[triggerid] = trigger;
- } else if (trigger.action == 'UPDATE' && trigger.when == 'BEFORE') {
- db.tables[tableid].beforeupdate[triggerid] = trigger;
- } else if (trigger.action == 'UPDATE' && trigger.when == 'AFTER') {
- db.tables[tableid].afterupdate[triggerid] = trigger;
- } else if (trigger.action == 'UPDATE' && trigger.when == 'INSTEADOF') {
- db.tables[tableid].insteadofupdate[triggerid] = trigger;
+ var cells = {};
+
+ if (wb.SheetNames.indexOf(opt.sheetid) > -1) {
+ cells = wb.Sheets[opt.sheetid];
+ } else {
+ wb.SheetNames.push(opt.sheetid);
+ wb.Sheets[opt.sheetid] = {};
+ cells = wb.Sheets[opt.sheetid];
+ }
+
+ var range = 'A1';
+ if (opt.range) range = opt.range;
+
+ var col0 = alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);
+ var row0 = +range.match(/[0-9]+/)[0] - 1;
+
+ if (wb.Sheets[opt.sheetid]['!ref']) {
+ var rangem = wb.Sheets[opt.sheetid]['!ref'];
+ var colm = alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);
+ var rowm = +rangem.match(/[0-9]+/)[0] - 1;
+ } else {
+ var colm = 1,
+ rowm = 1;
+ }
+ var colmax = Math.max(col0 + columns.length, colm);
+ var rowmax = Math.max(row0 + dataLength + 2, rowm);
+
+ var i = row0 + 1;
+
+ wb.Sheets[opt.sheetid]['!ref'] = 'A1:' + alasql.utils.xlsnc(colmax) + rowmax;
+ // var i = 1;
+
+ if (opt.headers) {
+ columns.forEach(function(col, idx) {
+ cells[alasql.utils.xlsnc(col0 + idx) + '' + i] = {v: col.columnid.trim()};
+ });
+ i++;
+ }
+
+ for (var j = 0; j < dataLength; j++) {
+ columns.forEach(function(col, idx) {
+ var cell = {v: data[j][col.columnid]};
+ if (typeof data[j][col.columnid] == 'number') {
+ cell.t = 'n';
+ } else if (typeof data[j][col.columnid] == 'string') {
+ cell.t = 's';
+ } else if (typeof data[j][col.columnid] == 'boolean') {
+ cell.t = 'b';
+ } else if (typeof data[j][col.columnid] == 'object') {
+ if (data[j][col.columnid] instanceof Date) {
+ cell.t = 'd';
+ }
+ }
+ cells[alasql.utils.xlsnc(col0 + idx) + '' + i] = cell;
+ });
+ i++;
+ }
}
- if (cb) res = cb(res);
- return res;
-};
+ /**
+ Save Workbook
+ @params {array} wb Workbook
+ @params {callback} cb Callback
+ */
+ function saveWorkbook(cb) {
-yy.DropTrigger = function(params) {
- return yy.extend(this, params);
-};
-yy.DropTrigger.prototype.toString = function() {
- var s = 'DROP TRIGGER ' + this.trigger;
- return s;
-};
+ var XLSX;
+
+ if (typeof filename == 'undefined') {
+ res = wb;
+ } else {
+ XLSX = getXLSX();
+
+ if (utils.isNode || utils.isMeteorServer) {
+ XLSX.writeFile(wb, filename);
+ } else {
+ var wopts = {bookType: 'xlsx', bookSST: false, type: 'binary'};
+ var wbout = XLSX.write(wb, wopts);
+
+ function s2ab(s) {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
+ return buf;
+ }
+
+ /* the saveAs call downloads a file on the local machine */
+ // saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), '"'+filename+'"')
+ // saveAs(new Blob([s2ab(wbout)],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}), filename)
+ // saveAs(new Blob([s2ab(wbout)],{type:"application/vnd.ms-excel"}), '"'+filename+'"');
+ if (isIE() == 9) {
+ throw new Error(
+ 'Cannot save XLSX files in IE9. Please use XLS() export function'
+ );
+ // var URI = 'data:text/plain;charset=utf-8,';
+
+ /** @todo Check if this code is required */
+
+ // alert('ie9');
+ } else {
+ saveAs(new Blob([s2ab(wbout)], {type: 'application/octet-stream'}), filename);
+ }
+ }
+ }
-/**
- Drop trigger
- @param {string} databaseid Database id
- @param {object} params Parameters
- @param {callback} cb Callback function
- @return Number of dropped triggers
- @example
- DROP TRIGGER one;
-*/
-yy.DropTrigger.prototype.execute = function(databaseid, params, cb) {
- var res = 0; // No tables removed
- var db = alasql.databases[databaseid];
- var triggerid = this.trigger;
- // For each table in the list
- var tableid = db.triggers[triggerid];
- if (tableid) {
- res = 1;
- delete db.tables[tableid].beforeinsert[triggerid];
- delete db.tables[tableid].afterinsert[triggerid];
- delete db.tables[tableid].insteadofinsert[triggerid];
- delete db.tables[tableid].beforedelte[triggerid];
- delete db.tables[tableid].afterdelete[triggerid];
- delete db.tables[tableid].insteadofdelete[triggerid];
- delete db.tables[tableid].beforeupdate[triggerid];
- delete db.tables[tableid].afterupdate[triggerid];
- delete db.tables[tableid].insteadofupdate[triggerid];
- delete db.triggers[triggerid];
- } else {
- throw new Error('Trigger not found');
}
- if (cb) res = cb(res);
- return res;
};
-/*
-//
-// DELETE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Delete = function(params) {
- return yy.extend(this, params);
-};
-yy.Delete.prototype.toString = function() {
- var s = 'DELETE FROM ' + this.table.toString();
- if (this.where) s += ' WHERE ' + this.where.toString();
- return s;
-};
-
-yy.Delete.prototype.compile = function(databaseid) {
-
- databaseid = this.table.databaseid || databaseid;
- var tableid = this.table.tableid;
- var statement;
- var db = alasql.databases[databaseid];
-
- if (this.where) {
-
- // this.query = {};
-
- if (this.exists) {
- this.existsfn = this.exists.map(function(ex) {
- var nq = ex.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
- if (this.queries) {
- this.queriesfn = this.queries.map(function(q) {
- var nq = q.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
-
- // try {
-
- // var query = {};
-
- var wherefn = new Function(
- 'r,params,alasql',
- 'var y;return (' + this.where.toJS('r', '') + ')'
- ).bind(this);
-
- statement = function(params, cb) {
- if (db.engineid && alasql.engines[db.engineid].deleteFromTable) {
- return alasql.engines[db.engineid].deleteFromTable(
- databaseid,
- tableid,
- wherefn,
- params,
- cb
- );
- }
-
- if (alasql.options.autocommit && db.engineid && db.engineid == 'LOCALSTORAGE') {
- alasql.engines[db.engineid].loadTableData(databaseid, tableid);
- }
-
- var table = db.tables[tableid];
- // table.dirty = true;
- var orignum = table.data.length;
-
- var newtable = [];
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
- if (wherefn(table.data[i], params, alasql)) {
- // Check for transaction - if it is not possible then return all back
- if (table.delete) {
- table.delete(i, params, alasql);
- } else {
- // Simply do not push
- }
- } else newtable.push(table.data[i]);
- }
- // table.data = table.data.filter(function(r){return !;});
- table.data = newtable;
-
- // Trigger prevent functionality
- for (var tr in table.afterdelete) {
- var trigger = table.afterdelete[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid]();
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
-
- var res = orignum - table.data.length;
- if (alasql.options.autocommit && db.engineid && db.engineid == 'LOCALSTORAGE') {
- alasql.engines[db.engineid].saveTableData(databaseid, tableid);
- }
-
- if (cb) cb(res);
- return res;
- };
- // .bind(query);
-
- // if(!this.queries) return;
- // query.queriesfn = this.queries.map(function(q) {
- // return q.compile(alasql.useid);
- // });
- } else {
- statement = function(params, cb) {
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].loadTableData(databaseid, tableid);
- }
-
- var table = db.tables[tableid];
- table.dirty = true;
- var orignum = db.tables[tableid].data.length;
- //table.deleteall();
- // Delete all records from the array
- db.tables[tableid].data.length = 0;
-
- // Reset PRIMARY KEY and indexes
- for (var ix in db.tables[tableid].uniqs) {
- db.tables[tableid].uniqs[ix] = {};
- }
-
- for (var ix in db.tables[tableid].indices) {
- db.tables[tableid].indices[ix] = {};
- }
-
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].saveTableData(databaseid, tableid);
- }
-
- if (cb) cb(orignum);
- return orignum;
- };
- }
-
- return statement;
-};
-
-yy.Delete.prototype.execute = function(databaseid, params, cb) {
- return this.compile(databaseid)(params, cb);
-};
-
/*
//
-// UPDATE for Alasql.js
-// Date: 03.11.2014
+// FROM functions Alasql.js
+// Date: 11.12.2014
// (c) 2014, Andrey Gershun
//
*/
-/* global yy alasql */
+/**
+ Meteor
+ */
-yy.Update = function(params) {
- return yy.extend(this, params);
-};
-yy.Update.prototype.toString = function() {
- var s = 'UPDATE ' + this.table.toString();
- if (this.columns) s += ' SET ' + this.columns.toString();
- if (this.where) s += ' WHERE ' + this.where.toString();
- return s;
-};
+/* global alasql Tabletop document Event */
-yy.SetColumn = function(params) {
- return yy.extend(this, params);
-};
-yy.SetColumn.prototype.toString = function() {
- return this.column.toString() + '=' + this.expression.toString();
+alasql.from.METEOR = function(filename, opts, cb, idx, query) {
+ var res = filename.find(opts).fetch();
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ return res;
};
-yy.Update.prototype.compile = function(databaseid) {
-
- databaseid = this.table.databaseid || databaseid;
- var tableid = this.table.tableid;
+/**
+ Google Spreadsheet reader
+ */
+alasql.from.TABLETOP = function(key, opts, cb, idx, query) {
+ var res = [];
- if (this.where) {
- if (this.exists) {
- this.existsfn = this.exists.map(function(ex) {
- var nq = ex.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
- if (this.queries) {
- this.queriesfn = this.queries.map(function(q) {
- var nq = q.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
+ var opt = {headers: true, simpleSheet: true, key: key};
+ alasql.utils.extend(opt, opts);
+ opt.callback = function(data) {
+ res = data;
+ if (cb) {
+ res = cb(res, idx, query);
}
+ };
- var wherefn = new Function(
- 'r,params,alasql',
- 'var y;return ' + this.where.toJS('r', '')
- ).bind(this);
- }
-
- // Construct update function
- var s = alasql.databases[databaseid].tables[tableid].onupdatefns || '';
- s += ';';
- this.columns.forEach(function(col) {
- s += "r['" + col.column.columnid + "']=" + col.expression.toJS('r', '') + ';';
- });
+ Tabletop.init(opt);
+ return null;
+};
- var assignfn = new Function('r,params,alasql', 'var y;' + s);
+alasql.from.HTML = function(selector, opts, cb, idx, query) {
+ var opt = {};
+ alasql.utils.extend(opt, opts);
- var statement = function(params, cb) {
- var db = alasql.databases[databaseid];
+ var sel = document.querySelector(selector);
+ if (!sel && sel.tagName !== 'TABLE') {
+ throw new Error('Selected HTML element is not a TABLE');
+ }
- if (db.engineid && alasql.engines[db.engineid].updateTable) {
+ var res = [];
+ var headers = opt.headers;
- return alasql.engines[db.engineid].updateTable(
- databaseid,
- tableid,
- assignfn,
- wherefn,
- params,
- cb
- );
+ if (headers && !Array.isArray(headers)) {
+ headers = [];
+ var ths = sel.querySelector('thead tr').children;
+ for (var i = 0; i < ths.length; i++) {
+ if (
+ !(ths.item(i).style && ths.item(i).style.display === 'none' && opt.skipdisplaynone)
+ ) {
+ headers.push(ths.item(i).textContent);
+ } else {
+ headers.push(undefined);
+ }
}
+ }
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].loadTableData(databaseid, tableid);
- }
+ var trs = sel.querySelectorAll('tbody tr');
- var table = db.tables[tableid];
- if (!table) {
- throw new Error("Table '" + tableid + "' not exists");
- }
- // table.dirty = true;
- var numrows = 0;
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
- if (!wherefn || wherefn(table.data[i], params, alasql)) {
- if (table.update) {
- table.update(assignfn, i, params);
+ for (var j = 0; j < trs.length; j++) {
+ var tds = trs.item(j).children;
+ var r = {};
+ for (i = 0; i < tds.length; i++) {
+ if (
+ !(tds.item(i).style && tds.item(i).style.display === 'none' && opt.skipdisplaynone)
+ ) {
+ if (headers) {
+ r[headers[i]] = tds.item(i).textContent;
} else {
- assignfn(table.data[i], params, alasql);
+ r[i] = tds.item(i).textContent;
+
}
- numrows++;
}
}
+ res.push(r);
+ }
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].saveTableData(databaseid, tableid);
- }
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ return res;
+};
- if (cb) cb(numrows);
- return numrows;
- };
- return statement;
+alasql.from.RANGE = function(start, finish, cb, idx, query) {
+ var res = [];
+ for (var i = start; i <= finish; i++) {
+ res.push(i);
+ }
+ // res = new alasql.Recordset({data:res,columns:{columnid:'_'}});
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ return res;
};
-yy.Update.prototype.execute = function(databaseid, params, cb) {
- return this.compile(databaseid)(params, cb);
+// Read data from any file
+alasql.from.FILE = function(filename, opts, cb, idx, query) {
+ var fname;
+ if (typeof filename === 'string') {
+ fname = filename;
+ } else if (filename instanceof Event) {
+ fname = filename.target.files[0].name;
+ } else {
+ throw new Error('Wrong usage of FILE() function');
+ }
+
+ var parts = fname.split('.');
+
+ var ext = parts[parts.length - 1].toUpperCase();
+
+ if (alasql.from[ext]) {
+
+ return alasql.from[ext](filename, opts, cb, idx, query);
+ } else {
+ throw new Error('Cannot recognize file type for loading');
+ }
};
-/*
-//
-// SET for Alasql.js
-// Date: 01.12.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+// Read JSON file
-/* global alasql, yy */
+alasql.from.JSON = function(filename, opts, cb, idx, query) {
+ var res;
-yy.Merge = function(params) {
- return yy.extend(this, params);
+ filename = alasql.utils.autoExtFilename(filename, 'json', opts);
+ alasql.utils.loadFile(filename, !!cb, function(data) {
+
+ // res = [{a:1}];
+ res = JSON.parse(data);
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ });
+ return res;
};
-yy.Merge.prototype.toString = function() {
- var s = 'MERGE ';
- s += this.into.tableid + ' ';
- if (this.into.as) s += 'AS ' + this.into.as + ' ';
- s += 'USING ' + this.using.tableid + ' ';
- if (this.using.as) s += 'AS ' + this.using.as + ' ';
- s += 'ON ' + this.on.toString() + ' ';
- this.matches.forEach(function(m) {
- s += 'WHEN ';
- if (!m.matched) s += 'NOT ';
- s += 'MATCHED ';
- if (m.bytarget) s += 'BY TARGET ';
- if (m.bysource) s += 'BY SOURCE ';
- if (m.expr) s += 'AND' + ' ' + m.expr.toString() + ' ';
- s += 'THEN ';
- if (m.action.delete) s += 'DELETE ';
- if (m.action.insert) {
- s += 'INSERT ';
- if (m.action.columns) s += '(' + m.action.columns.toString() + ') ';
- if (m.action.values) s += 'VALUES (' + m.action.values.toString() + ') ';
- if (m.action.defaultvalues) s += 'DEFAULT VALUES ';
+
+alasql.from.TXT = function(filename, opts, cb, idx, query) {
+ var res;
+ filename = alasql.utils.autoExtFilename(filename, 'txt', opts);
+ alasql.utils.loadFile(filename, !!cb, function(data) {
+ res = data.split(/\r?\n/);
+
+ // Remove last line if empty
+ if (res[res.length - 1] === '') {
+ res.pop();
}
- if (m.action.update) {
- s += 'UPDATE ';
- s +=
- m.action.update
- .map(function(u) {
- return u.toString();
- })
- .join(',') + ' ';
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ // Please avoid '===' here
+ if (res[i] == +res[i]) {
+ // eslint:ignore
+ // jshint ignore:line
+ res[i] = +res[i];
+ }
+ res[i] = [res[i]];
+ }
+ if (cb) {
+ res = cb(res, idx, query);
}
});
+ return res;
+};
- return s;
+alasql.from.TAB = alasql.from.TSV = function(filename, opts, cb, idx, query) {
+ opts = opts || {};
+ opts.separator = '\t';
+ filename = alasql.utils.autoExtFilename(filename, 'tab', opts);
+ opts.autoext = false;
+ return alasql.from.CSV(filename, opts, cb, idx, query);
};
-yy.Merge.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
+alasql.from.CSV = function(contents, opts, cb, idx, query) {
+ var opt = {
+ separator: ',',
+ quote: '"',
+ headers: true,
+ };
+ alasql.utils.extend(opt, opts);
+ var res;
+ var hs = [];
+ function parseText(text) {
+ var delimiterCode = opt.separator.charCodeAt(0);
+ var quoteCode = opt.quote.charCodeAt(0);
+
+ var EOL = {},
+ EOF = {},
+ rows = [],
+ N = text.length,
+ I = 0,
+ n = 0,
+ t,
+ eol;
+ function token() {
+ if (I >= N) {
+ return EOF;
+ }
+ if (eol) {
+ return (eol = false), EOL;
+ }
+ var j = I;
+ if (text.charCodeAt(j) === quoteCode) {
+ var i = j;
+ while (i++ < N) {
+ if (text.charCodeAt(i) === quoteCode) {
+ if (text.charCodeAt(i + 1) !== quoteCode) {
+ break;
+ }
+ ++i;
+ }
+ }
+ I = i + 2;
+ var c = text.charCodeAt(i + 1);
+ if (c === 13) {
+ eol = true;
+ if (text.charCodeAt(i + 2) === 10) {
+ ++I;
+ }
+ } else if (c === 10) {
+ eol = true;
+ }
+ return text.substring(j + 1, i).replace(/""/g, '"');
+ }
+ while (I < N) {
+ var c = text.charCodeAt(I++),
+ k = 1;
+ if (c === 10) {
+ eol = true;
+ } else if (c === 13) {
+ eol = true;
+ if (text.charCodeAt(I) === 10) {
+ ++I;
+ ++k;
+ }
+ } else if (c !== delimiterCode) {
+ continue;
+ }
+ return text.substring(j, I - k);
+ }
+ return text.substring(j);
+ }
- if (cb) res = cb(res);
- return res;
-};
+ while ((t = token()) !== EOF) {
+ var a = [];
+ while (t !== EOL && t !== EOF) {
+ a.push(t.trim());
+ t = token();
+ }
-/*
-//
-// UPDATE for Alasql.js
-// Date: 03.11.2014
-// Modified: 16.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ if (opt.headers) {
+ if (n === 0) {
+ if (typeof opt.headers === 'boolean') {
+ hs = a;
+ } else if (Array.isArray(opt.headers)) {
+ hs = opt.headers;
+ var r = {};
+ hs.forEach(function(h, idx) {
+ r[h] = a[idx];
+ // Please avoid === here
+ if (
+ typeof r[h] !== 'undefined' &&
+ r[h].length !== 0 &&
+ r[h].trim() == +r[h]
+ ) {
+ // jshint ignore:line
+ r[h] = +r[h];
+ }
+ });
+ rows.push(r);
+ }
+ } else {
+ var r = {};
+ hs.forEach(function(h, idx) {
+ r[h] = a[idx];
+ if (
+ typeof r[h] !== 'undefined' &&
+ r[h].length !== 0 &&
+ r[h].trim() == +r[h]
+ ) {
+ // jshint ignore:line
+ r[h] = +r[h];
+ }
+ });
+ rows.push(r);
+ }
+ n++;
+ } else {
+ rows.push(a);
+ }
+ }
-/* global yy alasql */
+ res = rows;
-// CREATE DATABASE databaseid
-yy.CreateDatabase = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateDatabase.prototype.toString = function() {
- var s = 'CREATE';
- if (this.engineid) s += ' ' + this.engineid;
- s += ' DATABASE';
- if (this.ifnotexists) s += ' IF NOT EXISTS';
- s += ' ' + this.databaseid;
- if (this.args && this.args.length > 0) {
- s +=
- '(' +
- this.args
- .map(function(arg) {
- return arg.toString();
- })
- .join(', ') +
- ')';
- }
- if (this.as) s += ' AS ' + this.as;
- return s;
-};
-//yy.CreateDatabase.prototype.compile = returnUndefined;
-yy.CreateDatabase.prototype.execute = function(databaseid, params, cb) {
- var args;
- if (this.args && this.args.length > 0) {
- args = this.args.map(function(arg) {
+ if (opt.headers) {
+ if (query && query.sources && query.sources[idx]) {
+ var columns = (query.sources[idx].columns = []);
+ hs.forEach(function(h) {
+ columns.push({columnid: h});
+ });
+ }
+ }
- return new Function('params,alasql', 'var y;return ' + arg.toJS())(params, alasql);
- });
+ if (cb) {
+ res = cb(res, idx, query);
+ }
}
- if (this.engineid) {
- var res = alasql.engines[this.engineid].createDatabase(
- this.databaseid,
- this.args,
- this.ifnotexists,
- this.as,
- cb
- );
- return res;
+ if (new RegExp('\n').test(contents)) {
+ parseText(contents);
} else {
- var dbid = this.databaseid;
- if (alasql.databases[dbid]) {
- throw new Error("Database '" + dbid + "' already exists");
- }
- var a = new alasql.Database(dbid);
- var res = 1;
- if (cb) return cb(res);
- return res;
+ contents = alasql.utils.autoExtFilename(contents, 'csv', opts);
+ alasql.utils.loadFile(contents, !!cb, parseText, query.cb);
}
+ return res;
};
-// CREATE DATABASE databaseid
-yy.AttachDatabase = function(params) {
- return yy.extend(this, params);
-};
-yy.AttachDatabase.prototype.toString = function(args) {
- var s = 'ATTACH';
- if (this.engineid) s += ' ' + this.engineid;
- s += ' DATABASE' + ' ' + this.databaseid;
- // TODO add params
- if (args) {
- s += '(';
- if (args.length > 0) {
- s += args
- .map(function(arg) {
- return arg.toString();
- })
- .join(', ');
- }
- s += ')';
+function XLSXLSX(X, filename, opts, cb, idx, query) {
+ var opt = {};
+ opts = opts || {};
+ alasql.utils.extend(opt, opts);
+ if (typeof opt.headers === 'undefined') {
+ opt.headers = true;
}
- if (this.as) s += ' AS' + ' ' + this.as;
- return s;
-};
-//yy.CreateDatabase.prototype.compile = returnUndefined;
-yy.AttachDatabase.prototype.execute = function(databaseid, params, cb) {
- if (!alasql.engines[this.engineid]) {
- throw new Error('Engine "' + this.engineid + '" is not defined.');
+ var res;
+
+ /**
+ * see https://github.com/SheetJS/js-xlsx/blob/5ae6b1965bfe3764656a96f536b356cd1586fec7/README.md
+ * for example of using readAsArrayBuffer under `Parsing Workbooks`
+ */
+ function fixdata(data) {
+ var o = '',
+ l = 0,
+ w = 10240;
+ for (; l < data.byteLength / w; ++l)
+ o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
+ o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
+ return o;
+ }
+ function getHeaderText(text) {
+ // if casesensitive option is set to false and there is a text value return lowercase value of text
+ if (text && alasql.options.casesensitive === false) {
+ return text.toLowerCase();
+ } else {
+ return text;
+ }
}
- var res = alasql.engines[this.engineid].attachDatabase(
- this.databaseid,
- this.as,
- this.args,
- params,
- cb
+ filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
+ alasql.utils.loadBinaryFile(
+ filename,
+ !!cb,
+ function(data) {
+ // function processData(data) {
+ if (data instanceof ArrayBuffer) {
+ var arr = fixdata(data);
+ var workbook = X.read(btoa(arr), {type: 'base64'});
+ } else {
+ var workbook = X.read(data, {type: 'binary'});
+ }
+
+ var sheetid;
+ if (typeof opt.sheetid === 'undefined') {
+ sheetid = workbook.SheetNames[0];
+ } else if (typeof opt.sheetid === 'number') {
+ sheetid = workbook.SheetNames[opt.sheetid];
+ } else {
+ sheetid = opt.sheetid;
+ }
+ var range;
+ var res = [];
+ if (typeof opt.range === 'undefined') {
+ range = workbook.Sheets[sheetid]['!ref'];
+ } else {
+ range = opt.range;
+ if (workbook.Sheets[sheetid][range]) {
+ range = workbook.Sheets[sheetid][range];
+ }
+ }
+ // if range has some value then data is present in the current sheet
+ // else current sheet is empty
+ if (range) {
+ var rg = range.split(':');
+ var col0 = rg[0].match(/[A-Z]+/)[0];
+ var row0 = +rg[0].match(/[0-9]+/)[0];
+ var col1 = rg[1].match(/[A-Z]+/)[0];
+ var row1 = +rg[1].match(/[0-9]+/)[0];
+
+ var hh = {};
+ var xlscnCol0 = alasql.utils.xlscn(col0);
+ var xlscnCol1 = alasql.utils.xlscn(col1);
+ for (var j = xlscnCol0; j <= xlscnCol1; j++) {
+ var col = alasql.utils.xlsnc(j);
+ if (opt.headers) {
+ if (workbook.Sheets[sheetid][col + '' + row0]) {
+ hh[col] = getHeaderText(workbook.Sheets[sheetid][col + '' + row0].v);
+ } else {
+ hh[col] = getHeaderText(col);
+ }
+ } else {
+ hh[col] = col;
+ }
+ }
+ if (opt.headers) {
+ row0++;
+ }
+ for (var i = row0; i <= row1; i++) {
+ var row = {};
+ for (var j = xlscnCol0; j <= xlscnCol1; j++) {
+ var col = alasql.utils.xlsnc(j);
+ if (workbook.Sheets[sheetid][col + '' + i]) {
+ row[hh[col]] = workbook.Sheets[sheetid][col + '' + i].v;
+ }
+ }
+ res.push(row);
+ }
+ } else {
+ res.push([]);
+ }
+
+ // Remove last empty line (issue #548)
+ if (
+ res.length > 0 &&
+ res[res.length - 1] &&
+ Object.keys(res[res.length - 1]).length == 0
+ ) {
+ res.pop();
+ }
+
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ },
+ function(err) {
+ throw err;
+ }
);
+
return res;
+}
+
+alasql.from.XLS = function(filename, opts, cb, idx, query) {
+ opts = opts || {};
+ filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
+ opts.autoExt = false;
+ return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
};
-// CREATE DATABASE databaseid
-yy.DetachDatabase = function(params) {
- return yy.extend(this, params);
+alasql.from.XLSX = function(filename, opts, cb, idx, query) {
+ opts = opts || {};
+ filename = alasql.utils.autoExtFilename(filename, 'xlsx', opts);
+ opts.autoExt = false;
+ return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
};
-yy.DetachDatabase.prototype.toString = function() {
- var s = 'DETACH';
- s += ' DATABASE' + ' ' + this.databaseid;
- return s;
+
+alasql.from.ODS = function(filename, opts, cb, idx, query) {
+ opts = opts || {};
+ filename = alasql.utils.autoExtFilename(filename, 'ods', opts);
+ opts.autoExt = false;
+ return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
};
-//yy.CreateDatabase.prototype.compile = returnUndefined;
-yy.DetachDatabase.prototype.execute = function(databaseid, params, cb) {
- if (!alasql.databases[this.databaseid].engineid) {
- throw new Error(
- 'Cannot detach database "' + this.engineid + '", because it was not attached.'
- );
- }
+
+alasql.from.XML = function(filename, opts, cb, idx, query) {
var res;
- var dbid = this.databaseid;
+ alasql.utils.loadFile(filename, !!cb, function(data) {
- if (dbid === alasql.DEFAULTDATABASEID) {
- throw new Error('Drop of default database is prohibited');
- }
+ // res = [{a:1}];
- if (!alasql.databases[dbid]) {
- if (!this.ifexists) {
- throw new Error("Database '" + dbid + "' does not exist");
- } else {
- res = 0;
- }
- } else {
- delete alasql.databases[dbid];
- if (dbid === alasql.useid) {
- alasql.use();
- }
- res = 1;
- }
- if (cb) cb(res);
- return res;
- // var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, cb);
- // return res;
-};
+ res = xmlparse(data).root;
-// USE DATABSE databaseid
-// USE databaseid
-yy.UseDatabase = function(params) {
- return yy.extend(this, params);
-};
-yy.UseDatabase.prototype.toString = function() {
- return 'USE' + ' ' + 'DATABASE' + ' ' + this.databaseid;
-};
-//yy.UseDatabase.prototype.compile = returnUndefined;
-yy.UseDatabase.prototype.execute = function(databaseid, params, cb) {
- var dbid = this.databaseid;
- if (!alasql.databases[dbid]) {
- throw new Error("Database '" + dbid + "' does not exist");
- }
- alasql.use(dbid);
- var res = 1;
- if (cb) cb(res);
+ if (cb) res = cb(res, idx, query);
+ });
return res;
};
-// DROP DATABASE databaseid
-yy.DropDatabase = function(params) {
- return yy.extend(this, params);
-};
-yy.DropDatabase.prototype.toString = function() {
- var s = 'DROP';
- if (this.ifexists) s += ' IF EXISTS';
- s += ' DATABASE ' + this.databaseid;
- return s;
-};
-//yy.DropDatabase.prototype.compile = returnUndefined;
-yy.DropDatabase.prototype.execute = function(databaseid, params, cb) {
- if (this.engineid) {
- return alasql.engines[this.engineid].dropDatabase(this.databaseid, this.ifexists, cb);
+/**
+ * Parse the given string of `xml`.
+ *
+ * @param {String} xml
+ * @return {Object}
+ * @api public
+ */
+
+function xmlparse(xml) {
+ xml = xml.trim();
+
+ // strip comments
+ xml = xml.replace(//g, '');
+
+ return document();
+
+ /**
+ * XML document.
+ */
+
+ function document() {
+ return {
+ declaration: declaration(),
+ root: tag(),
+ };
}
- var res;
- var dbid = this.databaseid;
+ /**
+ * Declaration.
+ */
- if (dbid === alasql.DEFAULTDATABASEID) {
- throw new Error('Drop of default database is prohibited');
+ function declaration() {
+ var m = match(/^<\?xml\s*/);
+ if (!m) return;
+
+ // tag
+ var node = {
+ attributes: {},
+ };
+
+ // attributes
+ while (!(eos() || is('?>'))) {
+ var attr = attribute();
+ if (!attr) return node;
+ node.attributes[attr.name] = attr.value;
+ }
+
+ match(/\?>\s*/);
+
+ return node;
}
- if (!alasql.databases[dbid]) {
- if (!this.ifexists) {
- throw new Error("Database '" + dbid + "' does not exist");
- } else {
- res = 0;
+
+ /**
+ * Tag.
+ */
+
+ function tag() {
+ var m = match(/^<([\w-:.]+)\s*/);
+ if (!m) return;
+
+ // name
+ var node = {
+ name: m[1],
+ attributes: {},
+ children: [],
+ };
+
+ // attributes
+ while (!(eos() || is('>') || is('?>') || is('/>'))) {
+ var attr = attribute();
+ if (!attr) return node;
+ node.attributes[attr.name] = attr.value;
}
- } else {
- if (alasql.databases[dbid].engineid) {
- throw new Error(
- "Cannot drop database '" + dbid + "', because it is attached. Detach it."
- );
+
+ // self closing tag
+ if (match(/^\s*\/>\s*/)) {
+ return node;
}
- delete alasql.databases[dbid];
- if (dbid === alasql.useid) {
- alasql.use();
+ match(/\??>\s*/);
+
+ // content
+ node.content = content();
+
+ // children
+ var child;
+ while ((child = tag())) {
+ node.children.push(child);
}
- res = 1;
- }
- if (cb) cb(res);
- return res;
-};
-/*
-//
-// SET for Alasql.js
-// Date: 01.12.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ // closing
+ match(/^<\/[\w-:.]+>\s*/);
-yy.Declare = function(params) {
- return yy.extend(this, params);
-};
-yy.Declare.prototype.toString = function() {
- var s = 'DECLARE ';
- if (this.declares && this.declares.length > 0) {
- s = this.declares
- .map(function(declare) {
- var s = '';
- s += '@' + declare.variable + ' ';
- s += declare.dbtypeid;
- if (this.dbsize) {
- s += '(' + this.dbsize;
- if (this.dbprecision) {
- s += ',' + this.dbprecision;
- }
- s += ')';
- }
- if (declare.expression) {
- s += ' = ' + declare.expression.toString();
- }
- return s;
- })
- .join(',');
+ return node;
}
- return s;
-};
-yy.Declare.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
- if (this.declares && this.declares.length > 0) {
- this.declares.map(function(declare) {
- var dbtypeid = declare.dbtypeid;
- if (!alasql.fn[dbtypeid]) {
- dbtypeid = dbtypeid.toUpperCase();
- }
- alasql.declares[declare.variable] = {
- dbtypeid: dbtypeid,
- dbsize: declare.dbsize,
- dbprecision: declare.dbprecision,
- };
+ /**
+ * Text content.
+ */
- // Set value
- if (declare.expression) {
+ function content() {
+ var m = match(/^([^<]*)/);
+ if (m) return m[1];
+ return '';
+ }
- alasql.vars[declare.variable] = new Function(
- 'params,alasql',
- 'return ' + declare.expression.toJS('({})', '', null)
- )(params, alasql);
- if (alasql.declares[declare.variable]) {
- alasql.vars[declare.variable] = alasql.stdfn.CONVERT(
- alasql.vars[declare.variable],
- alasql.declares[declare.variable]
- );
- }
- }
- });
+ /**
+ * Attribute.
+ */
+
+ function attribute() {
+ var m = match(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);
+ if (!m) return;
+ return {name: m[1], value: strip(m[2])};
}
- if (cb) {
- res = cb(res);
+
+ /**
+ * Strip quotes from `val`.
+ */
+
+ function strip(val) {
+ return val.replace(/^['"]|['"]$/g, '');
}
- return res;
-};
-/*
-//
-// SHOW for Alasql.js
-// Date: 19.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ /**
+ * Match `re` and advance the string.
+ */
-yy.ShowDatabases = function(params) {
- return yy.extend(this, params);
-};
-yy.ShowDatabases.prototype.toString = function() {
- var s = 'SHOW DATABASES';
- if (this.like) s += 'LIKE ' + this.like.toString();
- return s;
-};
-yy.ShowDatabases.prototype.execute = function(databaseid, params, cb) {
- if (this.engineid) {
- return alasql.engines[this.engineid].showDatabases(this.like, cb);
- } else {
- var self = this;
- var res = [];
- for (var dbid in alasql.databases) {
- res.push({databaseid: dbid});
- }
- if (self.like && res && res.length > 0) {
- res = res.filter(function(d) {
- // return d.databaseid.match(new RegExp((self.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g'));
- return alasql.utils.like(self.like.value, d.databaseid);
- });
- }
- if (cb) cb(res);
- return res;
+ function match(re) {
+ var m = xml.match(re);
+ if (!m) return;
+ xml = xml.slice(m[0].length);
+ return m;
}
-};
-yy.ShowTables = function(params) {
- return yy.extend(this, params);
-};
-yy.ShowTables.prototype.toString = function() {
- var s = 'SHOW TABLES';
- if (this.databaseid) s += ' FROM ' + this.databaseid;
- if (this.like) s += ' LIKE ' + this.like.toString();
- return s;
-};
-yy.ShowTables.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[this.databaseid || databaseid];
+ /**
+ * End-of-source.
+ */
- var self = this;
- var res = [];
- for (var tableid in db.tables) {
- res.push({tableid: tableid});
+ function eos() {
+ return 0 == xml.length;
}
- if (self.like && res && res.length > 0) {
- res = res.filter(function(d) {
- //return d.tableid.match(new RegExp((self.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g'));
- return alasql.utils.like(self.like.value, d.tableid);
- });
+
+ /**
+ * Check for `prefix`.
+ */
+
+ function is(prefix) {
+ return 0 == xml.indexOf(prefix);
}
- if (cb) cb(res);
+}
+
+alasql.from.GEXF = function(filename, opts, cb, idx, query) {
+ var res;
+ alasql('SEARCH FROM XML(' + filename + ')', [], function(data) {
+ res = data;
+
+ if (cb) res = cb(res);
+ });
return res;
};
-yy.ShowColumns = function(params) {
+/*
+//
+// HELP for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* globals: alasql, yy */
+
+/**
+ Print statement
+ @class
+ @param {object} params Initial setup properties
+*/
+
+/* global alasql, yy */
+
+yy.Print = function(params) {
return yy.extend(this, params);
};
-yy.ShowColumns.prototype.toString = function() {
- var s = 'SHOW COLUMNS';
- if (this.table.tableid) s += ' FROM ' + this.table.tableid;
- if (this.databaseid) s += ' FROM ' + this.databaseid;
+
+/**
+ Generate SQL string
+ @this Print statement object
+*/
+yy.Print.prototype.toString = function() {
+ var s = 'PRINT';
+ if (this.statement) s += ' ' + this.statement.toString();
return s;
};
-yy.ShowColumns.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[this.databaseid || databaseid];
- var table = db.tables[this.table.tableid];
+/**
+ Print result of select statement or expression
+ @param {string} databaseid Database identificator
+ @param {object} params Query parameters
+ @param {statement-callback} cb Callback function
+ @this Print statement object
+*/
+yy.Print.prototype.execute = function(databaseid, params, cb) {
- if (table && table.columns) {
- var res = table.columns.map(function(col) {
- return {columnid: col.columnid, dbtypeid: col.dbtypeid, dbsize: col.dbsize};
+ var self = this;
+ var res = 1;
+
+ alasql.precompile(this, databaseid, params); /** @todo Change from alasql to this */
+
+ if (this.exprs && this.exprs.length > 0) {
+ var rs = this.exprs.map(function(expr) {
+
+ var exprfn = new Function(
+ 'params,alasql,p',
+ 'var y;return ' + expr.toJS('({})', '', null)
+ ).bind(self);
+ var r = exprfn(params, alasql);
+ return JSONtoString(r);
});
- if (cb) cb(res);
- return res;
+ console.log.apply(console, rs);
+ } else if (this.select) {
+ var r = this.select.execute(databaseid, params);
+ console.log(JSONtoString(r));
} else {
- if (cb) cb([]);
- return [];
- }
-};
-
-yy.ShowIndex = function(params) {
- return yy.extend(this, params);
-};
-yy.ShowIndex.prototype.toString = function() {
- var s = 'SHOW INDEX';
- if (this.table.tableid) s += ' FROM ' + this.table.tableid;
- if (this.databaseid) s += ' FROM ' + this.databaseid;
- return s;
-};
-yy.ShowIndex.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[this.databaseid || databaseid];
- var table = db.tables[this.table.tableid];
- var res = [];
- if (table && table.indices) {
- for (var ind in table.indices) {
- res.push({hh: ind, len: Object.keys(table.indices[ind]).length});
- }
+ console.log();
}
- if (cb) cb(res);
+ if (cb) res = cb(res);
return res;
};
-yy.ShowCreateTable = function(params) {
+/*
+//
+// HELP for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Source = function(params) {
return yy.extend(this, params);
};
-yy.ShowCreateTable.prototype.toString = function() {
- var s = 'SHOW CREATE TABLE ' + this.table.tableid;
- if (this.databaseid) s += ' FROM ' + this.databaseid;
+yy.Source.prototype.toString = function() {
+ var s = 'SOURCE';
+ if (this.url) s += " '" + this.url + " '";
return s;
};
-yy.ShowCreateTable.prototype.execute = function(databaseid) {
- var db = alasql.databases[this.databaseid || databaseid];
- var table = db.tables[this.table.tableid];
- if (table) {
- var s = 'CREATE TABLE ' + this.table.tableid + ' (';
- var ss = [];
- if (table.columns) {
- table.columns.forEach(function(col) {
- var a = col.columnid + ' ' + col.dbtypeid;
- if (col.dbsize) a += '(' + col.dbsize + ')';
- if (col.primarykey) a += ' PRIMARY KEY';
- // TODO extend
- ss.push(a);
- });
- s += ss.join(', ');
+
+// SOURCE FILE
+yy.Source.prototype.execute = function(databaseid, params, cb) {
+
+ var res;
+ loadFile(
+ this.url,
+ !!cb,
+ function(data) {
+
+ // res = 1;
+ res = alasql(data);
+ if (cb) res = cb(res);
+ return res;
+ },
+ function(err) {
+ throw err;
}
- s += ')';
- return s;
- } else {
- throw new Error('There is no such table "' + this.table.tableid + '"');
- }
+ );
+ return res;
};
/*
//
-// SET for Alasql.js
-// Date: 01.12.2014
+// HELP for Alasql.js
+// Date: 03.11.2014
// (c) 2014, Andrey Gershun
//
*/
-yy.SetVariable = function(params) {
+/* global alasql, yy */
+
+yy.Require = function(params) {
return yy.extend(this, params);
};
-yy.SetVariable.prototype.toString = function() {
- var s = 'SET ';
- if (typeof this.value != 'undefined')
- s += this.variable.toUpperCase() + ' ' + (this.value ? 'ON' : 'OFF');
- if (this.expression) s += this.method + this.variable + ' = ' + this.expression.toString();
+yy.Require.prototype.toString = function() {
+ var s = 'REQUIRE';
+ if (this.paths && this.paths.length > 0) {
+ s += this.paths
+ .map(function(path) {
+ return path.toString();
+ })
+ .join(',');
+ }
+ if (this.plugins && this.plugins.length > 0) {
+ s += this.plugins
+ .map(function(plugin) {
+ return plugin.toUpperCase();
+ })
+ .join(',');
+ }
return s;
};
-yy.SetVariable.prototype.execute = function(databaseid, params, cb) {
-
- if (typeof this.value != 'undefined') {
- var val = this.value;
- if (val == 'ON') val = true;
- else if (val == 'OFF') val = false;
- // if(this.method == '@') {
- alasql.options[this.variable] = val;
- // } else {
- // params[this.variable] = val;
- // }
- } else if (this.expression) {
- if (this.exists) {
- this.existsfn = this.exists.map(function(ex) {
- var nq = ex.compile(databaseid);
- if (nq.query && !nq.query.modifier) nq.query.modifier = 'RECORDSET';
- return nq;
- // return ex.compile(databaseid);
- // TODO Include modifier
- });
- }
- if (this.queries) {
- this.queriesfn = this.queries.map(function(q) {
- var nq = q.compile(databaseid);
- if (nq.query && !nq.query.modifier) nq.query.modifier = 'RECORDSET';
- return nq;
- // TODO Include modifier
- });
- }
+/**
+ Attach plug-in for Alasql
+ */
+yy.Require.prototype.execute = function(databaseid, params, cb) {
+ var self = this;
+ var res = 0;
+ var ss = '';
- var res = new Function(
- 'params,alasql',
- 'return ' + this.expression.toJS('({})', '', null)
- ).bind(this)(params, alasql);
- if (alasql.declares[this.variable]) {
- res = alasql.stdfn.CONVERT(res, alasql.declares[this.variable]);
- }
- if (this.props && this.props.length > 0) {
- if (this.method == '@') {
- var fs = "alasql.vars['" + this.variable + "']";
- } else {
- var fs = "params['" + this.variable + "']";
- }
- fs += this.props
- .map(function(prop) {
- if (typeof prop == 'string') {
- return "['" + prop + "']";
- } else if (typeof prop == 'number') {
- return '[' + prop + ']';
- } else {
+ if (this.paths && this.paths.length > 0) {
+ this.paths.forEach(function(path) {
+ loadFile(path.value, !!cb, function(data) {
+ res++;
- return '[' + prop.toJS() + ']';
- // } else {
+ ss += data;
+ if (res < self.paths.length) return;
- // throw new Error('Wrong SET property');
- }
- })
- .join();
+ new Function('params,alasql', ss)(params, alasql);
+ if (cb) res = cb(res);
+ });
+ });
+ } else if (this.plugins && this.plugins.length > 0) {
+ this.plugins.forEach(function(plugin) {
+ // If plugin is not loaded already
+ if (!alasql.plugins[plugin]) {
+ loadFile(alasql.path + '/alasql-' + plugin.toLowerCase() + '.js', !!cb, function(
+ data
+ ) {
+ // Execute all plugins at the same time
+ res++;
+ ss += data;
+ if (res < self.plugins.length) return;
- new Function('value,params,alasql', 'var y;' + fs + '=value')(res, params, alasql);
- } else {
- if (this.method == '@') {
- alasql.vars[this.variable] = res;
- } else {
- params[this.variable] = res;
+ new Function('params,alasql', ss)(params, alasql);
+ alasql.plugins[plugin] = true; // Plugin is loaded
+ if (cb) res = cb(res);
+ });
}
- }
+ });
+ } else {
+ if (cb) res = cb(res);
}
- var res = 1;
- if (cb) res = cb(res);
return res;
};
-// Console functions
+/*
+//
+// HELP for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
-/* global alasql, yy */
+yy.Assert = function(params) {
+ return yy.extend(this, params);
+};
+yy.Source.prototype.toString = function() {
+ var s = 'ASSERT';
+ if (this.value) s += ' ' + JSON.stringify(this.value);
+ return s;
+};
-alasql.test = function(name, times, fn) {
- if (arguments.length === 0) {
- alasql.log(alasql.con.results);
- return;
+// SOURCE FILE
+yy.Assert.prototype.execute = function(databaseid) {
+
+ if (!deepEqual(alasql.res, this.value)) {
+ // if(this.message) {
+ // throw this.
+ // } else {
+ throw new Error(
+ (this.message || 'Assert wrong') +
+ ': ' +
+ JSON.stringify(alasql.res) +
+ ' == ' +
+ JSON.stringify(this.value)
+ );
+ // }
}
+ return 1;
+};
- var tm = Date.now();
+//
+// 91websql.js
+// WebSQL database support
+// (c) 2014, Andrey Gershun
+//
- if (arguments.length === 1) {
- fn();
- alasql.con.log(Date.now() - tm);
- return;
- }
+var WEBSQL = (alasql.engines.WEBSQL = function() {});
- if (arguments.length === 2) {
- fn = times;
- times = 1;
+WEBSQL.createDatabase = function(wdbid, args, dbid, cb) {
+ var res = 1;
+ var wdb = openDatabase(wdbid, args[0], args[1], args[2]);
+ if (this.dbid) {
+ var db = alasql.createDatabase(this.dbid);
+ db.engineid = 'WEBSQL';
+ db.wdbid = wdbid;
+ sb.wdb = db;
}
-
- for (var i = 0; i < times; i++) {
- fn();
+ if (!wdb) {
+ throw new Error('Cannot create WebSQL database "' + databaseid + '"');
}
- alasql.con.results[name] = Date.now() - tm;
+ if (cb) cb(res);
+ return res;
};
-// Console
-// alasql.log = function(sql, params) {
+WEBSQL.dropDatabase = function(databaseid) {
+ throw new Error('This is impossible to drop WebSQL database.');
+};
-// };
+WEBSQL.attachDatabase = function(databaseid, dbid, args, params, cb) {
+ var res = 1;
+ if (alasql.databases[dbid]) {
+ throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
+ }
+ alasqlopenDatabase(databaseid, args[0], args[1], args[2]);
+ return res;
+};
-/* global alasql, yy, utils */
+//
+// 91indexeddb.js
+// AlaSQL IndexedDB module
+// Date: 18.04.2015
+// (c) Andrey Gershun
+//
-// Console
-alasql.log = function(sql, params) {
- var olduseid = alasql.useid;
- var target = alasql.options.logtarget;
- // For node other
- if (utils.isNode) {
- target = 'console';
- }
+/* global alasql, yy, utils*/
- var res;
- if (typeof sql === 'string') {
- res = alasql(sql, params);
+var IDB = (alasql.engines.INDEXEDDB = function() {
+ '';
+});
+
+if (utils.hasIndexedDB) {
+ // For Chrome it work normally, for Firefox - simple shim
+ if (typeof utils.global.indexedDB.webkitGetDatabaseNames == 'function') {
+ IDB.getDatabaseNames = utils.global.indexedDB.webkitGetDatabaseNames.bind(
+ utils.global.indexedDB
+ );
} else {
- res = sql;
+ IDB.getDatabaseNames = function() {
+ var request = {};
+ var result = {
+ contains: function(name) {
+ return true; // Always return true
+ },
+ notsupported: true,
+ };
+ setTimeout(function() {
+ var event = {target: {result: result}};
+ request.onsuccess(event);
+ }, 0);
+ return request;
+ };
+ IDB.getDatabaseNamesNotSupported = true;
}
+}
- // For Node and console.output
- if (target === 'console' || utils.isNode) {
- if (typeof sql === 'string' && alasql.options.logprompt) {
- console.log(olduseid + '>', sql);
+//
+// SHOW DATABASES
+// work only in chrome
+//
+IDB.showDatabases = function(like, cb) {
+
+ var request = IDB.getDatabaseNames();
+ request.onsuccess = function(event) {
+ var dblist = event.target.result;
+ if (IDB.getDatabaseNamesNotSupported) {
+ throw new Error('SHOW DATABASE is not supported in this browser');
+ }
+ var res = [];
+ if (like) {
+ var relike = new RegExp(like.value.replace(/\%/g, '.*'), 'g');
+ }
+ for (var i = 0; i < dblist.length; i++) {
+ if (!like || dblist[i].match(relike)) {
+ res.push({databaseid: dblist[i]});
+ }
}
+ cb(res);
+ };
+};
- if (Array.isArray(res)) {
- if (console.table) {
- // For Chrome and other consoles
- console.table(res);
+IDB.createDatabase = function(ixdbid, args, ifnotexists, dbid, cb) {
+
+ var indexedDB = utils.global.indexedDB;
+ if (ifnotexists) {
+ var request2 = indexedDB.open(ixdbid, 1);
+ request2.onsuccess = function(event) {
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ } else {
+ var request1 = indexedDB.open(ixdbid, 1);
+ request1.onupgradeneeded = function(e) {
+
+ e.target.transaction.abort();
+ };
+ request1.onsuccess = function(e) {
+
+ if (ifnotexists) {
+ if (cb) cb(0);
} else {
- // Add print procedure
- console.log(JSONtoString(res));
+ throw new Error(
+ 'IndexedDB: Cannot create new database "' +
+ ixdbid +
+ '" because it already exists'
+ );
}
+ };
+ }
+
+};
+
+IDB.createDatabase = function(ixdbid, args, ifnotexists, dbid, cb) {
+ var indexedDB = utils.global.indexedDB;
+ if (IDB.getDatabaseNamesNotSupported) {
+ // Hack for Firefox
+ if (ifnotexists) {
+
+ var dbExists = true;
+ var request2 = indexedDB.open(ixdbid);
+
+ request2.onupgradeneeded = function(e) {
+
+ dbExists = false;
+ // e.target.transaction.abort();
+ // cb(0);
+ };
+ request2.onsuccess = function(event) {
+
+ event.target.result.close();
+ if (dbExists) {
+ if (cb) cb(0);
+ } else {
+ if (cb) cb(1);
+ }
+ };
} else {
- console.log(JSONtoString(res));
+
+ var request1 = indexedDB.open(ixdbid);
+ request1.onupgradeneeded = function(e) {
+ e.target.transaction.abort();
+ };
+ request1.onabort = function(event) {
+ if (cb) cb(1);
+ };
+ request1.onsuccess = function(event) {
+ event.target.result.close();
+ throw new Error(
+ 'IndexedDB: Cannot create new database "' +
+ ixdbid +
+ '" because it already exists'
+ );
+ // cb(0);
+ };
}
} else {
- var el;
- if (target === 'output') {
- el = document.getElementsByTagName('output')[0];
- } else {
- if (typeof target === 'string') {
- el = document.getElementById(target);
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event) {
+ var dblist = event.target.result;
+ if (dblist.contains(ixdbid)) {
+ if (ifnotexists) {
+ if (cb) cb(0);
+ return;
+ } else {
+ throw new Error(
+ 'IndexedDB: Cannot create new database "' +
+ ixdbid +
+ '" because it already exists'
+ );
+ }
+ }
+
+ var request2 = indexedDB.open(ixdbid, 1);
+ request2.onsuccess = function(event) {
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ };
+ }
+};
+
+IDB.dropDatabase = function(ixdbid, ifexists, cb) {
+ var indexedDB = utils.global.indexedDB;
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event) {
+ var dblist = event.target.result;
+ if (!dblist.contains(ixdbid)) {
+ if (ifexists) {
+ if (cb) cb(0);
+ return;
} else {
- // in case of DOM
- el = target;
+ throw new Error(
+ 'IndexedDB: Cannot drop new database "' + ixdbid + '" because it does not exist'
+ );
}
}
+ var request2 = indexedDB.deleteDatabase(ixdbid);
+ request2.onsuccess = function(event) {
- var s = '';
+ if (cb) cb(1);
+ };
+ };
+};
- if (typeof sql === 'string' && alasql.options.logprompt) {
- // s += ''+olduseid+'> '+alasql.pretty(sql)+'
';
- s += '' + alasql.pretty(sql) + ' ';
+IDB.attachDatabase = function(ixdbid, dbid, args, params, cb) {
+ if (!utils.hasIndexedDB) {
+ throw new Error('The current browser does not support IndexedDB');
+ }
+ var indexedDB = utils.global.indexedDB;
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event) {
+ var dblist = event.target.result;
+ if (!dblist.contains(ixdbid)) {
+ throw new Error(
+ 'IndexedDB: Cannot attach database "' + ixdbid + '" because it does not exist'
+ );
}
-
- if (Array.isArray(res)) {
- if (res.length === 0) {
- s += '[ ]
';
- } else if (typeof res[0] !== 'object' || Array.isArray(res[0])) {
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- s += '' + loghtml(res[i]) + '
';
- }
- } else {
- s += loghtml(res);
+ var request2 = indexedDB.open(ixdbid);
+ request2.onsuccess = function(event) {
+ var ixdb = event.target.result;
+ var db = new alasql.Database(dbid || ixdbid);
+ db.engineid = 'INDEXEDDB';
+ db.ixdbid = ixdbid;
+ db.tables = [];
+ var tblist = ixdb.objectStoreNames;
+ for (var i = 0; i < tblist.length; i++) {
+ db.tables[tblist[i]] = {};
}
- } else {
- s += loghtml(res);
+
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ };
+};
+
+IDB.createTable = function(databaseid, tableid, ifnotexists, cb) {
+ var indexedDB = utils.global.indexedDB;
+
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event__) {
+ var dblist = event__.target.result;
+ if (!dblist.contains(ixdbid)) {
+ throw new Error(
+ 'IndexedDB: Cannot create table in database "' +
+ ixdbid +
+ '" because it does not exist'
+ );
}
- el.innerHTML += s;
- }
+ var request2 = indexedDB.open(ixdbid);
+ request2.onversionchange = function(event_) {
+
+ event_.target.result.close();
+ };
+ request2.onsuccess = function(event_) {
+ var version = event_.target.result.version;
+ event_.target.result.close();
+
+ var request3 = indexedDB.open(ixdbid, version + 1);
+ request3.onupgradeneeded = function(event) {
+ var ixdb = event.target.result;
+
+ var store = ixdb.createObjectStore(tableid, {autoIncrement: true});
+
+ };
+ request3.onsuccess = function(event) {
+
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ request3.onerror = function(event) {
+ throw event;
+
+ };
+ request3.onblocked = function(event) {
+ throw new Error(
+ 'Cannot create table "' +
+ tableid +
+ '" because database "' +
+ databaseid +
+ '" is blocked'
+ );
+
+ };
+ };
+ };
+};
+
+IDB.dropTable = function(databaseid, tableid, ifexists, cb) {
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event) {
+ var dblist = event.target.result;
+
+ if (!dblist.contains(ixdbid)) {
+ throw new Error(
+ 'IndexedDB: Cannot drop table in database "' +
+ ixdbid +
+ '" because it does not exist'
+ );
+ }
+
+ var request2 = indexedDB.open(ixdbid);
+ request2.onversionchange = function(event) {
+ event.target.result.close();
+ };
+
+ request2.onsuccess = function(event) {
+ var version = event.target.result.version;
+ event.target.result.close();
+
+ var request3 = indexedDB.open(ixdbid, version + 1);
+ request3.onupgradeneeded = function(event) {
+ var ixdb = event.target.result;
+ if (ixdb.objectStoreNames.contains(tableid)) {
+ ixdb.deleteObjectStore(tableid);
+ delete alasql.databases[databaseid].tables[tableid];
+ } else {
+ if (!ifexists) {
+ throw new Error(
+ 'IndexedDB: Cannot drop table "' +
+ tableid +
+ '" because it does not exist'
+ );
+ }
+ }
+ // var store = ixdb.createObjectStore(tableid);
+
+ };
+ request3.onsuccess = function(event) {
+
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ request3.onerror = function(event) {
+
+ throw event;
+ };
+ request3.onblocked = function(event) {
+ throw new Error(
+ 'Cannot drop table "' +
+ tableid +
+ '" because database "' +
+ databaseid +
+ '" is blocked'
+ );
+
+ };
+ };
+ };
};
-alasql.clear = function() {
- var target = alasql.options.logtarget;
- // For node other
+IDB.intoTable = function(databaseid, tableid, value, columns, cb) {
- if (utils.isNode || utils.isMeteorServer) {
- if (console.clear) {
- console.clear();
+ // console.trace();
+
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+ var request1 = indexedDB.open(ixdbid);
+ request1.onsuccess = function(event) {
+ var ixdb = event.target.result;
+ var tx = ixdb.transaction([tableid], 'readwrite');
+ var tb = tx.objectStore(tableid);
+
+ for (var i = 0, ilen = value.length; i < ilen; i++) {
+ tb.add(value[i]);
}
- } else {
- var el;
- if (target === 'output') {
- el = document.getElementsByTagName('output')[0];
- } else {
- if (typeof target === 'string') {
- el = document.getElementById(target);
+ tx.oncomplete = function() {
+ ixdb.close();
+
+ if (cb) cb(ilen);
+ };
+ };
+
+};
+
+IDB.fromTable = function(databaseid, tableid, cb, idx, query) {
+
+ // console.trace();
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+ var request = indexedDB.open(ixdbid);
+ request.onsuccess = function(event) {
+ var res = [];
+ var ixdb = event.target.result;
+
+ var tx = ixdb.transaction([tableid]);
+ var store = tx.objectStore(tableid);
+ var cur = store.openCursor();
+
+ cur.onblocked = function(event) {
+
+ };
+ cur.onerror = function(event) {
+
+ };
+ cur.onsuccess = function(event) {
+
+ var cursor = event.target.result;
+
+ if (cursor) {
+ res.push(cursor.value);
+ cursor.continue();
} else {
- // in case of DOM
- el = target;
+
+ ixdb.close();
+ if (cb) cb(res, idx, query);
}
- }
- el.innerHTML = '';
- }
+ };
+ };
};
-alasql.write = function(s) {
+IDB.deleteFromTable = function(databaseid, tableid, wherefn, params, cb) {
- var target = alasql.options.logtarget;
- // For node other
- if (utils.isNode || utils.isMeteorServer) {
- if (console.log) {
- console.log(s);
- }
- } else {
- var el;
- if (target === 'output') {
- el = document.getElementsByTagName('output')[0];
- } else {
- if (typeof target === 'string') {
- el = document.getElementById(target);
+ // console.trace();
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+ var request = indexedDB.open(ixdbid);
+ request.onsuccess = function(event) {
+ var res = [];
+ var ixdb = event.target.result;
+
+ var tx = ixdb.transaction([tableid], 'readwrite');
+ var store = tx.objectStore(tableid);
+ var cur = store.openCursor();
+ var num = 0;
+
+ cur.onblocked = function(event) {
+
+ };
+ cur.onerror = function(event) {
+
+ };
+ cur.onsuccess = function(event) {
+
+ var cursor = event.target.result;
+
+ if (cursor) {
+ if (!wherefn || wherefn(cursor.value, params)) {
+
+ cursor.delete();
+ num++;
+ }
+ cursor.continue();
} else {
- // in case of DOM
- el = target;
+
+ ixdb.close();
+ if (cb) cb(num);
}
- }
- el.innerHTML += s;
- }
+ };
+ };
};
-function loghtml(res) {
+IDB.updateTable = function(databaseid, tableid, assignfn, wherefn, params, cb) {
- var s = '';
- if (res === undefined) {
- s += 'undefined';
- } else if (Array.isArray(res)) {
- s += '';
- s += '';
- var cols = [];
- for (var colid in res[0]) {
- cols.push(colid);
- }
- s += '#';
- cols.forEach(function(colid) {
- s += ' ' + colid;
- });
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- s += ' ' + (i + 1);
- cols.forEach(function(colid) {
- s += ' ';
- if (res[i][colid] == +res[i][colid]) {
- // jshint ignore:line
- s += '';
- if (typeof res[i][colid] === 'undefined') {
- s += 'NULL';
- } else {
- s += res[i][colid];
- }
- s += '
';
- } else {
- if (typeof res[i][colid] === 'undefined') {
- s += 'NULL';
- } else if (typeof res[i][colid] === 'string') {
- s += res[i][colid];
- } else {
- s += JSONtoString(res[i][colid]);
- }
- // s += res[i][colid];
+ // console.trace();
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+ var request = indexedDB.open(ixdbid);
+ request.onsuccess = function(event) {
+ var res = [];
+ var ixdb = event.target.result;
+
+ var tx = ixdb.transaction([tableid], 'readwrite');
+ var store = tx.objectStore(tableid);
+ var cur = store.openCursor();
+ var num = 0;
+
+ cur.onblocked = function(event) {
+
+ };
+ cur.onerror = function(event) {
+
+ };
+ cur.onsuccess = function(event) {
+
+ var cursor = event.target.result;
+
+ if (cursor) {
+ if (!wherefn || wherefn(cursor.value, params)) {
+
+ var r = cursor.value;
+ assignfn(r, params);
+
+ cursor.update(r);
+ num++;
}
- });
- }
+ cursor.continue();
+ } else {
- s += '
';
- } else {
- s += '' + JSONtoString(res) + '
';
- }
- // if() {}
+ ixdb.close();
+ if (cb) cb(num);
+ }
+ };
+ };
+};
- // if(typeof res == 'object') {
- // s += ''+JSON.stringify(res)+'
';
- // } else {
- // }
- return s;
-}
+//
+// 91localstorage.js
+// localStorage and DOM-Storage engine
+// Date: 09.12.2014
+// (c) Andrey Gershun
+//
-function scrollTo(element, to, duration) {
- if (duration <= 0) {
- return;
- }
- var difference = to - element.scrollTop;
- var perTick = difference / duration * 10;
+/* global alasql, yy, localStorage*/
- setTimeout(function() {
- if (element.scrollTop === to) {
- return;
- }
- element.scrollTop = element.scrollTop + perTick;
- scrollTo(element, to, duration - 10);
- }, 10);
-}
+var LS = (alasql.engines.LOCALSTORAGE = function() {});
-alasql.prompt = function(el, useidel, firstsql) {
- if (utils.isNode) {
- throw new Error('The prompt not realized for Node.js');
+/**
+ Read data from localStorage with security breaks
+ @param key {string} Address in localStorage
+ @return {object} JSON object
+*/
+LS.get = function(key) {
+ var s = localStorage.getItem(key);
+ if (typeof s === 'undefined') return;
+ var v;
+ try {
+ v = JSON.parse(s);
+ } catch (err) {
+ throw new Error('Cannot parse JSON object from localStorage' + s);
}
+ return v;
+};
- var prompti = 0;
+/**
+ Store data into localStorage with security breaks
+ @param key {string} Address in localStorage
+ @return {object} JSON object
+*/
+LS.set = function(key, value) {
+ if (typeof value === 'undefined') localStorage.removeItem(key);
+ else localStorage.setItem(key, JSON.stringify(value));
+};
- if (typeof el === 'string') {
- el = document.getElementById(el);
- }
+/**
+ Store table structure and data into localStorage
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param tableid {string} Table name
+ @return Nothing
+*/
+LS.storeTable = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ var table = db.tables[tableid];
+ // Create empty structure for table
+ var tbl = {};
+ tbl.columns = table.columns;
+ tbl.data = table.data;
+ tbl.identities = table.identities;
+ // TODO: May be add indexes, objects and other fields?
+ LS.set(db.lsdbid + '.' + tableid, tbl);
+};
- if (typeof useidel === 'string') {
- useidel = document.getElementById(useidel);
+/**
+ Restore table structure and data
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param tableid {string} Table name
+ @return Nothing
+*/
+LS.restoreTable = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ var tbl = LS.get(db.lsdbid + '.' + tableid);
+ var table = new alasql.Table();
+ for (var f in tbl) {
+ table[f] = tbl[f];
}
+ db.tables[tableid] = table;
+ table.indexColumns();
+ // We need to add other things here
+ return table;
+};
- useidel.textContent = alasql.useid;
+/**
+ Remove table from localStorage
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param tableid {string} Table name
+*/
- if (firstsql) {
- alasql.prompthistory.push(firstsql);
- prompti = alasql.prompthistory.length;
- try {
- var tm = Date.now();
- alasql.log(firstsql);
- alasql.write('' + (Date.now() - tm) + ' ms
');
- } catch (err) {
- alasql.write('' + olduseid + '> ' + sql + '
');
- alasql.write('' + err + '
');
- }
- }
+LS.removeTable = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ localStorage.removeItem(db.lsdbid + '.' + tableid);
+};
- var y = el.getBoundingClientRect().top + document.getElementsByTagName('body')[0].scrollTop;
- scrollTo(document.getElementsByTagName('body')[0], y, 500);
+/**
+ Create database in localStorage
+ @param lsdbid {string} localStorage database id
+ @param args {array} List of parameters (not used in localStorage)
+ @param ifnotexists {boolean} Check if database does not exist
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param cb {function} Callback
+*/
- el.onkeydown = function(event) {
- if (event.which === 13) {
- var sql = el.value;
- var olduseid = alasql.useid;
- el.value = '';
- alasql.prompthistory.push(sql);
- prompti = alasql.prompthistory.length;
- try {
- var tm = Date.now();
- alasql.log(sql);
- alasql.write('
' + (Date.now() - tm) + ' ms
');
- } catch (err) {
- alasql.write('' + olduseid + '> ' + alasql.pretty(sql, false) + '
');
- alasql.write('' + err + '
');
- }
- el.focus();
+LS.createDatabase = function(lsdbid, args, ifnotexists, databaseid, cb) {
+ var res = 1;
+ var ls = LS.get('alasql'); // Read list of all databases
+ if (!(ifnotexists && ls && ls.databases && ls.databases[lsdbid])) {
+ if (!ls) ls = {databases: {}}; // Empty record
+ if (ls.databases && ls.databases[lsdbid]) {
+ throw new Error(
+ 'localStorage: Cannot create new database "' +
+ lsdbid +
+ '" because it already exists'
+ );
+ }
+ ls.databases[lsdbid] = true;
+ LS.set('alasql', ls);
+ LS.set(lsdbid, {databaseid: lsdbid, tables: {}}); // Create database record
+ } else {
+ res = 0;
+ }
+ if (cb) res = cb(res);
+ return res;
+};
- useidel.textContent = alasql.useid;
- var y =
- el.getBoundingClientRect().top + document.getElementsByTagName('body')[0].scrollTop;
- scrollTo(document.getElementsByTagName('body')[0], y, 500);
- } else if (event.which === 38) {
- prompti--;
- if (prompti < 0) {
- prompti = 0;
- }
- if (alasql.prompthistory[prompti]) {
- el.value = alasql.prompthistory[prompti];
- event.preventDefault();
- }
- } else if (event.which === 40) {
- prompti++;
- if (prompti >= alasql.prompthistory.length) {
- prompti = alasql.prompthistory.length;
- el.value = '';
- } else if (alasql.prompthistory[prompti]) {
- el.value = alasql.prompthistory[prompti];
- event.preventDefault();
+/**
+ Drop external database
+ @param lsdbid {string} localStorage database id
+ @param ifexists {boolean} Check if database exists
+ @param cb {function} Callback
+*/
+LS.dropDatabase = function(lsdbid, ifexists, cb) {
+ var res = 1;
+ var ls = LS.get('alasql');
+ if (!(ifexists && ls && ls.databases && !ls.databases[lsdbid])) {
+ // 1. Remove record from 'alasql' record
+ if (!ls) {
+ if (!ifexists) {
+ throw new Error('There is no any AlaSQL databases in localStorage');
+ } else {
+ return cb ? cb(0) : 0;
}
}
- };
+
+ if (ls.databases && !ls.databases[lsdbid]) {
+ throw new Error(
+ 'localStorage: Cannot drop database "' +
+ lsdbid +
+ '" because there is no such database'
+ );
+ }
+ delete ls.databases[lsdbid];
+ LS.set('alasql', ls);
+
+ // 2. Remove tables definitions
+ var db = LS.get(lsdbid);
+ for (var tableid in db.tables) {
+ localStorage.removeItem(lsdbid + '.' + tableid);
+ }
+
+ // 3. Remove database definition
+ localStorage.removeItem(lsdbid);
+ } else {
+ res = 0;
+ }
+ if (cb) res = cb(res);
+ return res;
};
-/*
-//
-// Commit for Alasql.js
-// Date: 01.12.2014
-// (c) 2014, Andrey Gershun
-//
+/**
+ Attach existing localStorage database to AlaSQL database
+ @param lsdibid {string} localStorage database id
+ @param
*/
-yy.BeginTransaction = function(params) {
- return yy.extend(this, params);
-};
-yy.BeginTransaction.prototype.toString = function() {
- return 'BEGIN TRANSACTION';
-};
-yy.BeginTransaction.prototype.execute = function(databaseid, params, cb) {
+LS.attachDatabase = function(lsdbid, databaseid, args, params, cb) {
var res = 1;
- if (alasql.databases[databaseid].engineid) {
- return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid, cb);
- } else {
- // alasql commit!!!
+ if (alasql.databases[databaseid]) {
+ throw new Error(
+ 'Unable to attach database as "' + databaseid + '" because it already exists'
+ );
}
- if (cb) cb(res);
+ if (!databaseid) databaseid = lsdbid;
+ var db = new alasql.Database(databaseid);
+ db.engineid = 'LOCALSTORAGE';
+ db.lsdbid = lsdbid;
+ db.tables = LS.get(lsdbid).tables;
+ // IF AUTOABORT IS OFF then copy data to memory
+ if (!alasql.options.autocommit) {
+ if (db.tables) {
+ for (var tbid in db.tables) {
+ LS.restoreTable(databaseid, tbid);
+ // db.tables[tbid].data = LS.get(db.lsdbid+'.'+tbid);
+ }
+ }
+ }
+ if (cb) res = cb(res);
return res;
};
-yy.CommitTransaction = function(params) {
- return yy.extend(this, params);
+/**
+ Show list of databases from localStorage
+ @param like {string} Mathing pattern
+ @param cb {function} Callback
+*/
+LS.showDatabases = function(like, cb) {
+ var res = [];
+ var ls = LS.get('alasql');
+ if (like) {
+ // TODO: If we have a special function for LIKE patterns?
+ var relike = new RegExp(like.value.replace(/%/g, '.*'), 'g');
+ }
+ if (ls && ls.databases) {
+ for (var dbid in ls.databases) {
+ res.push({databaseid: dbid});
+ }
+ if (like && res && res.length > 0) {
+ res = res.filter(function(d) {
+ return d.databaseid.match(relike);
+ });
+ }
+ }
+ if (cb) res = cb(res);
+ return res;
};
-yy.CommitTransaction.prototype.toString = function() {
- return 'COMMIT TRANSACTION';
+
+/**
+ Create table in localStorage database
+ @param databaseid {string} AlaSQL database id
+ @param tableid {string} Table id
+ @param ifnotexists {boolean} If not exists flag
+ @param cb {function} Callback
+*/
+
+LS.createTable = function(databaseid, tableid, ifnotexists, cb) {
+ var res = 1;
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var tb = LS.get(lsdbid + '.' + tableid);
+ // Check if such record exists
+ if (tb && !ifnotexists) {
+ throw new Error(
+ 'Table "' + tableid + '" alsready exists in localStorage database "' + lsdbid + '"'
+ );
+ }
+ var lsdb = LS.get(lsdbid);
+ var table = alasql.databases[databaseid].tables[tableid];
+
+ // TODO: Check if required
+ lsdb.tables[tableid] = true;
+
+ LS.set(lsdbid, lsdb);
+ LS.storeTable(databaseid, tableid);
+
+ if (cb) res = cb(res);
+ return res;
};
-yy.CommitTransaction.prototype.execute = function(databaseid, params, cb) {
+/**
+ Empty table and reset identities
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param tableid {string} Table name
+ @param ifexists {boolean} If exists flag
+ @param cb {function} Callback
+ @return 1 on success
+*/
+LS.truncateTable = function(databaseid, tableid, ifexists, cb) {
var res = 1;
- if (alasql.databases[databaseid].engineid) {
- return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid, cb);
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var lsdb;
+ if (alasql.options.autocommit) {
+ lsdb = LS.get(lsdbid);
} else {
- // alasql commit!!!
+ lsdb = alasql.databases[databaseid];
}
- if (cb) cb(res);
+
+ if (!ifexists && !lsdb.tables[tableid]) {
+ throw new Error(
+ 'Cannot truncate table "' + tableid + '" in localStorage, because it does not exist'
+ );
+ }
+
+ //load table
+ var tbl = LS.restoreTable(databaseid, tableid);
+
+ //clear data from table
+ tbl.data = [];
+ //TODO reset all identities
+ //but identities are not working on LOCALSTORAGE
+ //See test 607 for details
+
+ //store table
+ LS.storeTable(databaseid, tableid);
+
+ if (cb) res = cb(res);
return res;
};
-yy.RollbackTransaction = function(params) {
- return yy.extend(this, params);
-};
-yy.RollbackTransaction.prototype.toString = function() {
- return 'ROLLBACK TRANSACTION';
-};
+/**
+ Create table in localStorage database
+ @param databaseid {string} AlaSQL database id
+ @param tableid {string} Table id
+ @param ifexists {boolean} If exists flag
+ @param cb {function} Callback
+*/
-yy.RollbackTransaction.prototype.execute = function(databaseid, params, cb) {
+LS.dropTable = function(databaseid, tableid, ifexists, cb) {
var res = 1;
- if (alasql.databases[databaseid].engineid) {
- return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid, cb);
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var lsdb;
+
+ if (alasql.options.autocommit) {
+ lsdb = LS.get(lsdbid);
} else {
- // alasql commit!!!
+ lsdb = alasql.databases[databaseid];
}
- if (cb) cb(res);
+ if (!ifexists && !lsdb.tables[tableid]) {
+ throw new Error(
+ 'Cannot drop table "' + tableid + '" in localStorage, because it does not exist'
+ );
+ }
+ delete lsdb.tables[tableid];
+ LS.set(lsdbid, lsdb);
+ // localStorage.removeItem(lsdbid+'.'+tableid);
+ LS.removeTable(databaseid, tableid);
+ if (cb) res = cb(res);
return res;
};
-if (alasql.options.tsql) {
- //
- // Check tables and views
- // IF OBJECT_ID('dbo.Employees') IS NOT NULL
- // DROP TABLE dbo.Employees;
- // IF OBJECT_ID('dbo.VSortedOrders', 'V') IS NOT NULL
- // DROP VIEW dbo.VSortedOrders;
-
- alasql.stdfn.OBJECT_ID = function(name, type) {
- if (typeof type == 'undefined') type = 'T';
- type = type.toUpperCase();
-
- var sname = name.split('.');
- var dbid = alasql.useid;
- var objname = sname[0];
- if (sname.length == 2) {
- dbid = sname[0];
- objname = sname[1];
- }
-
- var tables = alasql.databases[dbid].tables;
- dbid = alasql.databases[dbid].databaseid;
- for (var tableid in tables) {
- if (tableid == objname) {
- // TODO: What OBJECT_ID actually returns
-
- if (tables[tableid].view && type == 'V') return dbid + '.' + tableid;
- if (!tables[tableid].view && type == 'T') return dbid + '.' + tableid;
- return undefined;
- }
- }
-
- return undefined;
- };
-}
+/**
+ Read all data from table
+*/
-if (alasql.options.mysql) {
-}
+LS.fromTable = function(databaseid, tableid, cb, idx, query) {
-if (alasql.options.mysql || alasql.options.sqlite) {
- // Pseudo INFORMATION_SCHEMA function
- alasql.from.INFORMATION_SCHEMA = function(filename, opts, cb, idx, query) {
- if (filename == 'VIEWS' || filename == 'TABLES') {
- var res = [];
- for (var databaseid in alasql.databases) {
- var tables = alasql.databases[databaseid].tables;
- for (var tableid in tables) {
- if (
- (tables[tableid].view && filename == 'VIEWS') ||
- (!tables[tableid].view && filename == 'TABLES')
- ) {
- res.push({TABLE_CATALOG: databaseid, TABLE_NAME: tableid});
- }
- }
- }
- if (cb) res = cb(res, idx, query);
- return res;
- }
- throw new Error('Unknown INFORMATION_SCHEMA table');
- };
-}
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ // var res = LS.get(lsdbid+'.'+tableid);
-if (alasql.options.postgres) {
-}
+ var res = LS.restoreTable(databaseid, tableid).data;
-if (alasql.options.oracle) {
-}
+ if (cb) res = cb(res, idx, query);
+ return res;
+};
-if (alasql.options.sqlite) {
-}
+/**
+ Insert data into the table
+ @param databaseid {string} Database id
+ @param tableid {string} Table id
+ @param value {array} Array of values
+ @param columns {array} Columns (not used)
+ @param cb {function} Callback
+*/
-//
-// into functions
-//
-// (c) 2014 Andrey Gershun
-//
-
-alasql.into.SQL = function(filename, opts, data, columns, cb) {
- var res;
- if (typeof filename === 'object') {
- opts = filename;
- filename = undefined;
- }
- var opt = {};
- alasql.utils.extend(opt, opts);
- if (typeof opt.tableid === 'undefined') {
- throw new Error('Table for INSERT TO is not defined.');
- }
-
- var s = '';
- if (columns.length === 0) {
- if (typeof data[0] === 'object') {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- } else {
- // What should I do?
- // columns = [{columnid:"_"}];
- }
- }
-
- for (var i = 0, ilen = data.length; i < ilen; i++) {
- s += 'INSERT INTO ' + opts.tableid + '(';
- s += columns
- .map(function(col) {
- return col.columnid;
- })
- .join(',');
- s += ') VALUES (';
- s += columns.map(function(col) {
- var val = data[i][col.columnid];
- if (col.typeid) {
- if (
- col.typeid === 'STRING' ||
- col.typeid === 'VARCHAR' ||
- col.typeid === 'NVARCHAR' ||
- col.typeid === 'CHAR' ||
- col.typeid === 'NCHAR'
- ) {
- val = "'" + escapeqq(val) + "'";
- }
- } else {
- if (typeof val == 'string') {
- val = "'" + escapeqq(val) + "'";
- }
- }
- return val;
- });
- s += ');\n';
- }
- // if(filename === '') {
- // res = s;
- // } else {
- // res = data.length;
- filename = alasql.utils.autoExtFilename(filename, 'sql', opts);
- res = alasql.utils.saveFile(filename, s);
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-alasql.into.HTML = function(selector, opts, data, columns, cb) {
- var res = 1;
- if (typeof exports !== 'object') {
- var opt = {headers: true};
- alasql.utils.extend(opt, opts);
-
- var sel = document.querySelector(selector);
- if (!sel) {
- throw new Error('Selected HTML element is not found');
- }
-
- if (columns.length === 0) {
- if (typeof data[0] === 'object') {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- } else {
- // What should I do?
- // columns = [{columnid:"_"}];
- }
- }
-
- var tbe = document.createElement('table');
- var thead = document.createElement('thead');
- tbe.appendChild(thead);
- if (opt.headers) {
- var tre = document.createElement('tr');
- for (var i = 0; i < columns.length; i++) {
- var the = document.createElement('th');
- the.textContent = columns[i].columnid;
- tre.appendChild(the);
- }
- thead.appendChild(tre);
- }
-
- var tbody = document.createElement('tbody');
- tbe.appendChild(tbody);
- for (var j = 0; j < data.length; j++) {
- var tre = document.createElement('tr');
- for (var i = 0; i < columns.length; i++) {
- var the = document.createElement('td');
- the.textContent = data[j][columns[i].columnid];
- tre.appendChild(the);
- }
- tbody.appendChild(tre);
- }
- alasql.utils.domEmptyChildren(sel);
-
- sel.appendChild(tbe);
- }
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-alasql.into.JSON = function(filename, opts, data, columns, cb) {
- var res = 1;
- if (typeof filename === 'object') {
- opts = filename;
- filename = undefined;
- }
- var s = JSON.stringify(data);
-
- filename = alasql.utils.autoExtFilename(filename, 'json', opts);
- res = alasql.utils.saveFile(filename, s);
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-alasql.into.TXT = function(filename, opts, data, columns, cb) {
- // If columns is empty
- if (columns.length === 0 && data.length > 0) {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
- // If one parameter
- if (typeof filename === 'object') {
- opts = filename;
- filename = undefined;
- }
-
- var res = data.length;
- var s = '';
- if (data.length > 0) {
- var key = columns[0].columnid;
- s += data
- .map(function(d) {
- return d[key];
- })
- .join('\n');
- }
-
- // } else {
- // if(utils.isNode) {
- // process.stdout.write(s);
- // } else {
-
- // };
- // }
- filename = alasql.utils.autoExtFilename(filename, 'txt', opts);
- res = alasql.utils.saveFile(filename, s);
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-alasql.into.TAB = alasql.into.TSV = function(filename, opts, data, columns, cb) {
- var opt = {};
- alasql.utils.extend(opt, opts);
- opt.separator = '\t';
- filename = alasql.utils.autoExtFilename(filename, 'tab', opts);
- opt.autoExt = false;
- return alasql.into.CSV(filename, opt, data, columns, cb);
-};
-
-alasql.into.CSV = function(filename, opts, data, columns, cb) {
- if (columns.length === 0 && data.length > 0) {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
- if (typeof filename === 'object') {
- opts = filename;
- filename = undefined;
- }
-
- var opt = {headers: true};
- //opt.separator = ',';
- opt.separator = ';';
- opt.quote = '"';
-
- opt.utf8Bom = true;
- if (opts && !opts.headers && typeof opts.headers !== 'undefined') {
- opt.utf8Bom = false;
- }
-
- alasql.utils.extend(opt, opts);
- var res = data.length;
- var s = opt.utf8Bom ? '\ufeff' : '';
- if (opt.headers) {
- s +=
- opt.quote +
- columns
- .map(function(col) {
- return col.columnid.trim();
- })
- .join(opt.quote + opt.separator + opt.quote) +
- opt.quote +
- '\r\n';
- }
-
- data.forEach(function(d) {
- s +=
- columns
- .map(function(col) {
- var s = d[col.columnid];
- // escape the character wherever it appears in the field
- if (opt.quote !== '') {
- s = (s + '').replace(
- new RegExp('\\' + opt.quote, 'g'),
- opt.quote + opt.quote
- );
- }
- // if((s+"").indexOf(opt.separator) > -1 || (s+"").indexOf(opt.quote) > -1) s = opt.quote + s + opt.quote;
-
- //Excel 2013 needs quotes around strings - thanks for _not_ complying with RFC for CSV
- if (+s != s) {
- // jshint ignore:line
- s = opt.quote + s + opt.quote;
- }
-
- return s;
- })
- .join(opt.separator) + '\r\n';
- });
-
- filename = alasql.utils.autoExtFilename(filename, 'csv', opts);
- res = alasql.utils.saveFile(filename, s, null, {disableAutoBom: true});
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-//
-// 831xl.js - Coloring Excel
-// 18.04.2015
-// Generate XLS file with colors and styles
-// with Excel
-
-alasql.into.XLS = function(filename, opts, data, columns, cb) {
- // If filename is not defined then output to the result
- if (typeof filename == 'object') {
- opts = filename;
- filename = undefined;
- }
-
- // Set sheets
- var sheets = {};
- if (opts && opts.sheets) {
- sheets = opts.sheets;
- }
-
- // Default sheet
- var sheet = {headers: true};
- if (typeof sheets['Sheet1'] != 'undefined') {
- sheet = sheets[0];
- } else {
- if (typeof opts != 'undefined') {
- sheet = opts;
- }
- }
-
- // Set sheet name and default is 'Sheet1'
- if (typeof sheet.sheetid == 'undefined') {
- sheet.sheetid = 'Sheet1';
- }
-
- var s = toHTML();
-
- // File is ready to save
- filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
- var res = alasql.utils.saveFile(filename, s);
- if (cb) res = cb(res);
- return res;
-
- function toHTML() {
- // Generate prologue
- var s =
- '
\
- \
- ';
-
- // Generate body
- s += '';
- s += '';
- if (typeof sheet.caption != 'undefined') {
- var caption = sheet.caption;
- if (typeof caption == 'string') {
- caption = {title: caption};
- }
- s += '';
- s += caption.title;
- s += ' ';
- }
-
- // Columns
-
- // var columns = [];
-
- // If columns defined in sheet, then take them
- if (typeof sheet.columns != 'undefined') {
- columns = sheet.columns;
- } else {
- // Autogenerate columns if they are passed as parameters
- if (columns.length == 0 && data.length > 0) {
- if (typeof data[0] == 'object') {
- if (Array.isArray(data[0])) {
- columns = data[0].map(function(d, columnidx) {
- return {columnid: columnidx};
- });
- } else {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
- }
- }
- }
-
- // Prepare columns
- columns.forEach(function(column, columnidx) {
- if (typeof sheet.column != 'undefined') {
- extend(column, sheet.column);
- }
-
- if (typeof column.width == 'undefined') {
- if (sheet.column && sheet.column.width != 'undefined') {
- column.width = sheet.column.width;
- } else {
- column.width = '120px';
- }
- }
- if (typeof column.width == 'number') column.width = column.width + 'px';
- if (typeof column.columnid == 'undefined') column.columnid = columnidx;
- if (typeof column.title == 'undefined') column.title = '' + column.columnid.trim();
- if (sheet.headers && Array.isArray(sheet.headers))
- column.title = sheet.headers[columnidx];
- });
-
- // Set columns widths
- s += '';
- columns.forEach(function(column) {
- s += ' ';
- });
- s += ' ';
-
- // Headers
- if (sheet.headers) {
- s += '';
- s += '';
-
- // TODO: Skip columns to body
-
- // Headers
- columns.forEach(function(column, columnidx) {
- s += '';
-
- // Column title
- if (typeof column.title != 'undefined') {
- if (typeof column.title == 'function') {
- s += column.title(sheet, column, columnidx);
- } else {
- s += column.title;
- }
- }
- s += ' ';
- });
-
- s += ' ';
- s += ' ';
- }
-
- s += '';
-
- // TODO: Skip lines between header and body
-
- if (data && data.length > 0) {
- // TODO: Skip columns to body
-
- // Loop over data rows
- data.forEach(function(row, rowidx) {
- // Limit number of rows on the sheet
- if (rowidx > sheet.limit) return;
- // Create row
- s += '';
- // Loop over columns
- columns.forEach(function(column, columnidx) {
- // Parameters
- var cell = {};
- extend(cell, sheet.cell);
- extend(cell, srow.cell);
- if (typeof sheet.column != 'undefined') {
- extend(cell, sheet.column.cell);
- }
- extend(cell, column.cell);
- if (sheet.cells && sheet.cells[rowidx] && sheet.cells[rowidx][columnidx]) {
- extend(cell, sheet.cells[rowidx][columnidx]);
- }
-
- // Create value
- var value = row[column.columnid];
- if (typeof cell.value == 'function') {
- value = cell.value(value, sheet, row, column, cell, rowidx, columnidx);
- }
-
- // Define cell type
- var typeid = cell.typeid;
- if (typeof typeid == 'function') {
- typeid = typeid(value, sheet, row, column, cell, rowidx, columnidx);
- }
-
- if (typeof typeid == 'undefined') {
- if (typeof value == 'number') typeid = 'number';
- else if (typeof value == 'string') typeid = 'string';
- else if (typeof value == 'boolean') typeid = 'boolean';
- else if (typeof value == 'object') {
- if (value instanceof Date) typeid = 'date';
- }
- }
-
- var typestyle = '';
-
- if (typeid == 'money') {
- typestyle =
- 'mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;';
- } else if (typeid == 'number') {
- typestyle = ' ';
- } else if (typeid == 'date') {
- typestyle = 'mso-number-format:"Short Date";';
- } else {
- // FOr other types is saved
- if (opts.types && opts.types[typeid] && opts.types[typeid].typestyle) {
- typestyle = opts.types[typeid].typestyle;
- }
- }
-
- // TODO Replace with extend...
- typestyle = typestyle || 'mso-number-format:"\\@";'; // Default type style
-
- s += "';
-
- // TODO Replace with extend...
- var format = cell.format;
- if (typeof value == 'undefined') {
- s += '';
- } else if (typeof format != 'undefined') {
- if (typeof format == 'function') {
- s += format(value);
- } else if (typeof format == 'string') {
- s += value; // TODO - add string format
- } else {
- throw new Error('Unknown format type. Should be function or string');
- }
- } else {
- if (typeid == 'number' || typeid == 'date') {
- s += value.toString();
- } else if (typeid == 'money') {
- s += (+value).toFixed(2);
- } else {
- s += value;
- }
- }
- s += ' ';
- });
-
- s += ' ';
- });
- }
-
- s += ' ';
-
- // Generate epilogue
- s += '
';
- s += '';
- s += '';
-
- return s;
- }
-
- // Style function
- function style(a) {
- var s = ' style="';
- if (a && typeof a.style != 'undefined') {
- s += a.style + ';';
- }
- s += '" ';
- return s;
- }
-};
-
-alasql.into.XLSXML = function(filename, opts, data, columns, cb) {
- opts = opts || {};
-
- // If filename is not defined then output to the result
- if (typeof filename == 'object') {
- opts = filename;
- filename = undefined;
- }
-
- // Set sheets
- var sheets = {};
- var sheetsdata;
- var sheetscolumns;
- if (opts && opts.sheets) {
- sheets = opts.sheets;
- // data and columns are already an array for the sheets
- sheetsdata = data;
- sheetscolumns = columns;
- } else {
- sheets.Sheet1 = opts;
- // wrapd ata and columns array for single sheet
- sheetsdata = [data];
- sheetscolumns = [columns];
- }
-
- // File is ready to save
- filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
- var res = alasql.utils.saveFile(filename, toXML());
- if (cb) res = cb(res);
- return res;
-
- function toXML() {
- var s1 =
- ' \
- \
- \
- \
- \
- \
- \
- \
- 0 \
- \
- \
- ';
-
- var s2 = ''; // for styles
-
- var s3 = ' ';
-
- var styles = {}; // hash based storage for styles
- var stylesn = 62; // First style
-
- // Generate style
- function hstyle(st) {
- // Prepare string
- var s = '';
- for (var key in st) {
- s += '<' + key;
- for (var attr in st[key]) {
- s += ' ';
- if (attr.substr(0, 2) == 'x:') {
- s += attr;
- } else {
- s += 'ss:';
- }
- s += attr + '="' + st[key][attr] + '"';
- }
- s += '/>';
- }
-
- var hh = hash(s);
- // Store in hash
- if (styles[hh]) {
- } else {
- styles[hh] = {styleid: stylesn};
- s2 += '';
- stylesn++;
- }
- return 's' + styles[hh].styleid;
- }
-
- function values(obj) {
- try {
- return Object.values(obj);
- } catch (e) {
- // support for older runtimes
- return Object.keys(obj).map(function(e) {
- return obj[e];
- });
- }
- }
-
- var sheetidx = 0;
- for (var sheetid in sheets) {
- var sheet = sheets[sheetid];
- var idx = typeof sheet.dataidx != 'undefined' ? sheet.dataidx : sheetidx++;
- var data = values(sheetsdata[idx]);
- // If columns defined in sheet, then take them
- var columns = undefined;
- if (typeof sheet.columns != 'undefined') {
- columns = sheet.columns;
- } else {
- // Autogenerate columns if they are passed as parameters
- columns = sheetscolumns[idx];
- if (columns === undefined || (columns.length == 0 && data.length > 0)) {
- if (typeof data[0] == 'object') {
- if (Array.isArray(data[0])) {
- columns = data[0].map(function(d, columnidx) {
- return {columnid: columnidx};
- });
- } else {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
- }
- }
- }
-
- // Prepare columns
- columns.forEach(function(column, columnidx) {
- if (typeof sheet.column != 'undefined') {
- extend(column, sheet.column);
- }
-
- if (typeof column.width == 'undefined') {
- if (sheet.column && typeof sheet.column.width != 'undefined') {
- column.width = sheet.column.width;
- } else {
- column.width = 120;
- }
- }
- if (typeof column.width == 'number') column.width = column.width;
- if (typeof column.columnid == 'undefined') column.columnid = columnidx;
- if (typeof column.title == 'undefined') column.title = '' + column.columnid.trim();
- if (sheet.headers && Array.isArray(sheet.headers))
- column.title = sheet.headers[columnidx];
- });
-
- // Header
- s3 +=
- ' \
- ';
-
- columns.forEach(function(column, columnidx) {
- s3 +=
- ' ';
- });
-
- // Headers
- if (sheet.headers) {
- s3 += '';
-
- // TODO: Skip columns to body
-
- // Headers
- columns.forEach(function(column, columnidx) {
- s3 += '';
-
- // Column title
- if (typeof column.title != 'undefined') {
- if (typeof column.title == 'function') {
- s3 += column.title(sheet, column, columnidx);
- } else {
- s3 += column.title;
- }
- }
- s3 += ' | ';
- });
-
- s3 += '
';
- }
-
- // Data
- if (data && data.length > 0) {
- // Loop over data rows
- data.forEach(function(row, rowidx) {
- // Limit number of rows on the sheet
- if (rowidx > sheet.limit) return;
-
- // Extend row properties
- var srow = {};
- extend(srow, sheet.row);
- if (sheet.rows && sheet.rows[rowidx]) {
- extend(srow, sheet.rows[rowidx]);
- }
-
- s3 += ''; //'ss:AutoFitHeight="0">'
-
- // Data
- columns.forEach(function(column, columnidx) {
- // Parameters
- var cell = {};
- extend(cell, sheet.cell);
- extend(cell, srow.cell);
- if (typeof sheet.column != 'undefined') {
- extend(cell, sheet.column.cell);
- }
- extend(cell, column.cell);
- if (sheet.cells && sheet.cells[rowidx] && sheet.cells[rowidx][columnidx]) {
- extend(cell, sheet.cells[rowidx][columnidx]);
- }
-
- // Create value
- var value = row[column.columnid];
- if (typeof cell.value == 'function') {
- value = cell.value(value, sheet, row, column, cell, rowidx, columnidx);
- }
-
- // Define cell type
- var typeid = cell.typeid;
- if (typeof typeid == 'function') {
- typeid = typeid(value, sheet, row, column, cell, rowidx, columnidx);
- }
-
- if (typeof typeid == 'undefined') {
- if (typeof value == 'number') typeid = 'number';
- else if (typeof value == 'string') typeid = 'string';
- else if (typeof value == 'boolean') typeid = 'boolean';
- else if (typeof value == 'object') {
- if (value instanceof Date) typeid = 'date';
- }
- }
-
- var Type = 'String';
- if (typeid == 'number') Type = 'Number';
- else if (typeid == 'date') Type = 'Date';
- // TODO: What else?
-
- // Prepare Data types styles
- var typestyle = '';
-
- if (typeid == 'money') {
- typestyle =
- 'mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;';
- } else if (typeid == 'number') {
- typestyle = ' ';
- } else if (typeid == 'date') {
- typestyle = 'mso-number-format:"Short Date";';
- } else {
- // For other types is saved
- if (opts.types && opts.types[typeid] && opts.types[typeid].typestyle) {
- typestyle = opts.types[typeid].typestyle;
- }
- }
-
- // TODO Replace with extend...
- typestyle = typestyle || 'mso-number-format:"\\@";'; // Default type style
-
- s3 += '';
-
- s3 += '';
-
- // TODO Replace with extend...
- var format = cell.format;
- if (typeof value == 'undefined') {
- s3 += '';
- } else if (typeof format != 'undefined') {
- if (typeof format == 'function') {
- s3 += format(value);
- } else if (typeof format == 'string') {
- s3 += value; // TODO - add string format
- } else {
- throw new Error(
- 'Unknown format type. Should be function or string'
- );
- }
- } else {
- if (typeid == 'number' || typeid == 'date') {
- s3 += value.toString();
- } else if (typeid == 'money') {
- s3 += (+value).toFixed(2);
- } else {
- s3 += value;
- }
- }
-
- // s3 += row[column.columnid];
- s3 += ' | ';
- });
-
- s3 += '
';
- });
- }
- // Finish
- s3 += '
';
- }
-
- s3 += ' ';
-
- return s1 + s2 + s3;
- }
-};
-
-/**
- Export to XLSX function
- @function
- @param {string|object} filename Filename or options
- @param {object|undefined} opts Options or undefined
- @param {array} data Data
- @param {array} columns Columns
- @parab {callback} cb Callback function
- @return {number} Number of files processed
-*/
-
-alasql.into.XLSX = function(filename, opts, data, columns, cb) {
- /** @type {number} result */
- var res = 1;
-
- if (deepEqual(columns, [{columnid: '_'}])) {
- data = data.map(function(dat) {
- return dat._;
- });
- columns = undefined;
- // res = [{_:1}];
- } else {
- // data = data1;
- }
-
- filename = alasql.utils.autoExtFilename(filename, 'xlsx', opts);
-
- var XLSX = getXLSX();
-
- /* If called without filename, use opts */
- if (typeof filename == 'object') {
- opts = filename;
- filename = undefined;
- }
-
- /** @type {object} Workbook */
- var wb = {SheetNames: [], Sheets: {}};
-
- // ToDo: check if cb must be treated differently here
- if (opts.sourcefilename) {
- alasql.utils.loadBinaryFile(opts.sourcefilename, !!cb, function(data) {
- wb = XLSX.read(data, {type: 'binary'});
- doExport();
- });
- } else {
- doExport();
- }
-
- /* Return result */
- if (cb) res = cb(res);
- return res;
-
- /**
- Export workbook
- @function
- */
- function doExport() {
- /*
- If opts is array of arrays then this is a
- multisheet workboook, else it is a singlesheet
- */
- if (typeof opts == 'object' && Array.isArray(opts)) {
- if (data && data.length > 0) {
- data.forEach(function(dat, idx) {
- prepareSheet(opts[idx], dat, undefined, idx + 1);
- });
- }
- } else {
- prepareSheet(opts, data, columns, 1);
- }
-
- saveWorkbook(cb);
- }
-
- /**
- Prepare sheet
- @params {object} opts
- @params {array|object} data
- @params {array} columns Columns
- */
- function prepareSheet(opts, data, columns, idx) {
- /** Default options for sheet */
- var opt = {sheetid: 'Sheet ' + idx, headers: true};
- alasql.utils.extend(opt, opts);
-
- var dataLength = Object.keys(data).length;
-
- // Generate columns if they are not defined
- if ((!columns || columns.length == 0) && dataLength > 0) {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
-
- var cells = {};
-
- if (wb.SheetNames.indexOf(opt.sheetid) > -1) {
- cells = wb.Sheets[opt.sheetid];
- } else {
- wb.SheetNames.push(opt.sheetid);
- wb.Sheets[opt.sheetid] = {};
- cells = wb.Sheets[opt.sheetid];
- }
-
- var range = 'A1';
- if (opt.range) range = opt.range;
-
- var col0 = alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);
- var row0 = +range.match(/[0-9]+/)[0] - 1;
-
- if (wb.Sheets[opt.sheetid]['!ref']) {
- var rangem = wb.Sheets[opt.sheetid]['!ref'];
- var colm = alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);
- var rowm = +rangem.match(/[0-9]+/)[0] - 1;
- } else {
- var colm = 1,
- rowm = 1;
- }
- var colmax = Math.max(col0 + columns.length, colm);
- var rowmax = Math.max(row0 + dataLength + 2, rowm);
-
- var i = row0 + 1;
-
- wb.Sheets[opt.sheetid]['!ref'] = 'A1:' + alasql.utils.xlsnc(colmax) + rowmax;
- // var i = 1;
-
- if (opt.headers) {
- columns.forEach(function(col, idx) {
- cells[alasql.utils.xlsnc(col0 + idx) + '' + i] = {v: col.columnid.trim()};
- });
- i++;
- }
-
- for (var j = 0; j < dataLength; j++) {
- columns.forEach(function(col, idx) {
- var cell = {v: data[j][col.columnid]};
- if (typeof data[j][col.columnid] == 'number') {
- cell.t = 'n';
- } else if (typeof data[j][col.columnid] == 'string') {
- cell.t = 's';
- } else if (typeof data[j][col.columnid] == 'boolean') {
- cell.t = 'b';
- } else if (typeof data[j][col.columnid] == 'object') {
- if (data[j][col.columnid] instanceof Date) {
- cell.t = 'd';
- }
- }
- cells[alasql.utils.xlsnc(col0 + idx) + '' + i] = cell;
- });
- i++;
- }
- }
-
- /**
- Save Workbook
- @params {array} wb Workbook
- @params {callback} cb Callback
- */
- function saveWorkbook(cb) {
-
- var XLSX;
-
- if (typeof filename == 'undefined') {
- res = wb;
- } else {
- XLSX = getXLSX();
-
- if (utils.isNode || utils.isMeteorServer) {
- XLSX.writeFile(wb, filename);
- } else {
- var wopts = {bookType: 'xlsx', bookSST: false, type: 'binary'};
- var wbout = XLSX.write(wb, wopts);
-
- function s2ab(s) {
- var buf = new ArrayBuffer(s.length);
- var view = new Uint8Array(buf);
- for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
- return buf;
- }
-
- /* the saveAs call downloads a file on the local machine */
- // saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), '"'+filename+'"')
- // saveAs(new Blob([s2ab(wbout)],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}), filename)
- // saveAs(new Blob([s2ab(wbout)],{type:"application/vnd.ms-excel"}), '"'+filename+'"');
- if (isIE() == 9) {
- throw new Error(
- 'Cannot save XLSX files in IE9. Please use XLS() export function'
- );
- // var URI = 'data:text/plain;charset=utf-8,';
-
- /** @todo Check if this code is required */
-
- // alert('ie9');
- } else {
- saveAs(new Blob([s2ab(wbout)], {type: 'application/octet-stream'}), filename);
- }
- }
- }
-
- }
-};
-
-/*
-//
-// FROM functions Alasql.js
-// Date: 11.12.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/**
- Meteor
- */
-
-/* global alasql Tabletop document Event */
-
-alasql.from.METEOR = function(filename, opts, cb, idx, query) {
- var res = filename.find(opts).fetch();
- if (cb) {
- res = cb(res, idx, query);
- }
- return res;
-};
-
-/**
- Google Spreadsheet reader
- */
-alasql.from.TABLETOP = function(key, opts, cb, idx, query) {
- var res = [];
-
- var opt = {headers: true, simpleSheet: true, key: key};
- alasql.utils.extend(opt, opts);
- opt.callback = function(data) {
- res = data;
- if (cb) {
- res = cb(res, idx, query);
- }
- };
-
- Tabletop.init(opt);
- return null;
-};
-
-alasql.from.HTML = function(selector, opts, cb, idx, query) {
- var opt = {};
- alasql.utils.extend(opt, opts);
-
- var sel = document.querySelector(selector);
- if (!sel && sel.tagName !== 'TABLE') {
- throw new Error('Selected HTML element is not a TABLE');
- }
-
- var res = [];
- var headers = opt.headers;
-
- if (headers && !Array.isArray(headers)) {
- headers = [];
- var ths = sel.querySelector('thead tr').children;
- for (var i = 0; i < ths.length; i++) {
- if (
- !(ths.item(i).style && ths.item(i).style.display === 'none' && opt.skipdisplaynone)
- ) {
- headers.push(ths.item(i).textContent);
- } else {
- headers.push(undefined);
- }
- }
- }
-
- var trs = sel.querySelectorAll('tbody tr');
-
- for (var j = 0; j < trs.length; j++) {
- var tds = trs.item(j).children;
- var r = {};
- for (i = 0; i < tds.length; i++) {
- if (
- !(tds.item(i).style && tds.item(i).style.display === 'none' && opt.skipdisplaynone)
- ) {
- if (headers) {
- r[headers[i]] = tds.item(i).textContent;
- } else {
- r[i] = tds.item(i).textContent;
-
- }
- }
- }
- res.push(r);
- }
-
- if (cb) {
- res = cb(res, idx, query);
- }
- return res;
-};
-
-alasql.from.RANGE = function(start, finish, cb, idx, query) {
- var res = [];
- for (var i = start; i <= finish; i++) {
- res.push(i);
- }
- // res = new alasql.Recordset({data:res,columns:{columnid:'_'}});
- if (cb) {
- res = cb(res, idx, query);
- }
- return res;
-};
-
-// Read data from any file
-alasql.from.FILE = function(filename, opts, cb, idx, query) {
- var fname;
- if (typeof filename === 'string') {
- fname = filename;
- } else if (filename instanceof Event) {
- fname = filename.target.files[0].name;
- } else {
- throw new Error('Wrong usage of FILE() function');
- }
-
- var parts = fname.split('.');
-
- var ext = parts[parts.length - 1].toUpperCase();
-
- if (alasql.from[ext]) {
-
- return alasql.from[ext](filename, opts, cb, idx, query);
- } else {
- throw new Error('Cannot recognize file type for loading');
- }
-};
-
-// Read JSON file
-
-alasql.from.JSON = function(filename, opts, cb, idx, query) {
- var res;
-
- filename = alasql.utils.autoExtFilename(filename, 'json', opts);
- alasql.utils.loadFile(filename, !!cb, function(data) {
-
- // res = [{a:1}];
- res = JSON.parse(data);
- if (cb) {
- res = cb(res, idx, query);
- }
- });
- return res;
-};
-
-alasql.from.TXT = function(filename, opts, cb, idx, query) {
- var res;
- filename = alasql.utils.autoExtFilename(filename, 'txt', opts);
- alasql.utils.loadFile(filename, !!cb, function(data) {
- res = data.split(/\r?\n/);
-
- // Remove last line if empty
- if (res[res.length - 1] === '') {
- res.pop();
- }
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- // Please avoid '===' here
- if (res[i] == +res[i]) {
- // eslint:ignore
- // jshint ignore:line
- res[i] = +res[i];
- }
- res[i] = [res[i]];
- }
- if (cb) {
- res = cb(res, idx, query);
- }
- });
- return res;
-};
-
-alasql.from.TAB = alasql.from.TSV = function(filename, opts, cb, idx, query) {
- opts = opts || {};
- opts.separator = '\t';
- filename = alasql.utils.autoExtFilename(filename, 'tab', opts);
- opts.autoext = false;
- return alasql.from.CSV(filename, opts, cb, idx, query);
-};
-
-alasql.from.CSV = function(contents, opts, cb, idx, query) {
- var opt = {
- separator: ',',
- quote: '"',
- headers: true,
- };
- alasql.utils.extend(opt, opts);
- var res;
- var hs = [];
- function parseText(text) {
- var delimiterCode = opt.separator.charCodeAt(0);
- var quoteCode = opt.quote.charCodeAt(0);
-
- var EOL = {},
- EOF = {},
- rows = [],
- N = text.length,
- I = 0,
- n = 0,
- t,
- eol;
- function token() {
- if (I >= N) {
- return EOF;
- }
- if (eol) {
- return (eol = false), EOL;
- }
- var j = I;
- if (text.charCodeAt(j) === quoteCode) {
- var i = j;
- while (i++ < N) {
- if (text.charCodeAt(i) === quoteCode) {
- if (text.charCodeAt(i + 1) !== quoteCode) {
- break;
- }
- ++i;
- }
- }
- I = i + 2;
- var c = text.charCodeAt(i + 1);
- if (c === 13) {
- eol = true;
- if (text.charCodeAt(i + 2) === 10) {
- ++I;
- }
- } else if (c === 10) {
- eol = true;
- }
- return text.substring(j + 1, i).replace(/""/g, '"');
- }
- while (I < N) {
- var c = text.charCodeAt(I++),
- k = 1;
- if (c === 10) {
- eol = true;
- } else if (c === 13) {
- eol = true;
- if (text.charCodeAt(I) === 10) {
- ++I;
- ++k;
- }
- } else if (c !== delimiterCode) {
- continue;
- }
- return text.substring(j, I - k);
- }
- return text.substring(j);
- }
-
- while ((t = token()) !== EOF) {
- var a = [];
- while (t !== EOL && t !== EOF) {
- a.push(t.trim());
- t = token();
- }
-
- if (opt.headers) {
- if (n === 0) {
- if (typeof opt.headers === 'boolean') {
- hs = a;
- } else if (Array.isArray(opt.headers)) {
- hs = opt.headers;
- var r = {};
- hs.forEach(function(h, idx) {
- r[h] = a[idx];
- // Please avoid === here
- if (
- typeof r[h] !== 'undefined' &&
- r[h].length !== 0 &&
- r[h].trim() == +r[h]
- ) {
- // jshint ignore:line
- r[h] = +r[h];
- }
- });
- rows.push(r);
- }
- } else {
- var r = {};
- hs.forEach(function(h, idx) {
- r[h] = a[idx];
- if (
- typeof r[h] !== 'undefined' &&
- r[h].length !== 0 &&
- r[h].trim() == +r[h]
- ) {
- // jshint ignore:line
- r[h] = +r[h];
- }
- });
- rows.push(r);
- }
- n++;
- } else {
- rows.push(a);
- }
- }
-
- res = rows;
-
- if (opt.headers) {
- if (query && query.sources && query.sources[idx]) {
- var columns = (query.sources[idx].columns = []);
- hs.forEach(function(h) {
- columns.push({columnid: h});
- });
- }
- }
-
- if (cb) {
- res = cb(res, idx, query);
- }
- }
- if (new RegExp('\n').test(contents)) {
- parseText(contents);
- } else {
- contents = alasql.utils.autoExtFilename(contents, 'csv', opts);
- alasql.utils.loadFile(contents, !!cb, parseText, query.cb);
- }
- return res;
-};
-
-function XLSXLSX(X, filename, opts, cb, idx, query) {
- var opt = {};
- opts = opts || {};
- alasql.utils.extend(opt, opts);
- if (typeof opt.headers === 'undefined') {
- opt.headers = true;
- }
- var res;
-
- /**
- * see https://github.com/SheetJS/js-xlsx/blob/5ae6b1965bfe3764656a96f536b356cd1586fec7/README.md
- * for example of using readAsArrayBuffer under `Parsing Workbooks`
- */
- function fixdata(data) {
- var o = '',
- l = 0,
- w = 10240;
- for (; l < data.byteLength / w; ++l)
- o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
- o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
- return o;
- }
- function getHeaderText(text) {
- // if casesensitive option is set to false and there is a text value return lowercase value of text
- if (text && alasql.options.casesensitive === false) {
- return text.toLowerCase();
- } else {
- return text;
- }
- }
- filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
- alasql.utils.loadBinaryFile(
- filename,
- !!cb,
- function(data) {
- // function processData(data) {
- if (data instanceof ArrayBuffer) {
- var arr = fixdata(data);
- var workbook = X.read(btoa(arr), {type: 'base64'});
- } else {
- var workbook = X.read(data, {type: 'binary'});
- }
-
- var sheetid;
- if (typeof opt.sheetid === 'undefined') {
- sheetid = workbook.SheetNames[0];
- } else if (typeof opt.sheetid === 'number') {
- sheetid = workbook.SheetNames[opt.sheetid];
- } else {
- sheetid = opt.sheetid;
- }
- var range;
- var res = [];
- if (typeof opt.range === 'undefined') {
- range = workbook.Sheets[sheetid]['!ref'];
- } else {
- range = opt.range;
- if (workbook.Sheets[sheetid][range]) {
- range = workbook.Sheets[sheetid][range];
- }
- }
- // if range has some value then data is present in the current sheet
- // else current sheet is empty
- if (range) {
- var rg = range.split(':');
- var col0 = rg[0].match(/[A-Z]+/)[0];
- var row0 = +rg[0].match(/[0-9]+/)[0];
- var col1 = rg[1].match(/[A-Z]+/)[0];
- var row1 = +rg[1].match(/[0-9]+/)[0];
-
- var hh = {};
- var xlscnCol0 = alasql.utils.xlscn(col0);
- var xlscnCol1 = alasql.utils.xlscn(col1);
- for (var j = xlscnCol0; j <= xlscnCol1; j++) {
- var col = alasql.utils.xlsnc(j);
- if (opt.headers) {
- if (workbook.Sheets[sheetid][col + '' + row0]) {
- hh[col] = getHeaderText(workbook.Sheets[sheetid][col + '' + row0].v);
- } else {
- hh[col] = getHeaderText(col);
- }
- } else {
- hh[col] = col;
- }
- }
- if (opt.headers) {
- row0++;
- }
- for (var i = row0; i <= row1; i++) {
- var row = {};
- for (var j = xlscnCol0; j <= xlscnCol1; j++) {
- var col = alasql.utils.xlsnc(j);
- if (workbook.Sheets[sheetid][col + '' + i]) {
- row[hh[col]] = workbook.Sheets[sheetid][col + '' + i].v;
- }
- }
- res.push(row);
- }
- } else {
- res.push([]);
- }
-
- // Remove last empty line (issue #548)
- if (
- res.length > 0 &&
- res[res.length - 1] &&
- Object.keys(res[res.length - 1]).length == 0
- ) {
- res.pop();
- }
-
- if (cb) {
- res = cb(res, idx, query);
- }
- },
- function(err) {
- throw err;
- }
- );
-
- return res;
-}
+LS.intoTable = function(databaseid, tableid, value, columns, cb) {
-alasql.from.XLS = function(filename, opts, cb, idx, query) {
- opts = opts || {};
- filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
- opts.autoExt = false;
- return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
-};
-
-alasql.from.XLSX = function(filename, opts, cb, idx, query) {
- opts = opts || {};
- filename = alasql.utils.autoExtFilename(filename, 'xlsx', opts);
- opts.autoExt = false;
- return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
-};
-
-alasql.from.ODS = function(filename, opts, cb, idx, query) {
- opts = opts || {};
- filename = alasql.utils.autoExtFilename(filename, 'ods', opts);
- opts.autoExt = false;
- return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
-};
-
-alasql.from.XML = function(filename, opts, cb, idx, query) {
- var res;
-
- alasql.utils.loadFile(filename, !!cb, function(data) {
-
- // res = [{a:1}];
-
- res = xmlparse(data).root;
-
- if (cb) res = cb(res, idx, query);
- });
- return res;
-};
-
-/**
- * Parse the given string of `xml`.
- *
- * @param {String} xml
- * @return {Object}
- * @api public
- */
-
-function xmlparse(xml) {
- xml = xml.trim();
-
- // strip comments
- xml = xml.replace(//g, '');
-
- return document();
-
- /**
- * XML document.
- */
-
- function document() {
- return {
- declaration: declaration(),
- root: tag(),
- };
- }
-
- /**
- * Declaration.
- */
-
- function declaration() {
- var m = match(/^<\?xml\s*/);
- if (!m) return;
-
- // tag
- var node = {
- attributes: {},
- };
-
- // attributes
- while (!(eos() || is('?>'))) {
- var attr = attribute();
- if (!attr) return node;
- node.attributes[attr.name] = attr.value;
- }
-
- match(/\?>\s*/);
-
- return node;
- }
-
- /**
- * Tag.
- */
-
- function tag() {
- var m = match(/^<([\w-:.]+)\s*/);
- if (!m) return;
-
- // name
- var node = {
- name: m[1],
- attributes: {},
- children: [],
- };
-
- // attributes
- while (!(eos() || is('>') || is('?>') || is('/>'))) {
- var attr = attribute();
- if (!attr) return node;
- node.attributes[attr.name] = attr.value;
- }
-
- // self closing tag
- if (match(/^\s*\/>\s*/)) {
- return node;
- }
-
- match(/\??>\s*/);
-
- // content
- node.content = content();
-
- // children
- var child;
- while ((child = tag())) {
- node.children.push(child);
- }
-
- // closing
- match(/^<\/[\w-:.]+>\s*/);
-
- return node;
- }
-
- /**
- * Text content.
- */
-
- function content() {
- var m = match(/^([^<]*)/);
- if (m) return m[1];
- return '';
- }
-
- /**
- * Attribute.
- */
-
- function attribute() {
- var m = match(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);
- if (!m) return;
- return {name: m[1], value: strip(m[2])};
- }
-
- /**
- * Strip quotes from `val`.
- */
-
- function strip(val) {
- return val.replace(/^['"]|['"]$/g, '');
- }
-
- /**
- * Match `re` and advance the string.
- */
-
- function match(re) {
- var m = xml.match(re);
- if (!m) return;
- xml = xml.slice(m[0].length);
- return m;
- }
-
- /**
- * End-of-source.
- */
-
- function eos() {
- return 0 == xml.length;
- }
-
- /**
- * Check for `prefix`.
- */
-
- function is(prefix) {
- return 0 == xml.indexOf(prefix);
- }
-}
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var res = value.length;
+ // var tb = LS.get(lsdbid+'.'+tableid);
+ var tb = LS.restoreTable(databaseid, tableid);
+ for (var columnid in tb.identities) {
+ var ident = tb.identities[columnid];
-alasql.from.GEXF = function(filename, opts, cb, idx, query) {
- var res;
- alasql('SEARCH FROM XML(' + filename + ')', [], function(data) {
- res = data;
+ for (var index in value) {
+ value[index][columnid] = ident.value;
+ ident.value += ident.step;
+ }
+ }
+ if (!tb.data) tb.data = [];
+ tb.data = tb.data.concat(value);
+ // LS.set(lsdbid+'.'+tableid, tb);
+ LS.storeTable(databaseid, tableid);
- if (cb) res = cb(res);
- });
- return res;
-};
+ if (cb) res = cb(res);
-/*
-//
-// HELP for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
+ return res;
+};
+
+/**
+ Laad data from table
+*/
+LS.loadTableData = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ LS.restoreTable(databaseid, tableid);
+ // db.tables[tableid].data = LS.get(lsdbid+'.'+tableid);
+};
+
+/**
+ Save data to the table
*/
-/* globals: alasql, yy */
+LS.saveTableData = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ LS.storeTable(lsdbid, tableid);
+ // LS.set(lsdbid+'.'+tableid,db.tables[tableid].data);
+ db.tables[tableid].data = undefined;
+};
/**
- Print statement
- @class
- @param {object} params Initial setup properties
+ Commit
*/
-/* global alasql, yy */
+LS.commit = function(databaseid, cb) {
-yy.Print = function(params) {
- return yy.extend(this, params);
+ var db = alasql.databases[databaseid];
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var lsdb = {databaseid: lsdbid, tables: {}};
+ if (db.tables) {
+ for (var tbid in db.tables) {
+ // TODO: Question - do we need this line
+ lsdb.tables[tbid] = true;
+ LS.storeTable(databaseid, tbid);
+ // LS.set(lsdbid+'.'+tbid, db.tables[tbid].data);
+ }
+ }
+ LS.set(lsdbid, lsdb);
+ return cb ? cb(1) : 1;
};
-/**
- Generate SQL string
- @this Print statement object
+/**
+ Alias BEGIN = COMMIT
*/
-yy.Print.prototype.toString = function() {
- var s = 'PRINT';
- if (this.statement) s += ' ' + this.statement.toString();
- return s;
-};
+LS.begin = LS.commit;
/**
- Print result of select statement or expression
- @param {string} databaseid Database identificator
- @param {object} params Query parameters
- @param {statement-callback} cb Callback function
- @this Print statement object
+ ROLLBACK
*/
-yy.Print.prototype.execute = function(databaseid, params, cb) {
- var self = this;
+LS.rollback = function(databaseid, cb) {
+ // This does not work and should be fixed
+ // Plus test 151 and 231
+
+ return;
+
+ var db = alasql.databases[databaseid];
+ db.dbversion++;
+
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var lsdb = LS.get(lsdbid);
+ // if(!alasql.options.autocommit) {
+
+ delete alasql.databases[databaseid];
+ alasql.databases[databaseid] = new alasql.Database(databaseid);
+ extend(alasql.databases[databaseid], lsdb);
+ alasql.databases[databaseid].databaseid = databaseid;
+ alasql.databases[databaseid].engineid = 'LOCALSTORAGE';
+
+ if (lsdb.tables) {
+ for (var tbid in lsdb.tables) {
+ // var tb = new alasql.Table({columns: db.tables[tbid].columns});
+ // extend(tb,lsdb.tables[tbid]);
+ // lsdb.tables[tbid] = true;
+
+ // if(!alasql.options.autocommit) {
+
+ // lsdb.tables[tbid].data = LS.get(db.lsdbid+'.'+tbid);
+ LS.restoreTable(databaseid, tbid);
+ // }
+ // lsdb.tables[tbid].indexColumns();
+
+ // index columns
+ // convert types
+ }
+ }
+ // }
+
+};
+
+//
+// 91websql.js
+// WebSQL database support
+// (c) 2014, Andrey Gershun
+//
+
+var SQLITE = (alasql.engines.SQLITE = function() {});
+
+SQLITE.createDatabase = function(wdbid, args, ifnotexists, dbid, cb) {
+ throw new Error('Connot create SQLITE database in memory. Attach it.');
+};
+
+SQLITE.dropDatabase = function(databaseid) {
+ throw new Error('This is impossible to drop SQLite database. Detach it.');
+};
+
+SQLITE.attachDatabase = function(sqldbid, dbid, args, params, cb) {
+ var res = 1;
+ if (alasql.databases[dbid]) {
+ throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
+ }
+
+ if ((args[0] && args[0] instanceof yy.StringValue) || args[0] instanceof yy.ParamValue) {
+ if (args[0] instanceof yy.StringValue) {
+ var value = args[0].value;
+ } else if (args[0] instanceof yy.ParamValue) {
+ var value = params[args[0].param];
+ }
+ alasql.utils.loadBinaryFile(
+ value,
+ true,
+ function(data) {
+ var db = new alasql.Database(dbid || sqldbid);
+ db.engineid = 'SQLITE';
+ db.sqldbid = sqldbid;
+ var sqldb = (db.sqldb = new SQL.Database(data));
+ db.tables = [];
+ var tables = sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;
+
+ tables.forEach(function(tbl) {
+ db.tables[tbl[1]] = {};
+ var columns = (db.tables[tbl[1]].columns = []);
+ var ast = alasql.parse(tbl[4]);
+
+ var coldefs = ast.statements[0].columns;
+ if (coldefs && coldefs.length > 0) {
+ coldefs.forEach(function(cd) {
+ columns.push(cd);
+ });
+ }
+ });
+
+ cb(1);
+ },
+ function(err) {
+ throw new Error('Cannot open SQLite database file "' + args[0].value + '"');
+ }
+ );
+ return res;
+ } else {
+ throw new Error('Cannot attach SQLite database without a file');
+ }
+
+ return res;
+};
+
+SQLITE.fromTable = function(databaseid, tableid, cb, idx, query) {
+ var data = alasql.databases[databaseid].sqldb.exec('SELECT * FROM ' + tableid);
+ var columns = (query.sources[idx].columns = []);
+ if (data[0].columns.length > 0) {
+ data[0].columns.forEach(function(columnid) {
+ columns.push({columnid: columnid});
+ });
+ }
+
+ var res = [];
+ if (data[0].values.length > 0) {
+ data[0].values.forEach(function(d) {
+ var r = {};
+ columns.forEach(function(col, idx) {
+ r[col.columnid] = d[idx];
+ });
+ res.push(r);
+ });
+ }
+ if (cb) cb(res, idx, query);
+};
+
+SQLITE.intoTable = function(databaseid, tableid, value, columns, cb) {
+ var sqldb = alasql.databases[databaseid].sqldb;
+ for (var i = 0, ilen = value.length; i < ilen; i++) {
+ var s = 'INSERT INTO ' + tableid + ' (';
+ var d = value[i];
+ var keys = Object.keys(d);
+ s += keys.join(',');
+ s += ') VALUES (';
+ s += keys
+ .map(function(k) {
+ v = d[k];
+ if (typeof v == 'string') v = "'" + v + "'";
+ return v;
+ })
+ .join(',');
+ s += ')';
+ sqldb.exec(s);
+ }
+ var res = ilen;
+ if (cb) cb(res);
+ return res;
+};
+
+//
+// 91localstorage.js
+// localStorage and DOM-Storage engine
+// Date: 09.12.2014
+// (c) Andrey Gershun
+//
+
+var FS = (alasql.engines.FILESTORAGE = alasql.engines.FILE = function() {});
+
+FS.createDatabase = function(fsdbid, args, ifnotexists, dbid, cb) {
+
+ var res = 1;
+ var filename = args[0].value;
+
+ alasql.utils.fileExists(filename, function(fex) {
+
+ if (fex) {
+ if (ifnotexists) {
+ res = 0;
+ if (cb) res = cb(res);
+ return res;
+ } else {
+ throw new Error('Cannot create new database file, because it already exists');
+ }
+ } else {
+ var data = {tables: {}};
+ alasql.utils.saveFile(filename, JSON.stringify(data), function(data) {
+ if (cb) res = cb(res);
+ });
+ }
+ });
+ return res;
+};
+
+FS.dropDatabase = function(fsdbid, ifexists, cb) {
+ var res;
+ var filename = fsdbid.value;
+
+ alasql.utils.fileExists(filename, function(fex) {
+ if (fex) {
+ res = 1;
+ alasql.utils.deleteFile(filename, function() {
+ res = 1;
+ if (cb) res = cb(res);
+ });
+ } else {
+ if (!ifexists) {
+ throw new Error('Cannot drop database file, because it does not exist');
+ }
+ res = 0;
+ if (cb) res = cb(res);
+ }
+ });
+ return res;
+};
+
+FS.attachDatabase = function(fsdbid, dbid, args, params, cb) {
+
+ var res = 1;
+ if (alasql.databases[dbid]) {
+ throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
+ }
+ var db = new alasql.Database(dbid || fsdbid);
+ db.engineid = 'FILESTORAGE';
+ // db.fsdbid = fsdbid;
+ db.filename = args[0].value;
+ loadFile(db.filename, !!cb, function(s) {
+ try {
+ db.data = JSON.parse(s);
+ } catch (err) {
+ throw new Error('Data in FileStorage database are corrupted');
+ }
+ db.tables = db.data.tables;
+ // IF AUTOCOMMIT IS OFF then copy data to memory
+ if (!alasql.options.autocommit) {
+ if (db.tables) {
+ for (var tbid in db.tables) {
+ db.tables[tbid].data = db.data[tbid];
+ }
+ }
+ }
+ if (cb) res = cb(res);
+ });
+ return res;
+};
+
+FS.createTable = function(databaseid, tableid, ifnotexists, cb) {
+ var db = alasql.databases[databaseid];
+ var tb = db.data[tableid];
var res = 1;
- alasql.precompile(this, databaseid, params); /** @todo Change from alasql to this */
-
- if (this.exprs && this.exprs.length > 0) {
- var rs = this.exprs.map(function(expr) {
-
- var exprfn = new Function(
- 'params,alasql,p',
- 'var y;return ' + expr.toJS('({})', '', null)
- ).bind(self);
- var r = exprfn(params, alasql);
- return JSONtoString(r);
- });
- console.log.apply(console, rs);
- } else if (this.select) {
- var r = this.select.execute(databaseid, params);
- console.log(JSONtoString(r));
- } else {
- console.log();
+ if (tb && !ifnotexists) {
+ throw new Error('Table "' + tableid + '" alsready exists in the database "' + fsdbid + '"');
}
+ var table = alasql.databases[databaseid].tables[tableid];
+ db.data.tables[tableid] = {columns: table.columns};
+ db.data[tableid] = [];
- if (cb) res = cb(res);
+ FS.updateFile(databaseid);
+
+ if (cb) cb(res);
return res;
};
-/*
-//
-// HELP for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+FS.updateFile = function(databaseid) {
-yy.Source = function(params) {
- return yy.extend(this, params);
-};
-yy.Source.prototype.toString = function() {
- var s = 'SOURCE';
- if (this.url) s += " '" + this.url + " '";
- return s;
+ var db = alasql.databases[databaseid];
+ if (db.issaving) {
+ db.postsave = true;
+ return;
+ }
+ db.issaving = true;
+ db.postsave = false;
+ alasql.utils.saveFile(db.filename, JSON.stringify(db.data), function() {
+ db.issaving = false;
+
+ if (db.postsave) {
+ setTimeout(function() {
+ FS.updateFile(databaseid);
+ }, 50); // TODO Test with different timeout parameters
+ }
+ });
};
-// SOURCE FILE
-yy.Source.prototype.execute = function(databaseid, params, cb) {
+FS.dropTable = function(databaseid, tableid, ifexists, cb) {
+ var res = 1;
+ var db = alasql.databases[databaseid];
+ if (!ifexists && !db.tables[tableid]) {
+ throw new Error(
+ 'Cannot drop table "' + tableid + '" in fileStorage, because it does not exist'
+ );
+ }
+ delete db.tables[tableid];
+ delete db.data.tables[tableid];
+ delete db.data[tableid];
+ FS.updateFile(databaseid);
+ if (cb) cb(res);
+ return res;
+};
- var res;
- loadFile(
- this.url,
- !!cb,
- function(data) {
+FS.fromTable = function(databaseid, tableid, cb, idx, query) {
- // res = 1;
- res = alasql(data);
- if (cb) res = cb(res);
- return res;
- },
- function(err) {
- throw err;
- }
- );
+ var db = alasql.databases[databaseid];
+ var res = db.data[tableid];
+ if (cb) res = cb(res, idx, query);
return res;
};
-/*
-//
-// HELP for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+FS.intoTable = function(databaseid, tableid, value, columns, cb) {
+ var db = alasql.databases[databaseid];
+ var res = value.length;
+ var tb = db.data[tableid];
+ if (!tb) tb = [];
+ db.data[tableid] = tb.concat(value);
+ FS.updateFile(databaseid);
+ if (cb) cb(res);
+ return res;
+};
-/* global alasql, yy */
+FS.loadTableData = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ db.tables[tableid].data = db.data[tableid];
+};
-yy.Require = function(params) {
- return yy.extend(this, params);
+FS.saveTableData = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ db.data[tableid] = db.tables[tableid].data;
+ db.tables[tableid].data = null;
+ FS.updateFile(databaseid);
};
-yy.Require.prototype.toString = function() {
- var s = 'REQUIRE';
- if (this.paths && this.paths.length > 0) {
- s += this.paths
- .map(function(path) {
- return path.toString();
- })
- .join(',');
- }
- if (this.plugins && this.plugins.length > 0) {
- s += this.plugins
- .map(function(plugin) {
- return plugin.toUpperCase();
- })
- .join(',');
+
+FS.commit = function(databaseid, cb) {
+
+ var db = alasql.databases[databaseid];
+ var fsdb = {tables: {}};
+ if (db.tables) {
+ for (var tbid in db.tables) {
+ db.data.tables[tbid] = {columns: db.tables[tbid].columns};
+ db.data[tbid] = db.tables[tbid].data;
+ }
}
- return s;
+ FS.updateFile(databaseid);
+ return cb ? cb(1) : 1;
};
-/**
- Attach plug-in for Alasql
- */
-yy.Require.prototype.execute = function(databaseid, params, cb) {
- var self = this;
- var res = 0;
- var ss = '';
+FS.begin = FS.commit;
- if (this.paths && this.paths.length > 0) {
- this.paths.forEach(function(path) {
- loadFile(path.value, !!cb, function(data) {
- res++;
+FS.rollback = function(databaseid, cb) {
+ var res = 1;
+ var db = alasql.databases[databaseid];
+ db.dbversion++;
+
+ // var lsdbid = alasql.databases[databaseid].lsdbid;
+ // lsdb = LS.get(lsdbid);
+ wait();
+ function wait() {
+ setTimeout(function() {
+ if (db.issaving) {
+ return wait();
+ } else {
+ alasql.loadFile(db.filename, !!cb, function(data) {
+ db.data = data;
+ db.tables = {};
+ for (var tbid in db.data.tables) {
+ var tb = new alasql.Table({columns: db.data.tables[tbid].columns});
+ extend(tb, db.data.tables[tbid]);
+ db.tables[tbid] = tb;
+ if (!alasql.options.autocommit) {
+ db.tables[tbid].data = db.data[tbid];
+ }
+ db.tables[tbid].indexColumns();
- ss += data;
- if (res < self.paths.length) return;
+ // index columns
+ // convert types
+ }
- new Function('params,alasql', ss)(params, alasql);
- if (cb) res = cb(res);
- });
- });
- } else if (this.plugins && this.plugins.length > 0) {
- this.plugins.forEach(function(plugin) {
- // If plugin is not loaded already
- if (!alasql.plugins[plugin]) {
- loadFile(alasql.path + '/alasql-' + plugin.toLowerCase() + '.js', !!cb, function(
- data
- ) {
- // Execute all plugins at the same time
- res++;
- ss += data;
- if (res < self.plugins.length) return;
+ delete alasql.databases[databaseid];
+ alasql.databases[databaseid] = new alasql.Database(databaseid);
+ extend(alasql.databases[databaseid], db);
+ alasql.databases[databaseid].engineid = 'FILESTORAGE';
+ alasql.databases[databaseid].filename = db.filename;
- new Function('params,alasql', ss)(params, alasql);
- alasql.plugins[plugin] = true; // Plugin is loaded
if (cb) res = cb(res);
+ // Todo: check why no return
});
}
- });
- } else {
- if (cb) res = cb(res);
+ }, 100);
}
- return res;
-};
-/*
-//
-// HELP for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
+ // if(!alasql.options.autocommit) {
-yy.Assert = function(params) {
- return yy.extend(this, params);
-};
-yy.Source.prototype.toString = function() {
- var s = 'ASSERT';
- if (this.value) s += ' ' + JSON.stringify(this.value);
- return s;
};
-// SOURCE FILE
-yy.Assert.prototype.execute = function(databaseid) {
+if(utils.isBrowser && !utils.isWebWorker) {
- if (!deepEqual(alasql.res, this.value)) {
- // if(this.message) {
- // throw this.
- // } else {
- throw new Error(
- (this.message || 'Assert wrong') +
- ': ' +
- JSON.stringify(alasql.res) +
- ' == ' +
- JSON.stringify(this.value)
- );
- // }
- }
- return 1;
+alasql = alasql || false;
+
+if (!alasql) {
+ throw new Error('alasql was not found');
+}
+
+alasql.worker = function() {
+ throw new Error('Can find webworker in this enviroment');
};
-//
-// 91websql.js
-// WebSQL database support
-// (c) 2014, Andrey Gershun
-//
-
-var WEBSQL = (alasql.engines.WEBSQL = function() {});
-
-WEBSQL.createDatabase = function(wdbid, args, dbid, cb) {
- var res = 1;
- var wdb = openDatabase(wdbid, args[0], args[1], args[2]);
- if (this.dbid) {
- var db = alasql.createDatabase(this.dbid);
- db.engineid = 'WEBSQL';
- db.wdbid = wdbid;
- sb.wdb = db;
- }
- if (!wdb) {
- throw new Error('Cannot create WebSQL database "' + databaseid + '"');
- }
- if (cb) cb(res);
- return res;
-};
-
-WEBSQL.dropDatabase = function(databaseid) {
- throw new Error('This is impossible to drop WebSQL database.');
-};
-
-WEBSQL.attachDatabase = function(databaseid, dbid, args, params, cb) {
- var res = 1;
- if (alasql.databases[dbid]) {
- throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
- }
- alasqlopenDatabase(databaseid, args[0], args[1], args[2]);
- return res;
-};
-
-//
-// 91indexeddb.js
-// AlaSQL IndexedDB module
-// Date: 18.04.2015
-// (c) Andrey Gershun
-//
-
-/* global alasql, yy, utils*/
-
-var IDB = (alasql.engines.INDEXEDDB = function() {
- '';
-});
-
-if (utils.hasIndexedDB) {
- // For Chrome it work normally, for Firefox - simple shim
- if (typeof utils.global.indexedDB.webkitGetDatabaseNames == 'function') {
- IDB.getDatabaseNames = utils.global.indexedDB.webkitGetDatabaseNames.bind(
- utils.global.indexedDB
- );
- } else {
- IDB.getDatabaseNames = function() {
- var request = {};
- var result = {
- contains: function(name) {
- return true; // Always return true
- },
- notsupported: true,
- };
- setTimeout(function() {
- var event = {target: {result: result}};
- request.onsuccess(event);
- }, 0);
- return request;
- };
- IDB.getDatabaseNamesNotSupported = true;
- }
-}
+if (typeof Worker !== 'undefined') {
+ alasql.worker = function(path, paths, cb) {
+ // var path;
+ if (path === true) {
+ path = undefined;
+ }
-//
-// SHOW DATABASES
-// work only in chrome
-//
-IDB.showDatabases = function(like, cb) {
-
- var request = IDB.getDatabaseNames();
- request.onsuccess = function(event) {
- var dblist = event.target.result;
- if (IDB.getDatabaseNamesNotSupported) {
- throw new Error('SHOW DATABASE is not supported in this browser');
- }
- var res = [];
- if (like) {
- var relike = new RegExp(like.value.replace(/\%/g, '.*'), 'g');
- }
- for (var i = 0; i < dblist.length; i++) {
- if (!like || dblist[i].match(relike)) {
- res.push({databaseid: dblist[i]});
- }
- }
- cb(res);
- };
-};
-
-IDB.createDatabase = function(ixdbid, args, ifnotexists, dbid, cb) {
-
- var indexedDB = utils.global.indexedDB;
- if (ifnotexists) {
- var request2 = indexedDB.open(ixdbid, 1);
- request2.onsuccess = function(event) {
- event.target.result.close();
- if (cb) cb(1);
- };
- } else {
- var request1 = indexedDB.open(ixdbid, 1);
- request1.onupgradeneeded = function(e) {
-
- e.target.transaction.abort();
- };
- request1.onsuccess = function(e) {
-
- if (ifnotexists) {
- if (cb) cb(0);
- } else {
- throw new Error(
- 'IndexedDB: Cannot create new database "' +
- ixdbid +
- '" because it already exists'
- );
- }
- };
- }
-
-};
-
-IDB.createDatabase = function(ixdbid, args, ifnotexists, dbid, cb) {
- var indexedDB = utils.global.indexedDB;
- if (IDB.getDatabaseNamesNotSupported) {
- // Hack for Firefox
- if (ifnotexists) {
-
- var dbExists = true;
- var request2 = indexedDB.open(ixdbid);
-
- request2.onupgradeneeded = function(e) {
-
- dbExists = false;
- // e.target.transaction.abort();
- // cb(0);
- };
- request2.onsuccess = function(event) {
-
- event.target.result.close();
- if (dbExists) {
- if (cb) cb(0);
- } else {
- if (cb) cb(1);
- }
- };
- } else {
-
- var request1 = indexedDB.open(ixdbid);
- request1.onupgradeneeded = function(e) {
- e.target.transaction.abort();
- };
- request1.onabort = function(event) {
- if (cb) cb(1);
- };
- request1.onsuccess = function(event) {
- event.target.result.close();
- throw new Error(
- 'IndexedDB: Cannot create new database "' +
- ixdbid +
- '" because it already exists'
- );
- // cb(0);
- };
- }
- } else {
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event) {
- var dblist = event.target.result;
- if (dblist.contains(ixdbid)) {
- if (ifnotexists) {
- if (cb) cb(0);
- return;
- } else {
- throw new Error(
- 'IndexedDB: Cannot create new database "' +
- ixdbid +
- '" because it already exists'
- );
- }
- }
-
- var request2 = indexedDB.open(ixdbid, 1);
- request2.onsuccess = function(event) {
- event.target.result.close();
- if (cb) cb(1);
- };
- };
- }
-};
-
-IDB.dropDatabase = function(ixdbid, ifexists, cb) {
- var indexedDB = utils.global.indexedDB;
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event) {
- var dblist = event.target.result;
- if (!dblist.contains(ixdbid)) {
- if (ifexists) {
- if (cb) cb(0);
- return;
- } else {
- throw new Error(
- 'IndexedDB: Cannot drop new database "' + ixdbid + '" because it does not exist'
- );
- }
- }
- var request2 = indexedDB.deleteDatabase(ixdbid);
- request2.onsuccess = function(event) {
-
- if (cb) cb(1);
- };
- };
-};
-
-IDB.attachDatabase = function(ixdbid, dbid, args, params, cb) {
- if (!utils.hasIndexedDB) {
- throw new Error('The current browser does not support IndexedDB');
- }
- var indexedDB = utils.global.indexedDB;
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event) {
- var dblist = event.target.result;
- if (!dblist.contains(ixdbid)) {
- throw new Error(
- 'IndexedDB: Cannot attach database "' + ixdbid + '" because it does not exist'
- );
- }
- var request2 = indexedDB.open(ixdbid);
- request2.onsuccess = function(event) {
- var ixdb = event.target.result;
- var db = new alasql.Database(dbid || ixdbid);
- db.engineid = 'INDEXEDDB';
- db.ixdbid = ixdbid;
- db.tables = [];
- var tblist = ixdb.objectStoreNames;
- for (var i = 0; i < tblist.length; i++) {
- db.tables[tblist[i]] = {};
- }
-
- event.target.result.close();
- if (cb) cb(1);
- };
- };
-};
-
-IDB.createTable = function(databaseid, tableid, ifnotexists, cb) {
- var indexedDB = utils.global.indexedDB;
-
- var ixdbid = alasql.databases[databaseid].ixdbid;
-
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event__) {
- var dblist = event__.target.result;
- if (!dblist.contains(ixdbid)) {
- throw new Error(
- 'IndexedDB: Cannot create table in database "' +
- ixdbid +
- '" because it does not exist'
- );
- }
- var request2 = indexedDB.open(ixdbid);
- request2.onversionchange = function(event_) {
-
- event_.target.result.close();
- };
- request2.onsuccess = function(event_) {
- var version = event_.target.result.version;
- event_.target.result.close();
-
- var request3 = indexedDB.open(ixdbid, version + 1);
- request3.onupgradeneeded = function(event) {
- var ixdb = event.target.result;
-
- var store = ixdb.createObjectStore(tableid, {autoIncrement: true});
-
- };
- request3.onsuccess = function(event) {
-
- event.target.result.close();
- if (cb) cb(1);
- };
- request3.onerror = function(event) {
- throw event;
-
- };
- request3.onblocked = function(event) {
- throw new Error(
- 'Cannot create table "' +
- tableid +
- '" because database "' +
- databaseid +
- '" is blocked'
- );
-
- };
- };
- };
-};
-
-IDB.dropTable = function(databaseid, tableid, ifexists, cb) {
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
-
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event) {
- var dblist = event.target.result;
-
- if (!dblist.contains(ixdbid)) {
- throw new Error(
- 'IndexedDB: Cannot drop table in database "' +
- ixdbid +
- '" because it does not exist'
- );
- }
-
- var request2 = indexedDB.open(ixdbid);
- request2.onversionchange = function(event) {
- event.target.result.close();
- };
-
- request2.onsuccess = function(event) {
- var version = event.target.result.version;
- event.target.result.close();
-
- var request3 = indexedDB.open(ixdbid, version + 1);
- request3.onupgradeneeded = function(event) {
- var ixdb = event.target.result;
- if (ixdb.objectStoreNames.contains(tableid)) {
- ixdb.deleteObjectStore(tableid);
- delete alasql.databases[databaseid].tables[tableid];
- } else {
- if (!ifexists) {
- throw new Error(
- 'IndexedDB: Cannot drop table "' +
- tableid +
- '" because it does not exist'
- );
- }
- }
- // var store = ixdb.createObjectStore(tableid);
-
- };
- request3.onsuccess = function(event) {
-
- event.target.result.close();
- if (cb) cb(1);
- };
- request3.onerror = function(event) {
-
- throw event;
- };
- request3.onblocked = function(event) {
- throw new Error(
- 'Cannot drop table "' +
- tableid +
- '" because database "' +
- databaseid +
- '" is blocked'
- );
-
- };
- };
- };
-};
-
-IDB.intoTable = function(databaseid, tableid, value, columns, cb) {
-
- // console.trace();
-
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
- var request1 = indexedDB.open(ixdbid);
- request1.onsuccess = function(event) {
- var ixdb = event.target.result;
- var tx = ixdb.transaction([tableid], 'readwrite');
- var tb = tx.objectStore(tableid);
-
- for (var i = 0, ilen = value.length; i < ilen; i++) {
- tb.add(value[i]);
- }
- tx.oncomplete = function() {
- ixdb.close();
-
- if (cb) cb(ilen);
- };
- };
-
-};
-
-IDB.fromTable = function(databaseid, tableid, cb, idx, query) {
-
- // console.trace();
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
- var request = indexedDB.open(ixdbid);
- request.onsuccess = function(event) {
- var res = [];
- var ixdb = event.target.result;
-
- var tx = ixdb.transaction([tableid]);
- var store = tx.objectStore(tableid);
- var cur = store.openCursor();
-
- cur.onblocked = function(event) {
-
- };
- cur.onerror = function(event) {
-
- };
- cur.onsuccess = function(event) {
-
- var cursor = event.target.result;
-
- if (cursor) {
- res.push(cursor.value);
- cursor.continue();
- } else {
-
- ixdb.close();
- if (cb) cb(res, idx, query);
- }
- };
- };
-};
-
-IDB.deleteFromTable = function(databaseid, tableid, wherefn, params, cb) {
-
- // console.trace();
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
- var request = indexedDB.open(ixdbid);
- request.onsuccess = function(event) {
- var res = [];
- var ixdb = event.target.result;
-
- var tx = ixdb.transaction([tableid], 'readwrite');
- var store = tx.objectStore(tableid);
- var cur = store.openCursor();
- var num = 0;
-
- cur.onblocked = function(event) {
-
- };
- cur.onerror = function(event) {
-
- };
- cur.onsuccess = function(event) {
-
- var cursor = event.target.result;
-
- if (cursor) {
- if (!wherefn || wherefn(cursor.value, params)) {
-
- cursor.delete();
- num++;
- }
- cursor.continue();
- } else {
-
- ixdb.close();
- if (cb) cb(num);
- }
- };
- };
-};
-
-IDB.updateTable = function(databaseid, tableid, assignfn, wherefn, params, cb) {
-
- // console.trace();
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
- var request = indexedDB.open(ixdbid);
- request.onsuccess = function(event) {
- var res = [];
- var ixdb = event.target.result;
-
- var tx = ixdb.transaction([tableid], 'readwrite');
- var store = tx.objectStore(tableid);
- var cur = store.openCursor();
- var num = 0;
-
- cur.onblocked = function(event) {
-
- };
- cur.onerror = function(event) {
-
- };
- cur.onsuccess = function(event) {
-
- var cursor = event.target.result;
-
- if (cursor) {
- if (!wherefn || wherefn(cursor.value, params)) {
-
- var r = cursor.value;
- assignfn(r, params);
-
- cursor.update(r);
- num++;
- }
- cursor.continue();
- } else {
-
- ixdb.close();
- if (cb) cb(num);
- }
- };
- };
-};
-
-//
-// 91localstorage.js
-// localStorage and DOM-Storage engine
-// Date: 09.12.2014
-// (c) Andrey Gershun
-//
-
-/* global alasql, yy, localStorage*/
-
-var LS = (alasql.engines.LOCALSTORAGE = function() {});
-
-/**
- Read data from localStorage with security breaks
- @param key {string} Address in localStorage
- @return {object} JSON object
-*/
-LS.get = function(key) {
- var s = localStorage.getItem(key);
- if (typeof s === 'undefined') return;
- var v;
- try {
- v = JSON.parse(s);
- } catch (err) {
- throw new Error('Cannot parse JSON object from localStorage' + s);
- }
- return v;
-};
-
-/**
- Store data into localStorage with security breaks
- @param key {string} Address in localStorage
- @return {object} JSON object
-*/
-LS.set = function(key, value) {
- if (typeof value === 'undefined') localStorage.removeItem(key);
- else localStorage.setItem(key, JSON.stringify(value));
-};
-
-/**
- Store table structure and data into localStorage
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param tableid {string} Table name
- @return Nothing
-*/
-LS.storeTable = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- var table = db.tables[tableid];
- // Create empty structure for table
- var tbl = {};
- tbl.columns = table.columns;
- tbl.data = table.data;
- tbl.identities = table.identities;
- // TODO: May be add indexes, objects and other fields?
- LS.set(db.lsdbid + '.' + tableid, tbl);
-};
-
-/**
- Restore table structure and data
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param tableid {string} Table name
- @return Nothing
-*/
-LS.restoreTable = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- var tbl = LS.get(db.lsdbid + '.' + tableid);
- var table = new alasql.Table();
- for (var f in tbl) {
- table[f] = tbl[f];
- }
- db.tables[tableid] = table;
- table.indexColumns();
- // We need to add other things here
- return table;
-};
-
-/**
- Remove table from localStorage
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param tableid {string} Table name
-*/
-
-LS.removeTable = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- localStorage.removeItem(db.lsdbid + '.' + tableid);
-};
-
-/**
- Create database in localStorage
- @param lsdbid {string} localStorage database id
- @param args {array} List of parameters (not used in localStorage)
- @param ifnotexists {boolean} Check if database does not exist
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param cb {function} Callback
-*/
-
-LS.createDatabase = function(lsdbid, args, ifnotexists, databaseid, cb) {
- var res = 1;
- var ls = LS.get('alasql'); // Read list of all databases
- if (!(ifnotexists && ls && ls.databases && ls.databases[lsdbid])) {
- if (!ls) ls = {databases: {}}; // Empty record
- if (ls.databases && ls.databases[lsdbid]) {
- throw new Error(
- 'localStorage: Cannot create new database "' +
- lsdbid +
- '" because it already exists'
- );
- }
- ls.databases[lsdbid] = true;
- LS.set('alasql', ls);
- LS.set(lsdbid, {databaseid: lsdbid, tables: {}}); // Create database record
- } else {
- res = 0;
- }
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Drop external database
- @param lsdbid {string} localStorage database id
- @param ifexists {boolean} Check if database exists
- @param cb {function} Callback
-*/
-LS.dropDatabase = function(lsdbid, ifexists, cb) {
- var res = 1;
- var ls = LS.get('alasql');
- if (!(ifexists && ls && ls.databases && !ls.databases[lsdbid])) {
- // 1. Remove record from 'alasql' record
- if (!ls) {
- if (!ifexists) {
- throw new Error('There is no any AlaSQL databases in localStorage');
- } else {
- return cb ? cb(0) : 0;
- }
- }
-
- if (ls.databases && !ls.databases[lsdbid]) {
- throw new Error(
- 'localStorage: Cannot drop database "' +
- lsdbid +
- '" because there is no such database'
- );
- }
- delete ls.databases[lsdbid];
- LS.set('alasql', ls);
-
- // 2. Remove tables definitions
- var db = LS.get(lsdbid);
- for (var tableid in db.tables) {
- localStorage.removeItem(lsdbid + '.' + tableid);
- }
-
- // 3. Remove database definition
- localStorage.removeItem(lsdbid);
- } else {
- res = 0;
- }
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Attach existing localStorage database to AlaSQL database
- @param lsdibid {string} localStorage database id
- @param
-*/
-
-LS.attachDatabase = function(lsdbid, databaseid, args, params, cb) {
- var res = 1;
- if (alasql.databases[databaseid]) {
- throw new Error(
- 'Unable to attach database as "' + databaseid + '" because it already exists'
- );
- }
- if (!databaseid) databaseid = lsdbid;
- var db = new alasql.Database(databaseid);
- db.engineid = 'LOCALSTORAGE';
- db.lsdbid = lsdbid;
- db.tables = LS.get(lsdbid).tables;
- // IF AUTOABORT IS OFF then copy data to memory
- if (!alasql.options.autocommit) {
- if (db.tables) {
- for (var tbid in db.tables) {
- LS.restoreTable(databaseid, tbid);
- // db.tables[tbid].data = LS.get(db.lsdbid+'.'+tbid);
- }
- }
- }
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Show list of databases from localStorage
- @param like {string} Mathing pattern
- @param cb {function} Callback
-*/
-LS.showDatabases = function(like, cb) {
- var res = [];
- var ls = LS.get('alasql');
- if (like) {
- // TODO: If we have a special function for LIKE patterns?
- var relike = new RegExp(like.value.replace(/%/g, '.*'), 'g');
- }
- if (ls && ls.databases) {
- for (var dbid in ls.databases) {
- res.push({databaseid: dbid});
- }
- if (like && res && res.length > 0) {
- res = res.filter(function(d) {
- return d.databaseid.match(relike);
- });
- }
- }
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Create table in localStorage database
- @param databaseid {string} AlaSQL database id
- @param tableid {string} Table id
- @param ifnotexists {boolean} If not exists flag
- @param cb {function} Callback
-*/
-
-LS.createTable = function(databaseid, tableid, ifnotexists, cb) {
- var res = 1;
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var tb = LS.get(lsdbid + '.' + tableid);
- // Check if such record exists
- if (tb && !ifnotexists) {
- throw new Error(
- 'Table "' + tableid + '" alsready exists in localStorage database "' + lsdbid + '"'
- );
- }
- var lsdb = LS.get(lsdbid);
- var table = alasql.databases[databaseid].tables[tableid];
-
- // TODO: Check if required
- lsdb.tables[tableid] = true;
-
- LS.set(lsdbid, lsdb);
- LS.storeTable(databaseid, tableid);
-
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Empty table and reset identities
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param tableid {string} Table name
- @param ifexists {boolean} If exists flag
- @param cb {function} Callback
- @return 1 on success
-*/
-LS.truncateTable = function(databaseid, tableid, ifexists, cb) {
- var res = 1;
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var lsdb;
- if (alasql.options.autocommit) {
- lsdb = LS.get(lsdbid);
- } else {
- lsdb = alasql.databases[databaseid];
- }
-
- if (!ifexists && !lsdb.tables[tableid]) {
- throw new Error(
- 'Cannot truncate table "' + tableid + '" in localStorage, because it does not exist'
- );
- }
-
- //load table
- var tbl = LS.restoreTable(databaseid, tableid);
-
- //clear data from table
- tbl.data = [];
- //TODO reset all identities
- //but identities are not working on LOCALSTORAGE
- //See test 607 for details
-
- //store table
- LS.storeTable(databaseid, tableid);
-
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Create table in localStorage database
- @param databaseid {string} AlaSQL database id
- @param tableid {string} Table id
- @param ifexists {boolean} If exists flag
- @param cb {function} Callback
-*/
-
-LS.dropTable = function(databaseid, tableid, ifexists, cb) {
- var res = 1;
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var lsdb;
-
- if (alasql.options.autocommit) {
- lsdb = LS.get(lsdbid);
- } else {
- lsdb = alasql.databases[databaseid];
- }
- if (!ifexists && !lsdb.tables[tableid]) {
- throw new Error(
- 'Cannot drop table "' + tableid + '" in localStorage, because it does not exist'
- );
- }
- delete lsdb.tables[tableid];
- LS.set(lsdbid, lsdb);
- // localStorage.removeItem(lsdbid+'.'+tableid);
- LS.removeTable(databaseid, tableid);
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Read all data from table
-*/
-
-LS.fromTable = function(databaseid, tableid, cb, idx, query) {
-
- var lsdbid = alasql.databases[databaseid].lsdbid;
- // var res = LS.get(lsdbid+'.'+tableid);
-
- var res = LS.restoreTable(databaseid, tableid).data;
-
- if (cb) res = cb(res, idx, query);
- return res;
-};
-
-/**
- Insert data into the table
- @param databaseid {string} Database id
- @param tableid {string} Table id
- @param value {array} Array of values
- @param columns {array} Columns (not used)
- @param cb {function} Callback
-*/
-
-LS.intoTable = function(databaseid, tableid, value, columns, cb) {
-
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var res = value.length;
- // var tb = LS.get(lsdbid+'.'+tableid);
- var tb = LS.restoreTable(databaseid, tableid);
- for (var columnid in tb.identities) {
- var ident = tb.identities[columnid];
-
- for (var index in value) {
- value[index][columnid] = ident.value;
- ident.value += ident.step;
- }
- }
- if (!tb.data) tb.data = [];
- tb.data = tb.data.concat(value);
- // LS.set(lsdbid+'.'+tableid, tb);
- LS.storeTable(databaseid, tableid);
-
- if (cb) res = cb(res);
-
- return res;
-};
-
-/**
- Laad data from table
-*/
-LS.loadTableData = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- var lsdbid = alasql.databases[databaseid].lsdbid;
- LS.restoreTable(databaseid, tableid);
- // db.tables[tableid].data = LS.get(lsdbid+'.'+tableid);
-};
-
-/**
- Save data to the table
-*/
-
-LS.saveTableData = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- var lsdbid = alasql.databases[databaseid].lsdbid;
- LS.storeTable(lsdbid, tableid);
- // LS.set(lsdbid+'.'+tableid,db.tables[tableid].data);
- db.tables[tableid].data = undefined;
-};
-
-/**
- Commit
-*/
-
-LS.commit = function(databaseid, cb) {
-
- var db = alasql.databases[databaseid];
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var lsdb = {databaseid: lsdbid, tables: {}};
- if (db.tables) {
- for (var tbid in db.tables) {
- // TODO: Question - do we need this line
- lsdb.tables[tbid] = true;
- LS.storeTable(databaseid, tbid);
- // LS.set(lsdbid+'.'+tbid, db.tables[tbid].data);
- }
- }
- LS.set(lsdbid, lsdb);
- return cb ? cb(1) : 1;
-};
-
-/**
- Alias BEGIN = COMMIT
-*/
-LS.begin = LS.commit;
-
-/**
- ROLLBACK
-*/
-
-LS.rollback = function(databaseid, cb) {
- // This does not work and should be fixed
- // Plus test 151 and 231
-
- return;
-
- var db = alasql.databases[databaseid];
- db.dbversion++;
-
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var lsdb = LS.get(lsdbid);
- // if(!alasql.options.autocommit) {
-
- delete alasql.databases[databaseid];
- alasql.databases[databaseid] = new alasql.Database(databaseid);
- extend(alasql.databases[databaseid], lsdb);
- alasql.databases[databaseid].databaseid = databaseid;
- alasql.databases[databaseid].engineid = 'LOCALSTORAGE';
-
- if (lsdb.tables) {
- for (var tbid in lsdb.tables) {
- // var tb = new alasql.Table({columns: db.tables[tbid].columns});
- // extend(tb,lsdb.tables[tbid]);
- // lsdb.tables[tbid] = true;
-
- // if(!alasql.options.autocommit) {
-
- // lsdb.tables[tbid].data = LS.get(db.lsdbid+'.'+tbid);
- LS.restoreTable(databaseid, tbid);
- // }
- // lsdb.tables[tbid].indexColumns();
-
- // index columns
- // convert types
- }
- }
- // }
-
-};
-
-//
-// 91websql.js
-// WebSQL database support
-// (c) 2014, Andrey Gershun
-//
-
-var SQLITE = (alasql.engines.SQLITE = function() {});
-
-SQLITE.createDatabase = function(wdbid, args, ifnotexists, dbid, cb) {
- throw new Error('Connot create SQLITE database in memory. Attach it.');
-};
-
-SQLITE.dropDatabase = function(databaseid) {
- throw new Error('This is impossible to drop SQLite database. Detach it.');
-};
-
-SQLITE.attachDatabase = function(sqldbid, dbid, args, params, cb) {
- var res = 1;
- if (alasql.databases[dbid]) {
- throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
- }
-
- if ((args[0] && args[0] instanceof yy.StringValue) || args[0] instanceof yy.ParamValue) {
- if (args[0] instanceof yy.StringValue) {
- var value = args[0].value;
- } else if (args[0] instanceof yy.ParamValue) {
- var value = params[args[0].param];
- }
- alasql.utils.loadBinaryFile(
- value,
- true,
- function(data) {
- var db = new alasql.Database(dbid || sqldbid);
- db.engineid = 'SQLITE';
- db.sqldbid = sqldbid;
- var sqldb = (db.sqldb = new SQL.Database(data));
- db.tables = [];
- var tables = sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;
-
- tables.forEach(function(tbl) {
- db.tables[tbl[1]] = {};
- var columns = (db.tables[tbl[1]].columns = []);
- var ast = alasql.parse(tbl[4]);
-
- var coldefs = ast.statements[0].columns;
- if (coldefs && coldefs.length > 0) {
- coldefs.forEach(function(cd) {
- columns.push(cd);
- });
- }
- });
-
- cb(1);
- },
- function(err) {
- throw new Error('Cannot open SQLite database file "' + args[0].value + '"');
- }
- );
- return res;
- } else {
- throw new Error('Cannot attach SQLite database without a file');
- }
-
- return res;
-};
-
-SQLITE.fromTable = function(databaseid, tableid, cb, idx, query) {
- var data = alasql.databases[databaseid].sqldb.exec('SELECT * FROM ' + tableid);
- var columns = (query.sources[idx].columns = []);
- if (data[0].columns.length > 0) {
- data[0].columns.forEach(function(columnid) {
- columns.push({columnid: columnid});
- });
- }
-
- var res = [];
- if (data[0].values.length > 0) {
- data[0].values.forEach(function(d) {
- var r = {};
- columns.forEach(function(col, idx) {
- r[col.columnid] = d[idx];
- });
- res.push(r);
- });
- }
- if (cb) cb(res, idx, query);
-};
-
-SQLITE.intoTable = function(databaseid, tableid, value, columns, cb) {
- var sqldb = alasql.databases[databaseid].sqldb;
- for (var i = 0, ilen = value.length; i < ilen; i++) {
- var s = 'INSERT INTO ' + tableid + ' (';
- var d = value[i];
- var keys = Object.keys(d);
- s += keys.join(',');
- s += ') VALUES (';
- s += keys
- .map(function(k) {
- v = d[k];
- if (typeof v == 'string') v = "'" + v + "'";
- return v;
- })
- .join(',');
- s += ')';
- sqldb.exec(s);
- }
- var res = ilen;
- if (cb) cb(res);
- return res;
-};
-
-//
-// 91localstorage.js
-// localStorage and DOM-Storage engine
-// Date: 09.12.2014
-// (c) Andrey Gershun
-//
-
-var FS = (alasql.engines.FILESTORAGE = alasql.engines.FILE = function() {});
-
-FS.createDatabase = function(fsdbid, args, ifnotexists, dbid, cb) {
-
- var res = 1;
- var filename = args[0].value;
-
- alasql.utils.fileExists(filename, function(fex) {
-
- if (fex) {
- if (ifnotexists) {
- res = 0;
- if (cb) res = cb(res);
- return res;
- } else {
- throw new Error('Cannot create new database file, because it already exists');
- }
- } else {
- var data = {tables: {}};
- alasql.utils.saveFile(filename, JSON.stringify(data), function(data) {
- if (cb) res = cb(res);
- });
- }
- });
- return res;
-};
-
-FS.dropDatabase = function(fsdbid, ifexists, cb) {
- var res;
- var filename = fsdbid.value;
-
- alasql.utils.fileExists(filename, function(fex) {
- if (fex) {
- res = 1;
- alasql.utils.deleteFile(filename, function() {
- res = 1;
- if (cb) res = cb(res);
- });
- } else {
- if (!ifexists) {
- throw new Error('Cannot drop database file, because it does not exist');
- }
- res = 0;
- if (cb) res = cb(res);
- }
- });
- return res;
-};
-
-FS.attachDatabase = function(fsdbid, dbid, args, params, cb) {
-
- var res = 1;
- if (alasql.databases[dbid]) {
- throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
- }
- var db = new alasql.Database(dbid || fsdbid);
- db.engineid = 'FILESTORAGE';
- // db.fsdbid = fsdbid;
- db.filename = args[0].value;
- loadFile(db.filename, !!cb, function(s) {
- try {
- db.data = JSON.parse(s);
- } catch (err) {
- throw new Error('Data in FileStorage database are corrupted');
- }
- db.tables = db.data.tables;
- // IF AUTOCOMMIT IS OFF then copy data to memory
- if (!alasql.options.autocommit) {
- if (db.tables) {
- for (var tbid in db.tables) {
- db.tables[tbid].data = db.data[tbid];
- }
- }
- }
- if (cb) res = cb(res);
- });
- return res;
-};
-
-FS.createTable = function(databaseid, tableid, ifnotexists, cb) {
- var db = alasql.databases[databaseid];
- var tb = db.data[tableid];
- var res = 1;
-
- if (tb && !ifnotexists) {
- throw new Error('Table "' + tableid + '" alsready exists in the database "' + fsdbid + '"');
- }
- var table = alasql.databases[databaseid].tables[tableid];
- db.data.tables[tableid] = {columns: table.columns};
- db.data[tableid] = [];
-
- FS.updateFile(databaseid);
-
- if (cb) cb(res);
- return res;
-};
-
-FS.updateFile = function(databaseid) {
-
- var db = alasql.databases[databaseid];
- if (db.issaving) {
- db.postsave = true;
- return;
- }
- db.issaving = true;
- db.postsave = false;
- alasql.utils.saveFile(db.filename, JSON.stringify(db.data), function() {
- db.issaving = false;
-
- if (db.postsave) {
- setTimeout(function() {
- FS.updateFile(databaseid);
- }, 50); // TODO Test with different timeout parameters
- }
- });
-};
-
-FS.dropTable = function(databaseid, tableid, ifexists, cb) {
- var res = 1;
- var db = alasql.databases[databaseid];
- if (!ifexists && !db.tables[tableid]) {
- throw new Error(
- 'Cannot drop table "' + tableid + '" in fileStorage, because it does not exist'
- );
- }
- delete db.tables[tableid];
- delete db.data.tables[tableid];
- delete db.data[tableid];
- FS.updateFile(databaseid);
- if (cb) cb(res);
- return res;
-};
-
-FS.fromTable = function(databaseid, tableid, cb, idx, query) {
-
- var db = alasql.databases[databaseid];
- var res = db.data[tableid];
- if (cb) res = cb(res, idx, query);
- return res;
-};
-
-FS.intoTable = function(databaseid, tableid, value, columns, cb) {
- var db = alasql.databases[databaseid];
- var res = value.length;
- var tb = db.data[tableid];
- if (!tb) tb = [];
- db.data[tableid] = tb.concat(value);
- FS.updateFile(databaseid);
- if (cb) cb(res);
- return res;
-};
-
-FS.loadTableData = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- db.tables[tableid].data = db.data[tableid];
-};
-
-FS.saveTableData = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- db.data[tableid] = db.tables[tableid].data;
- db.tables[tableid].data = null;
- FS.updateFile(databaseid);
-};
-
-FS.commit = function(databaseid, cb) {
-
- var db = alasql.databases[databaseid];
- var fsdb = {tables: {}};
- if (db.tables) {
- for (var tbid in db.tables) {
- db.data.tables[tbid] = {columns: db.tables[tbid].columns};
- db.data[tbid] = db.tables[tbid].data;
- }
- }
- FS.updateFile(databaseid);
- return cb ? cb(1) : 1;
-};
-
-FS.begin = FS.commit;
-
-FS.rollback = function(databaseid, cb) {
- var res = 1;
- var db = alasql.databases[databaseid];
- db.dbversion++;
-
- // var lsdbid = alasql.databases[databaseid].lsdbid;
- // lsdb = LS.get(lsdbid);
- wait();
- function wait() {
- setTimeout(function() {
- if (db.issaving) {
- return wait();
- } else {
- alasql.loadFile(db.filename, !!cb, function(data) {
- db.data = data;
- db.tables = {};
- for (var tbid in db.data.tables) {
- var tb = new alasql.Table({columns: db.data.tables[tbid].columns});
- extend(tb, db.data.tables[tbid]);
- db.tables[tbid] = tb;
- if (!alasql.options.autocommit) {
- db.tables[tbid].data = db.data[tbid];
- }
- db.tables[tbid].indexColumns();
-
- // index columns
- // convert types
- }
-
- delete alasql.databases[databaseid];
- alasql.databases[databaseid] = new alasql.Database(databaseid);
- extend(alasql.databases[databaseid], db);
- alasql.databases[databaseid].engineid = 'FILESTORAGE';
- alasql.databases[databaseid].filename = db.filename;
-
- if (cb) res = cb(res);
- // Todo: check why no return
- });
- }
- }, 100);
- }
-
- // if(!alasql.options.autocommit) {
-
-};
-
-if(utils.isBrowser && !utils.isWebWorker) {
-
-alasql = alasql || false;
-
-if (!alasql) {
- throw new Error('alasql was not found');
-}
+ if (typeof path === 'undefined') {
+ var sc = document.getElementsByTagName('script');
+ for (var i = 0; i < sc.length; i++) {
+ if (sc[i].src.substr(-16).toLowerCase() === 'alasql-worker.js') {
+ path = sc[i].src.substr(0, sc[i].src.length - 16) + 'alasql.js';
+ break;
+ } else if (sc[i].src.substr(-20).toLowerCase() === 'alasql-worker.min.js') {
+ path = sc[i].src.substr(0, sc[i].src.length - 20) + 'alasql.min.js';
+ break;
+ } else if (sc[i].src.substr(-9).toLowerCase() === 'alasql.js') {
+ path = sc[i].src;
+ break;
+ } else if (sc[i].src.substr(-13).toLowerCase() === 'alasql.min.js') {
+ path = sc[i].src.substr(0, sc[i].src.length - 13) + 'alasql.min.js';
+ break;
+ }
+ }
+ }
-alasql.worker = function() {
- throw new Error('Can find webworker in this enviroment');
-};
-
-if (typeof Worker !== 'undefined') {
- alasql.worker = function(path, paths, cb) {
- // var path;
- if (path === true) {
- path = undefined;
- }
-
- if (typeof path === 'undefined') {
- var sc = document.getElementsByTagName('script');
- for (var i = 0; i < sc.length; i++) {
- if (sc[i].src.substr(-16).toLowerCase() === 'alasql-worker.js') {
- path = sc[i].src.substr(0, sc[i].src.length - 16) + 'alasql.js';
- break;
- } else if (sc[i].src.substr(-20).toLowerCase() === 'alasql-worker.min.js') {
- path = sc[i].src.substr(0, sc[i].src.length - 20) + 'alasql.min.js';
- break;
- } else if (sc[i].src.substr(-9).toLowerCase() === 'alasql.js') {
- path = sc[i].src;
- break;
- } else if (sc[i].src.substr(-13).toLowerCase() === 'alasql.min.js') {
- path = sc[i].src.substr(0, sc[i].src.length - 13) + 'alasql.min.js';
- break;
- }
- }
- }
-
- if (typeof path === 'undefined') {
- throw new Error('Path to alasql.js is not specified');
- } else if (path !== false) {
- var js = "importScripts('";
- js += path;
- js +=
- "');self.onmessage = function(event) {" +
- 'alasql(event.data.sql,event.data.params, function(data){' +
- 'postMessage({id:event.data.id, data:data});});}';
-
- var blob = new Blob([js], {type: 'text/plain'});
- alasql.webworker = new Worker(URL.createObjectURL(blob));
-
- alasql.webworker.onmessage = function(event) {
- var id = event.data.id;
-
- alasql.buffer[id](event.data.data);
- delete alasql.buffer[id];
- };
-
- alasql.webworker.onerror = function(e) {
- throw e;
- };
-
- if (arguments.length > 1) {
- var sql =
- 'REQUIRE ' +
- paths
- .map(function(p) {
- return '"' + p + '"';
- })
- .join(',');
- alasql(sql, [], cb);
- }
- } else if (path === false) {
- delete alasql.webworker;
- return;
- }
- };
-}
+ if (typeof path === 'undefined') {
+ throw new Error('Path to alasql.js is not specified');
+ } else if (path !== false) {
+ var js = "importScripts('";
+ js += path;
+ js +=
+ "');self.onmessage = function(event) {" +
+ 'alasql(event.data.sql,event.data.params, function(data){' +
+ 'postMessage({id:event.data.id, data:data});});}';
+
+ var blob = new Blob([js], {type: 'text/plain'});
+ alasql.webworker = new Worker(URL.createObjectURL(blob));
+
+ alasql.webworker.onmessage = function(event) {
+ var id = event.data.id;
+
+ alasql.buffer[id](event.data.data);
+ delete alasql.buffer[id];
+ };
-/* FileSaver.js
- * A saveAs() FileSaver implementation.
- * 1.3.2
- * 2016-06-16 18:25:19
- *
- * By Eli Grey, http://eligrey.com
- * License: MIT
- * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
- */
-
-/*global self */
-/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
-
-/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
-
-var saveAs =
- saveAs ||
- (function(view) {
- 'use strict';
- // IE <10 is explicitly unsupported
- if (
- typeof view === 'undefined' ||
- (typeof navigator !== 'undefined' && /MSIE [1-9]\./.test(navigator.userAgent))
- ) {
- return;
- }
- var doc = view.document,
- // only get URL when necessary in case Blob.js hasn't overridden it yet
- get_URL = function() {
- return view.URL || view.webkitURL || view;
- },
- save_link = doc.createElementNS('http://www.w3.org/1999/xhtml', 'a'),
- can_use_save_link = 'download' in save_link,
- click = function(node) {
- var event = new MouseEvent('click');
- node.dispatchEvent(event);
- },
- is_safari = /constructor/i.test(view.HTMLElement) || view.safari,
- is_chrome_ios = /CriOS\/[\d]+/.test(navigator.userAgent),
- throw_outside = function(ex) {
- (view.setImmediate || view.setTimeout)(function() {
- throw ex;
- }, 0);
- },
- force_saveable_type = 'application/octet-stream',
- // the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
- arbitrary_revoke_timeout = 1000 * 40, // in ms
- revoke = function(file) {
- var revoker = function() {
- if (typeof file === 'string') {
- // file is an object URL
- get_URL().revokeObjectURL(file);
- } else {
- // file is a File
- file.remove();
- }
- };
- setTimeout(revoker, arbitrary_revoke_timeout);
- },
- dispatch = function(filesaver, event_types, event) {
- event_types = [].concat(event_types);
- var i = event_types.length;
- while (i--) {
- var listener = filesaver['on' + event_types[i]];
- if (typeof listener === 'function') {
- try {
- listener.call(filesaver, event || filesaver);
- } catch (ex) {
- throw_outside(ex);
- }
- }
- }
- },
- auto_bom = function(blob) {
- // prepend BOM for UTF-8 XML and text/* types (including HTML)
- // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
- if (
- /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(
- blob.type
- )
- ) {
- return new Blob([String.fromCharCode(0xfeff), blob], {type: blob.type});
- }
- return blob;
- },
- FileSaver = function(blob, name, no_auto_bom) {
- if (!no_auto_bom) {
- blob = auto_bom(blob);
- }
- // First try a.download, then web filesystem, then object URLs
- var filesaver = this,
- type = blob.type,
- force = type === force_saveable_type,
- object_url,
- dispatch_all = function() {
- dispatch(filesaver, 'writestart progress write writeend'.split(' '));
- },
- // on any filesys errors revert to saving with object URLs
- fs_error = function() {
- if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
- // Safari doesn't allow downloading of blob urls
- var reader = new FileReader();
- reader.onloadend = function() {
- var url = is_chrome_ios
- ? reader.result
- : reader.result.replace(
- /^data:[^;]*;/,
- 'data:attachment/file;'
- );
- var popup = view.open(url, '_blank');
- if (!popup) view.location.href = url;
- url = undefined; // release reference before dispatching
- filesaver.readyState = filesaver.DONE;
- dispatch_all();
- };
- reader.readAsDataURL(blob);
- filesaver.readyState = filesaver.INIT;
- return;
- }
- // don't create more object URLs than needed
- if (!object_url) {
- object_url = get_URL().createObjectURL(blob);
- }
- if (force) {
- view.location.href = object_url;
- } else {
- var opened = view.open(object_url, '_blank');
- if (!opened) {
- // Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
- view.location.href = object_url;
- }
- }
- filesaver.readyState = filesaver.DONE;
- dispatch_all();
- revoke(object_url);
- };
- filesaver.readyState = filesaver.INIT;
-
- if (can_use_save_link) {
- object_url = get_URL().createObjectURL(blob);
- setTimeout(function() {
- save_link.href = object_url;
- save_link.download = name;
- click(save_link);
- dispatch_all();
- revoke(object_url);
- filesaver.readyState = filesaver.DONE;
- });
- return;
- }
-
- fs_error();
- },
- FS_proto = FileSaver.prototype,
- saveAs = function(blob, name, no_auto_bom) {
- return new FileSaver(blob, name || blob.name || 'download', no_auto_bom);
- };
- // IE 10+ (native saveAs)
- if (typeof navigator !== 'undefined' && navigator.msSaveOrOpenBlob) {
- return function(blob, name, no_auto_bom) {
- name = name || blob.name || 'download';
-
- if (!no_auto_bom) {
- blob = auto_bom(blob);
- }
- return navigator.msSaveOrOpenBlob(blob, name);
- };
- }
-
- FS_proto.abort = function() {};
- FS_proto.readyState = FS_proto.INIT = 0;
- FS_proto.WRITING = 1;
- FS_proto.DONE = 2;
-
- FS_proto.error = FS_proto.onwritestart = FS_proto.onprogress = FS_proto.onwrite = FS_proto.onabort = FS_proto.onerror = FS_proto.onwriteend = null;
-
- return saveAs;
- })(
- (typeof self !== 'undefined' && self) ||
- (typeof window !== 'undefined' && window) ||
- this.content
- );
-// `self` is undefined in Firefox for Android content script context
-// while `this` is nsIContentFrameMessageManager
-// with an attribute `content` that corresponds to the window
-
-if (typeof module !== 'undefined' && module.exports) {
- module.exports.saveAs = saveAs;
-} else if (typeof define !== 'undefined' && define !== null && define.amd !== null) {
- define('FileSaver.js', function() {
- return saveAs;
- });
-}
+ alasql.webworker.onerror = function(e) {
+ throw e;
+ };
+
+ if (arguments.length > 1) {
+ var sql =
+ 'REQUIRE ' +
+ paths
+ .map(function(p) {
+ return '"' + p + '"';
+ })
+ .join(',');
+ alasql(sql, [], cb);
+ }
+ } else if (path === false) {
+ delete alasql.webworker;
+ return;
+ }
+ };
+}
+
+/* FileSaver.js
+ * A saveAs() FileSaver implementation.
+ * 1.3.2
+ * 2016-06-16 18:25:19
+ *
+ * By Eli Grey, http://eligrey.com
+ * License: MIT
+ * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
+ */
+
+/*global self */
+/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
+
+/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
+
+var saveAs =
+ saveAs ||
+ (function(view) {
+ 'use strict';
+ // IE <10 is explicitly unsupported
+ if (
+ typeof view === 'undefined' ||
+ (typeof navigator !== 'undefined' && /MSIE [1-9]\./.test(navigator.userAgent))
+ ) {
+ return;
+ }
+ var doc = view.document,
+ // only get URL when necessary in case Blob.js hasn't overridden it yet
+ get_URL = function() {
+ return view.URL || view.webkitURL || view;
+ },
+ save_link = doc.createElementNS('http://www.w3.org/1999/xhtml', 'a'),
+ can_use_save_link = 'download' in save_link,
+ click = function(node) {
+ var event = new MouseEvent('click');
+ node.dispatchEvent(event);
+ },
+ is_safari = /constructor/i.test(view.HTMLElement) || view.safari,
+ is_chrome_ios = /CriOS\/[\d]+/.test(navigator.userAgent),
+ throw_outside = function(ex) {
+ (view.setImmediate || view.setTimeout)(function() {
+ throw ex;
+ }, 0);
+ },
+ force_saveable_type = 'application/octet-stream',
+ // the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
+ arbitrary_revoke_timeout = 1000 * 40, // in ms
+ revoke = function(file) {
+ var revoker = function() {
+ if (typeof file === 'string') {
+ // file is an object URL
+ get_URL().revokeObjectURL(file);
+ } else {
+ // file is a File
+ file.remove();
+ }
+ };
+ setTimeout(revoker, arbitrary_revoke_timeout);
+ },
+ dispatch = function(filesaver, event_types, event) {
+ event_types = [].concat(event_types);
+ var i = event_types.length;
+ while (i--) {
+ var listener = filesaver['on' + event_types[i]];
+ if (typeof listener === 'function') {
+ try {
+ listener.call(filesaver, event || filesaver);
+ } catch (ex) {
+ throw_outside(ex);
+ }
+ }
+ }
+ },
+ auto_bom = function(blob) {
+ // prepend BOM for UTF-8 XML and text/* types (including HTML)
+ // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
+ if (
+ /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(
+ blob.type
+ )
+ ) {
+ return new Blob([String.fromCharCode(0xfeff), blob], {type: blob.type});
+ }
+ return blob;
+ },
+ FileSaver = function(blob, name, no_auto_bom) {
+ if (!no_auto_bom) {
+ blob = auto_bom(blob);
+ }
+ // First try a.download, then web filesystem, then object URLs
+ var filesaver = this,
+ type = blob.type,
+ force = type === force_saveable_type,
+ object_url,
+ dispatch_all = function() {
+ dispatch(filesaver, 'writestart progress write writeend'.split(' '));
+ },
+ // on any filesys errors revert to saving with object URLs
+ fs_error = function() {
+ if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
+ // Safari doesn't allow downloading of blob urls
+ var reader = new FileReader();
+ reader.onloadend = function() {
+ var url = is_chrome_ios
+ ? reader.result
+ : reader.result.replace(
+ /^data:[^;]*;/,
+ 'data:attachment/file;'
+ );
+ var popup = view.open(url, '_blank');
+ if (!popup) view.location.href = url;
+ url = undefined; // release reference before dispatching
+ filesaver.readyState = filesaver.DONE;
+ dispatch_all();
+ };
+ reader.readAsDataURL(blob);
+ filesaver.readyState = filesaver.INIT;
+ return;
+ }
+ // don't create more object URLs than needed
+ if (!object_url) {
+ object_url = get_URL().createObjectURL(blob);
+ }
+ if (force) {
+ view.location.href = object_url;
+ } else {
+ var opened = view.open(object_url, '_blank');
+ if (!opened) {
+ // Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
+ view.location.href = object_url;
+ }
+ }
+ filesaver.readyState = filesaver.DONE;
+ dispatch_all();
+ revoke(object_url);
+ };
+ filesaver.readyState = filesaver.INIT;
+
+ if (can_use_save_link) {
+ object_url = get_URL().createObjectURL(blob);
+ setTimeout(function() {
+ save_link.href = object_url;
+ save_link.download = name;
+ click(save_link);
+ dispatch_all();
+ revoke(object_url);
+ filesaver.readyState = filesaver.DONE;
+ });
+ return;
+ }
+
+ fs_error();
+ },
+ FS_proto = FileSaver.prototype,
+ saveAs = function(blob, name, no_auto_bom) {
+ return new FileSaver(blob, name || blob.name || 'download', no_auto_bom);
+ };
+ // IE 10+ (native saveAs)
+ if (typeof navigator !== 'undefined' && navigator.msSaveOrOpenBlob) {
+ return function(blob, name, no_auto_bom) {
+ name = name || blob.name || 'download';
+
+ if (!no_auto_bom) {
+ blob = auto_bom(blob);
+ }
+ return navigator.msSaveOrOpenBlob(blob, name);
+ };
+ }
+
+ FS_proto.abort = function() {};
+ FS_proto.readyState = FS_proto.INIT = 0;
+ FS_proto.WRITING = 1;
+ FS_proto.DONE = 2;
+
+ FS_proto.error = FS_proto.onwritestart = FS_proto.onprogress = FS_proto.onwrite = FS_proto.onabort = FS_proto.onerror = FS_proto.onwriteend = null;
+
+ return saveAs;
+ })(
+ (typeof self !== 'undefined' && self) ||
+ (typeof window !== 'undefined' && window) ||
+ this.content
+ );
+// `self` is undefined in Firefox for Android content script context
+// while `this` is nsIContentFrameMessageManager
+// with an attribute `content` that corresponds to the window
+
+if (typeof module !== 'undefined' && module.exports) {
+ module.exports.saveAs = saveAs;
+} else if (typeof define !== 'undefined' && define !== null && define.amd !== null) {
+ define('FileSaver.js', function() {
+ return saveAs;
+ });
+}
/* eslint-disable */
diff --git a/dist/alasql.js b/dist/alasql.js
index 2b8a918382..5a84f2bedf 100755
--- a/dist/alasql.js
+++ b/dist/alasql.js
@@ -1,19771 +1,19771 @@
-//! AlaSQL v0.4.11-develop-af510181undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
-/*
-@module alasql
-@version 0.4.11-develop-af510181undefined
-
-AlaSQL - JavaScript SQL database
-© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
-
-@license
-The MIT License (MIT)
-
-Copyright 2014-2016 Andrey Gershun (agershun@gmail.com) & Mathias Rangel Wulff (m@rawu.dk)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-/* eslint-disable */
-
-"use strict";
-
-/**
- @fileoverview AlaSQL JavaScript SQL library
- @see http://github.com/agershun/alasql
-*/
-
-/**
- Callback from statement
- @callback statement-callback
- @param {object} data Result data
-*/
-
-/**
- UMD envelope for AlaSQL
-*/
-
-(function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- define([], factory);
- } else if (typeof exports === 'object') {
- /** alasql main function */
- module.exports = factory();
- } else {
- root.alasql = factory();
- }
-}(this, function () {
-
-/**
- AlaSQL - Main Alasql class
- @function
- @param {string|function|object} sql - SQL-statement or data object for fuent interface
- @param {object} params - SQL parameters
- @param {function} cb - callback function
- @param {object} scope - Scope for nested queries
- @return {any} - Result data object
-
- @example
- Standard sync call:
- alasql('CREATE TABLE one');
- Query:
- var res = alasql('SELECT * FROM one');
- Call with parameters:
- var res = alasql('SELECT * FROM ?',[data]);
- Standard async call with callback function:
- alasql('SELECT * FROM ?',[data],function(res){
- console.log(data);
- });
- Call with scope for subquery (to pass common values):
- var scope = {one:{a:2,b;20}}
- alasql('SELECT * FROM ? two WHERE two.a = one.a',[data],null,scope);
- Call for fluent interface with data object:
- alasql(data).Where(function(x){return x.a == 10}).exec();
- Call for fluent interface without data object:
- alasql().From(data).Where(function(x){return x.a == 10}).exec();
- */
-
-var alasql = function(sql, params, cb, scope) {
-
- params = params||[];
-
- if(typeof importScripts !== 'function' && alasql.webworker) {
- var id = alasql.lastid++;
- alasql.buffer[id] = cb;
- alasql.webworker.postMessage({id:id,sql:sql,params:params});
- return;
- }
-
- if(arguments.length === 0) {
- // Without arguments - Fluent interface
- return new yy.Select({
- columns:[new yy.Column({columnid:'*'})],
- from: [new yy.ParamValue({param:0})]
- });
- } else if(arguments.length === 1){
- // Access promise notation without using `.promise(...)`
- if(sql.constructor === Array){
- return alasql.promise(sql);
- }
- }
- // Avoid setting params if not needed even with callback
- if(typeof params === 'function'){
- scope = cb;
- cb = params;
- params = [];
- }
-
- if(typeof params !== 'object'){
- params = [params];
- }
-
- // Standard interface
- // alasql('#sql');
- if(typeof sql === 'string' && sql[0]==='#' && typeof document === "object") {
- sql = document.querySelector(sql).textContent;
- } else if(typeof sql === 'object' && sql instanceof HTMLElement) {
- sql = sql.textContent;
- } else if(typeof sql === 'function') {
- // to run multiline functions
- sql = sql.toString();
- sql = (/\/\*([\S\s]+)\*\//m.exec(sql) || ['','Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function.'])[1];
- }
- // Run SQL
- return alasql.exec(sql, params, cb, scope);
-};
-
-/**
- Current version of alasql
- @constant {string}
-*/
-alasql.version = '0.4.11-develop-af510181undefined';
-
-/**
- Debug flag
- @type {boolean}
-*/
-alasql.debug = undefined; // Initial debug variable
-
-//*only-for-browser/*
-var require = function(){return null}; // as alasqlparser.js is generated, we can not "remove" referenses to
-var __dirname = '';
-//*/
-
-/* parser generated by jison 0.4.18 */
-/*
- Returns a Parser object of the following structure:
-
- Parser: {
- yy: {}
- }
-
- Parser.prototype: {
- yy: {},
- trace: function(),
- symbols_: {associative list: name ==> number},
- terminals_: {associative list: number ==> name},
- productions_: [...],
- performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
- table: [...],
- defaultActions: {...},
- parseError: function(str, hash),
- parse: function(input),
-
- lexer: {
- EOF: 1,
- parseError: function(str, hash),
- setInput: function(input),
- input: function(),
- unput: function(str),
- more: function(),
- less: function(n),
- pastInput: function(),
- upcomingInput: function(),
- showPosition: function(),
- test_match: function(regex_match_array, rule_index),
- next: function(),
- lex: function(),
- begin: function(condition),
- popState: function(),
- _currentRules: function(),
- topState: function(),
- pushState: function(condition),
-
- options: {
- ranges: boolean (optional: true ==> token location info will include a .range[] member)
- flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
- backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
- },
-
- performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
- rules: [...],
- conditions: {associative list: name ==> set},
- }
- }
-
- token location info (@$, _$, etc.): {
- first_line: n,
- last_line: n,
- first_column: n,
- last_column: n,
- range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
- }
-
- the parseError function receives a 'hash' object with these members for lexer and parser errors: {
- text: (matched text)
- token: (the produced terminal token, if any)
- line: (yylineno)
- }
- while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
- loc: (yylloc)
- expected: (string describing the set of expected tokens)
- recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
- }
-*/
-var alasqlparser = (function(){
-var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,13],$V1=[1,104],$V2=[1,102],$V3=[1,103],$V4=[1,6],$V5=[1,42],$V6=[1,79],$V7=[1,76],$V8=[1,94],$V9=[1,93],$Va=[1,69],$Vb=[1,101],$Vc=[1,85],$Vd=[1,64],$Ve=[1,71],$Vf=[1,84],$Vg=[1,66],$Vh=[1,70],$Vi=[1,68],$Vj=[1,61],$Vk=[1,74],$Vl=[1,62],$Vm=[1,67],$Vn=[1,83],$Vo=[1,77],$Vp=[1,86],$Vq=[1,87],$Vr=[1,81],$Vs=[1,82],$Vt=[1,80],$Vu=[1,88],$Vv=[1,89],$Vw=[1,90],$Vx=[1,91],$Vy=[1,92],$Vz=[1,98],$VA=[1,65],$VB=[1,78],$VC=[1,72],$VD=[1,96],$VE=[1,97],$VF=[1,63],$VG=[1,73],$VH=[1,108],$VI=[1,107],$VJ=[10,306,602,764],$VK=[10,306,310,602,764],$VL=[1,115],$VM=[1,116],$VN=[1,117],$VO=[1,118],$VP=[1,119],$VQ=[130,353,410],$VR=[1,127],$VS=[1,126],$VT=[1,134],$VU=[1,164],$VV=[1,175],$VW=[1,178],$VX=[1,173],$VY=[1,181],$VZ=[1,185],$V_=[1,160],$V$=[1,182],$V01=[1,169],$V11=[1,171],$V21=[1,174],$V31=[1,183],$V41=[1,166],$V51=[1,193],$V61=[1,188],$V71=[1,189],$V81=[1,194],$V91=[1,195],$Va1=[1,196],$Vb1=[1,197],$Vc1=[1,198],$Vd1=[1,199],$Ve1=[1,200],$Vf1=[1,201],$Vg1=[1,202],$Vh1=[1,176],$Vi1=[1,177],$Vj1=[1,179],$Vk1=[1,180],$Vl1=[1,186],$Vm1=[1,192],$Vn1=[1,184],$Vo1=[1,187],$Vp1=[1,172],$Vq1=[1,170],$Vr1=[1,191],$Vs1=[1,203],$Vt1=[2,4,5],$Vu1=[2,471],$Vv1=[1,206],$Vw1=[1,211],$Vx1=[1,220],$Vy1=[1,216],$Vz1=[10,72,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VA1=[2,4,5,10,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],$VB1=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VC1=[1,249],$VD1=[1,256],$VE1=[1,265],$VF1=[1,270],$VG1=[1,269],$VH1=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,168,169,179,180,181,183,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],$VI1=[2,162],$VJ1=[1,281],$VK1=[10,74,78,306,310,505,602,764],$VL1=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,193,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,302,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,344,356,368,369,370,373,374,386,389,396,400,401,402,403,404,405,406,408,409,417,418,420,424,426,433,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,514,515,516,517,602,764],$VM1=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VN1=[1,562],$VO1=[1,564],$VP1=[2,503],$VQ1=[1,569],$VR1=[1,580],$VS1=[1,583],$VT1=[1,584],$VU1=[10,78,89,132,137,146,189,296,306,310,470,602,764],$VV1=[10,74,306,310,602,764],$VW1=[2,567],$VX1=[1,602],$VY1=[2,4,5,156],$VZ1=[1,640],$V_1=[1,612],$V$1=[1,646],$V02=[1,647],$V12=[1,620],$V22=[1,631],$V32=[1,618],$V42=[1,626],$V52=[1,619],$V62=[1,627],$V72=[1,629],$V82=[1,621],$V92=[1,622],$Va2=[1,641],$Vb2=[1,638],$Vc2=[1,639],$Vd2=[1,615],$Ve2=[1,617],$Vf2=[1,609],$Vg2=[1,610],$Vh2=[1,611],$Vi2=[1,613],$Vj2=[1,614],$Vk2=[1,616],$Vl2=[1,623],$Vm2=[1,624],$Vn2=[1,628],$Vo2=[1,630],$Vp2=[1,632],$Vq2=[1,633],$Vr2=[1,634],$Vs2=[1,635],$Vt2=[1,636],$Vu2=[1,642],$Vv2=[1,643],$Vw2=[1,644],$Vx2=[1,645],$Vy2=[2,287],$Vz2=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VA2=[2,359],$VB2=[1,668],$VC2=[1,678],$VD2=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VE2=[1,694],$VF2=[1,703],$VG2=[1,702],$VH2=[2,4,5,10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VI2=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VJ2=[2,202],$VK2=[1,725],$VL2=[10,72,78,93,98,118,128,162,168,169,183,232,245,247,306,310,602,764],$VM2=[2,163],$VN2=[1,728],$VO2=[2,4,5,112],$VP2=[1,741],$VQ2=[1,760],$VR2=[1,740],$VS2=[1,739],$VT2=[1,734],$VU2=[1,735],$VV2=[1,737],$VW2=[1,738],$VX2=[1,742],$VY2=[1,743],$VZ2=[1,744],$V_2=[1,745],$V$2=[1,746],$V03=[1,747],$V13=[1,748],$V23=[1,749],$V33=[1,750],$V43=[1,751],$V53=[1,752],$V63=[1,753],$V73=[1,754],$V83=[1,755],$V93=[1,756],$Va3=[1,757],$Vb3=[1,759],$Vc3=[1,761],$Vd3=[1,762],$Ve3=[1,763],$Vf3=[1,764],$Vg3=[1,765],$Vh3=[1,766],$Vi3=[1,767],$Vj3=[1,770],$Vk3=[1,771],$Vl3=[1,772],$Vm3=[1,773],$Vn3=[1,774],$Vo3=[1,775],$Vp3=[1,776],$Vq3=[1,777],$Vr3=[1,778],$Vs3=[1,779],$Vt3=[1,780],$Vu3=[1,781],$Vv3=[74,89,189],$Vw3=[10,74,78,154,187,230,297,306,310,343,356,368,369,373,374,602,764],$Vx3=[1,798],$Vy3=[10,74,78,300,306,310,602,764],$Vz3=[1,799],$VA3=[1,805],$VB3=[1,806],$VC3=[1,810],$VD3=[10,74,78,306,310,602,764],$VE3=[2,4,5,77,131,132,137,143,145,149,152,154,156,179,180,181,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,312,317,420,424],$VF3=[10,72,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VG3=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],$VH3=[2,4,5,132,296],$VI3=[1,844],$VJ3=[10,74,76,78,306,310,602,764],$VK3=[2,738],$VL3=[10,74,76,78,132,139,141,145,152,306,310,420,424,602,764],$VM3=[2,1161],$VN3=[10,74,76,78,139,141,145,152,306,310,420,424,602,764],$VO3=[10,74,76,78,139,141,145,306,310,420,424,602,764],$VP3=[10,74,78,139,141,306,310,602,764],$VQ3=[10,78,89,132,146,189,296,306,310,470,602,764],$VR3=[335,338,339],$VS3=[2,764],$VT3=[1,869],$VU3=[1,870],$VV3=[1,871],$VW3=[1,872],$VX3=[1,881],$VY3=[1,880],$VZ3=[164,166,334],$V_3=[2,444],$V$3=[1,936],$V04=[2,4,5,77,131,156,290,291,292,293],$V14=[1,951],$V24=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$V34=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$V44=[2,375],$V54=[1,958],$V64=[306,308,310],$V74=[74,300],$V84=[74,300,426],$V94=[1,965],$Va4=[2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vb4=[74,426],$Vc4=[1,978],$Vd4=[1,977],$Ve4=[1,984],$Vf4=[10,72,78,93,98,118,128,162,168,169,232,245,247,306,310,602,764],$Vg4=[1,1010],$Vh4=[10,72,78,306,310,602,764],$Vi4=[1,1016],$Vj4=[1,1017],$Vk4=[1,1018],$Vl4=[2,4,5,10,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],$Vm4=[1,1068],$Vn4=[1,1067],$Vo4=[1,1081],$Vp4=[1,1080],$Vq4=[1,1088],$Vr4=[10,72,74,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$Vs4=[1,1119],$Vt4=[10,78,89,146,189,306,310,470,602,764],$Vu4=[1,1139],$Vv4=[1,1138],$Vw4=[1,1137],$Vx4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy4=[1,1153],$Vz4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VA4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VB4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VC4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VD4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VE4=[2,406],$VF4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VG4=[2,285],$VH4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VI4=[10,78,306,310,602,764],$VJ4=[1,1189],$VK4=[10,77,78,143,145,152,181,302,306,310,420,424,602,764],$VL4=[10,74,78,306,308,310,464,602,764],$VM4=[1,1200],$VN4=[10,72,78,118,128,162,168,169,232,245,247,306,310,602,764],$VO4=[10,72,74,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VP4=[2,4,5,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VQ4=[2,4,5,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VR4=[2,1085],$VS4=[2,4,5,72,74,76,77,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VT4=[1,1252],$VU4=[10,74,78,128,306,308,310,464,602,764],$VV4=[115,116,124],$VW4=[2,584],$VX4=[1,1280],$VY4=[76,139],$VZ4=[2,724],$V_4=[1,1297],$V$4=[1,1298],$V05=[2,4,5,10,53,72,76,89,124,146,156,189,230,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$V15=[2,330],$V25=[1,1322],$V35=[1,1336],$V45=[1,1338],$V55=[2,487],$V65=[74,78],$V75=[10,306,308,310,464,602,764],$V85=[10,72,78,118,162,168,169,232,245,247,306,310,602,764],$V95=[1,1354],$Va5=[1,1358],$Vb5=[1,1359],$Vc5=[1,1361],$Vd5=[1,1362],$Ve5=[1,1363],$Vf5=[1,1364],$Vg5=[1,1365],$Vh5=[1,1366],$Vi5=[1,1367],$Vj5=[1,1368],$Vk5=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vl5=[1,1393],$Vm5=[10,72,78,118,162,168,169,245,247,306,310,602,764],$Vn5=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vo5=[1,1490],$Vp5=[1,1492],$Vq5=[2,4,5,77,143,145,152,156,181,290,291,292,293,302,420,424],$Vr5=[1,1506],$Vs5=[10,72,74,78,162,168,169,245,247,306,310,602,764],$Vt5=[1,1524],$Vu5=[1,1526],$Vv5=[1,1527],$Vw5=[1,1523],$Vx5=[1,1522],$Vy5=[1,1521],$Vz5=[1,1528],$VA5=[1,1518],$VB5=[1,1519],$VC5=[1,1520],$VD5=[1,1545],$VE5=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VF5=[1,1556],$VG5=[1,1564],$VH5=[1,1563],$VI5=[10,72,78,162,168,169,245,247,306,310,602,764],$VJ5=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VK5=[2,4,5,10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VL5=[1,1621],$VM5=[1,1623],$VN5=[1,1620],$VO5=[1,1622],$VP5=[187,193,368,369,370,373],$VQ5=[2,515],$VR5=[1,1628],$VS5=[1,1647],$VT5=[10,72,78,162,168,169,306,310,602,764],$VU5=[1,1657],$VV5=[1,1658],$VW5=[1,1659],$VX5=[1,1678],$VY5=[4,10,243,306,310,343,356,602,764],$VZ5=[1,1726],$V_5=[10,72,74,78,118,162,168,169,239,245,247,306,310,602,764],$V$5=[2,4,5,77],$V06=[1,1820],$V16=[1,1832],$V26=[1,1851],$V36=[10,72,78,162,168,169,306,310,415,602,764],$V46=[10,74,78,230,306,310,602,764];
-var parser = {trace: function trace() { },
-yy: {},
-symbols_: {"error":2,"Literal":3,"LITERAL":4,"BRALITERAL":5,"NonReserved":6,"LiteralWithSpaces":7,"main":8,"Statements":9,"EOF":10,"Statements_group0":11,"AStatement":12,"ExplainStatement":13,"EXPLAIN":14,"QUERY":15,"PLAN":16,"Statement":17,"AlterTable":18,"AttachDatabase":19,"Call":20,"CreateDatabase":21,"CreateIndex":22,"CreateGraph":23,"CreateTable":24,"CreateView":25,"CreateEdge":26,"CreateVertex":27,"Declare":28,"Delete":29,"DetachDatabase":30,"DropDatabase":31,"DropIndex":32,"DropTable":33,"DropView":34,"If":35,"Insert":36,"Merge":37,"Reindex":38,"RenameTable":39,"Select":40,"ShowCreateTable":41,"ShowColumns":42,"ShowDatabases":43,"ShowIndex":44,"ShowTables":45,"TruncateTable":46,"WithSelect":47,"CreateTrigger":48,"DropTrigger":49,"BeginTransaction":50,"CommitTransaction":51,"RollbackTransaction":52,"EndTransaction":53,"UseDatabase":54,"Update":55,"JavaScript":56,"Source":57,"Assert":58,"While":59,"Continue":60,"Break":61,"BeginEnd":62,"Print":63,"Require":64,"SetVariable":65,"ExpressionStatement":66,"AddRule":67,"Query":68,"Echo":69,"CreateFunction":70,"CreateAggregate":71,"WITH":72,"WithTablesList":73,"COMMA":74,"WithTable":75,"AS":76,"LPAR":77,"RPAR":78,"SelectClause":79,"Select_option0":80,"IntoClause":81,"FromClause":82,"Select_option1":83,"WhereClause":84,"GroupClause":85,"OrderClause":86,"LimitClause":87,"UnionClause":88,"SEARCH":89,"Select_repetition0":90,"Select_option2":91,"PivotClause":92,"PIVOT":93,"Expression":94,"FOR":95,"PivotClause_option0":96,"PivotClause_option1":97,"UNPIVOT":98,"IN":99,"ColumnsList":100,"PivotClause_option2":101,"PivotClause2":102,"AsList":103,"AsLiteral":104,"AsPart":105,"RemoveClause":106,"REMOVE":107,"RemoveClause_option0":108,"RemoveColumnsList":109,"RemoveColumn":110,"Column":111,"LIKE":112,"StringValue":113,"ArrowDot":114,"ARROW":115,"DOT":116,"SearchSelector":117,"ORDER":118,"BY":119,"OrderExpressionsList":120,"SearchSelector_option0":121,"DOTDOT":122,"CARET":123,"EQ":124,"SearchSelector_repetition_plus0":125,"SearchSelector_repetition_plus1":126,"SearchSelector_option1":127,"WHERE":128,"OF":129,"CLASS":130,"NUMBER":131,"STRING":132,"SLASH":133,"VERTEX":134,"EDGE":135,"EXCLAMATION":136,"SHARP":137,"MODULO":138,"GT":139,"LT":140,"GTGT":141,"LTLT":142,"DOLLAR":143,"Json":144,"AT":145,"SET":146,"SetColumnsList":147,"TO":148,"VALUE":149,"ROW":150,"ExprList":151,"COLON":152,"PlusStar":153,"NOT":154,"SearchSelector_repetition2":155,"IF":156,"SearchSelector_repetition3":157,"Aggregator":158,"SearchSelector_repetition4":159,"SearchSelector_group0":160,"SearchSelector_repetition5":161,"UNION":162,"SearchSelectorList":163,"ALL":164,"SearchSelector_repetition6":165,"ANY":166,"SearchSelector_repetition7":167,"INTERSECT":168,"EXCEPT":169,"AND":170,"OR":171,"PATH":172,"RETURN":173,"ResultColumns":174,"REPEAT":175,"SearchSelector_repetition8":176,"SearchSelectorList_repetition0":177,"SearchSelectorList_repetition1":178,"PLUS":179,"STAR":180,"QUESTION":181,"SearchFrom":182,"FROM":183,"SelectModifier":184,"DISTINCT":185,"TopClause":186,"UNIQUE":187,"SelectClause_option0":188,"SELECT":189,"COLUMN":190,"MATRIX":191,"TEXTSTRING":192,"INDEX":193,"RECORDSET":194,"TOP":195,"NumValue":196,"TopClause_option0":197,"INTO":198,"Table":199,"FuncValue":200,"ParamValue":201,"VarValue":202,"FromTablesList":203,"JoinTablesList":204,"ApplyClause":205,"CROSS":206,"APPLY":207,"OUTER":208,"FromTable":209,"FromTable_option0":210,"FromTable_option1":211,"INDEXED":212,"INSERTED":213,"FromString":214,"JoinTable":215,"JoinMode":216,"JoinTableAs":217,"OnClause":218,"JoinTableAs_option0":219,"JoinTableAs_option1":220,"JoinModeMode":221,"NATURAL":222,"JOIN":223,"INNER":224,"LEFT":225,"RIGHT":226,"FULL":227,"SEMI":228,"ANTI":229,"ON":230,"USING":231,"GROUP":232,"GroupExpressionsList":233,"HavingClause":234,"GroupExpression":235,"GROUPING":236,"ROLLUP":237,"CUBE":238,"HAVING":239,"CORRESPONDING":240,"OrderExpression":241,"DIRECTION":242,"COLLATE":243,"NOCASE":244,"LIMIT":245,"OffsetClause":246,"OFFSET":247,"LimitClause_option0":248,"FETCH":249,"LimitClause_option1":250,"LimitClause_option2":251,"LimitClause_option3":252,"ResultColumn":253,"Star":254,"AggrValue":255,"Op":256,"LogicValue":257,"NullValue":258,"ExistsValue":259,"CaseValue":260,"CastClause":261,"ArrayValue":262,"NewClause":263,"Expression_group0":264,"CURRENT_TIMESTAMP":265,"JAVASCRIPT":266,"CREATE":267,"FUNCTION":268,"AGGREGATE":269,"NEW":270,"CAST":271,"ColumnType":272,"CONVERT":273,"PrimitiveValue":274,"OverClause":275,"OVER":276,"OverPartitionClause":277,"OverOrderByClause":278,"PARTITION":279,"SUM":280,"COUNT":281,"MIN":282,"MAX":283,"AVG":284,"FIRST":285,"LAST":286,"AGGR":287,"ARRAY":288,"FuncValue_option0":289,"REPLACE":290,"DATEADD":291,"DATEDIFF":292,"INTERVAL":293,"TRUE":294,"FALSE":295,"NSTRING":296,"NULL":297,"EXISTS":298,"ARRAYLBRA":299,"RBRA":300,"ParamValue_group0":301,"BRAQUESTION":302,"CASE":303,"WhensList":304,"ElseClause":305,"END":306,"When":307,"WHEN":308,"THEN":309,"ELSE":310,"REGEXP":311,"TILDA":312,"GLOB":313,"ESCAPE":314,"NOT_LIKE":315,"BARBAR":316,"MINUS":317,"AMPERSAND":318,"BAR":319,"GE":320,"LE":321,"EQEQ":322,"EQEQEQ":323,"NE":324,"NEEQEQ":325,"NEEQEQEQ":326,"CondOp":327,"AllSome":328,"ColFunc":329,"BETWEEN":330,"NOT_BETWEEN":331,"IS":332,"DOUBLECOLON":333,"SOME":334,"UPDATE":335,"SetColumn":336,"SetColumn_group0":337,"DELETE":338,"INSERT":339,"Into":340,"Values":341,"ValuesListsList":342,"DEFAULT":343,"VALUES":344,"ValuesList":345,"Value":346,"DateValue":347,"TemporaryClause":348,"TableClass":349,"IfNotExists":350,"CreateTableDefClause":351,"CreateTableOptionsClause":352,"TABLE":353,"CreateTableOptions":354,"CreateTableOption":355,"IDENTITY":356,"TEMP":357,"ColumnDefsList":358,"ConstraintsList":359,"Constraint":360,"ConstraintName":361,"PrimaryKey":362,"ForeignKey":363,"UniqueKey":364,"IndexKey":365,"Check":366,"CONSTRAINT":367,"CHECK":368,"PRIMARY":369,"KEY":370,"PrimaryKey_option0":371,"ColsList":372,"FOREIGN":373,"REFERENCES":374,"ForeignKey_option0":375,"OnForeignKeyClause":376,"ParColsList":377,"OnDeleteClause":378,"OnUpdateClause":379,"NO":380,"ACTION":381,"UniqueKey_option0":382,"UniqueKey_option1":383,"ColumnDef":384,"ColumnConstraintsClause":385,"ColumnConstraints":386,"SingularColumnType":387,"NumberMax":388,"ENUM":389,"MAXNUM":390,"ColumnConstraintsList":391,"ColumnConstraint":392,"ParLiteral":393,"ColumnConstraint_option0":394,"ColumnConstraint_option1":395,"DROP":396,"DropTable_group0":397,"IfExists":398,"TablesList":399,"ALTER":400,"RENAME":401,"ADD":402,"MODIFY":403,"ATTACH":404,"DATABASE":405,"DETACH":406,"AsClause":407,"USE":408,"SHOW":409,"VIEW":410,"CreateView_option0":411,"CreateView_option1":412,"SubqueryRestriction":413,"READ":414,"ONLY":415,"OPTION":416,"SOURCE":417,"ASSERT":418,"JsonObject":419,"ATLBRA":420,"JsonArray":421,"JsonValue":422,"JsonPrimitiveValue":423,"LCUR":424,"JsonPropertiesList":425,"RCUR":426,"JsonElementsList":427,"JsonProperty":428,"OnOff":429,"SetPropsList":430,"AtDollar":431,"SetProp":432,"OFF":433,"COMMIT":434,"TRANSACTION":435,"ROLLBACK":436,"BEGIN":437,"ElseStatement":438,"WHILE":439,"CONTINUE":440,"BREAK":441,"PRINT":442,"REQUIRE":443,"StringValuesList":444,"PluginsList":445,"Plugin":446,"ECHO":447,"DECLARE":448,"DeclaresList":449,"DeclareItem":450,"TRUNCATE":451,"MERGE":452,"MergeInto":453,"MergeUsing":454,"MergeOn":455,"MergeMatchedList":456,"OutputClause":457,"MergeMatched":458,"MergeNotMatched":459,"MATCHED":460,"MergeMatchedAction":461,"MergeNotMatchedAction":462,"TARGET":463,"OUTPUT":464,"CreateVertex_option0":465,"CreateVertex_option1":466,"CreateVertex_option2":467,"CreateVertexSet":468,"SharpValue":469,"CONTENT":470,"CreateEdge_option0":471,"GRAPH":472,"GraphList":473,"GraphVertexEdge":474,"GraphElement":475,"GraphVertexEdge_option0":476,"GraphVertexEdge_option1":477,"GraphElementVar":478,"GraphVertexEdge_option2":479,"GraphVertexEdge_option3":480,"GraphVertexEdge_option4":481,"GraphVar":482,"GraphAsClause":483,"GraphAtClause":484,"GraphElement2":485,"GraphElement2_option0":486,"GraphElement2_option1":487,"GraphElement2_option2":488,"GraphElement2_option3":489,"GraphElement_option0":490,"GraphElement_option1":491,"GraphElement_option2":492,"SharpLiteral":493,"GraphElement_option3":494,"GraphElement_option4":495,"GraphElement_option5":496,"ColonLiteral":497,"DeleteVertex":498,"DeleteVertex_option0":499,"DeleteEdge":500,"DeleteEdge_option0":501,"DeleteEdge_option1":502,"DeleteEdge_option2":503,"Term":504,"COLONDASH":505,"TermsList":506,"QUESTIONDASH":507,"CALL":508,"TRIGGER":509,"BeforeAfter":510,"InsertDeleteUpdate":511,"CreateTrigger_option0":512,"CreateTrigger_option1":513,"BEFORE":514,"AFTER":515,"INSTEAD":516,"REINDEX":517,"A":518,"ABSENT":519,"ABSOLUTE":520,"ACCORDING":521,"ADA":522,"ADMIN":523,"ALWAYS":524,"ASC":525,"ASSERTION":526,"ASSIGNMENT":527,"ATTRIBUTE":528,"ATTRIBUTES":529,"BASE64":530,"BERNOULLI":531,"BLOCKED":532,"BOM":533,"BREADTH":534,"C":535,"CASCADE":536,"CATALOG":537,"CATALOG_NAME":538,"CHAIN":539,"CHARACTERISTICS":540,"CHARACTERS":541,"CHARACTER_SET_CATALOG":542,"CHARACTER_SET_NAME":543,"CHARACTER_SET_SCHEMA":544,"CLASS_ORIGIN":545,"COBOL":546,"COLLATION":547,"COLLATION_CATALOG":548,"COLLATION_NAME":549,"COLLATION_SCHEMA":550,"COLUMNS":551,"COLUMN_NAME":552,"COMMAND_FUNCTION":553,"COMMAND_FUNCTION_CODE":554,"COMMITTED":555,"CONDITION_NUMBER":556,"CONNECTION":557,"CONNECTION_NAME":558,"CONSTRAINTS":559,"CONSTRAINT_CATALOG":560,"CONSTRAINT_NAME":561,"CONSTRAINT_SCHEMA":562,"CONSTRUCTOR":563,"CONTROL":564,"CURSOR_NAME":565,"DATA":566,"DATETIME_INTERVAL_CODE":567,"DATETIME_INTERVAL_PRECISION":568,"DB":569,"DEFAULTS":570,"DEFERRABLE":571,"DEFERRED":572,"DEFINED":573,"DEFINER":574,"DEGREE":575,"DEPTH":576,"DERIVED":577,"DESC":578,"DESCRIPTOR":579,"DIAGNOSTICS":580,"DISPATCH":581,"DOCUMENT":582,"DOMAIN":583,"DYNAMIC_FUNCTION":584,"DYNAMIC_FUNCTION_CODE":585,"EMPTY":586,"ENCODING":587,"ENFORCED":588,"EXCLUDE":589,"EXCLUDING":590,"EXPRESSION":591,"FILE":592,"FINAL":593,"FLAG":594,"FOLLOWING":595,"FORTRAN":596,"FOUND":597,"FS":598,"G":599,"GENERAL":600,"GENERATED":601,"GO":602,"GOTO":603,"GRANTED":604,"HEX":605,"HIERARCHY":606,"ID":607,"IGNORE":608,"IMMEDIATE":609,"IMMEDIATELY":610,"IMPLEMENTATION":611,"INCLUDING":612,"INCREMENT":613,"INDENT":614,"INITIALLY":615,"INPUT":616,"INSTANCE":617,"INSTANTIABLE":618,"INTEGRITY":619,"INVOKER":620,"ISOLATION":621,"K":622,"KEY_MEMBER":623,"KEY_TYPE":624,"LENGTH":625,"LEVEL":626,"LIBRARY":627,"LINK":628,"LOCATION":629,"LOCATOR":630,"M":631,"MAP":632,"MAPPING":633,"MAXVALUE":634,"MESSAGE_LENGTH":635,"MESSAGE_OCTET_LENGTH":636,"MESSAGE_TEXT":637,"MINVALUE":638,"MORE":639,"MUMPS":640,"NAME":641,"NAMES":642,"NAMESPACE":643,"NESTING":644,"NEXT":645,"NFC":646,"NFD":647,"NFKC":648,"NFKD":649,"NIL":650,"NORMALIZED":651,"NULLABLE":652,"NULLS":653,"OBJECT":654,"OCTETS":655,"OPTIONS":656,"ORDERING":657,"ORDINALITY":658,"OTHERS":659,"OVERRIDING":660,"P":661,"PAD":662,"PARAMETER_MODE":663,"PARAMETER_NAME":664,"PARAMETER_ORDINAL_POSITION":665,"PARAMETER_SPECIFIC_CATALOG":666,"PARAMETER_SPECIFIC_NAME":667,"PARAMETER_SPECIFIC_SCHEMA":668,"PARTIAL":669,"PASCAL":670,"PASSING":671,"PASSTHROUGH":672,"PERMISSION":673,"PLACING":674,"PLI":675,"PRECEDING":676,"PRESERVE":677,"PRIOR":678,"PRIVILEGES":679,"PUBLIC":680,"RECOVERY":681,"RELATIVE":682,"REPEATABLE":683,"REQUIRING":684,"RESPECT":685,"RESTART":686,"RESTORE":687,"RESTRICT":688,"RETURNED_CARDINALITY":689,"RETURNED_LENGTH":690,"RETURNED_OCTET_LENGTH":691,"RETURNED_SQLSTATE":692,"RETURNING":693,"ROLE":694,"ROUTINE":695,"ROUTINE_CATALOG":696,"ROUTINE_NAME":697,"ROUTINE_SCHEMA":698,"ROW_COUNT":699,"SCALE":700,"SCHEMA":701,"SCHEMA_NAME":702,"SCOPE_CATALOG":703,"SCOPE_NAME":704,"SCOPE_SCHEMA":705,"SECTION":706,"SECURITY":707,"SELECTIVE":708,"SELF":709,"SEQUENCE":710,"SERIALIZABLE":711,"SERVER":712,"SERVER_NAME":713,"SESSION":714,"SETS":715,"SIMPLE":716,"SIZE":717,"SPACE":718,"SPECIFIC_NAME":719,"STANDALONE":720,"STATE":721,"STATEMENT":722,"STRIP":723,"STRUCTURE":724,"STYLE":725,"SUBCLASS_ORIGIN":726,"T":727,"TABLE_NAME":728,"TEMPORARY":729,"TIES":730,"TOKEN":731,"TOP_LEVEL_COUNT":732,"TRANSACTIONS_COMMITTED":733,"TRANSACTIONS_ROLLED_BACK":734,"TRANSACTION_ACTIVE":735,"TRANSFORM":736,"TRANSFORMS":737,"TRIGGER_CATALOG":738,"TRIGGER_NAME":739,"TRIGGER_SCHEMA":740,"TYPE":741,"UNBOUNDED":742,"UNCOMMITTED":743,"UNDER":744,"UNLINK":745,"UNNAMED":746,"UNTYPED":747,"URI":748,"USAGE":749,"USER_DEFINED_TYPE_CATALOG":750,"USER_DEFINED_TYPE_CODE":751,"USER_DEFINED_TYPE_NAME":752,"USER_DEFINED_TYPE_SCHEMA":753,"VALID":754,"VERSION":755,"WHITESPACE":756,"WORK":757,"WRAPPER":758,"WRITE":759,"XMLDECLARATION":760,"XMLSCHEMA":761,"YES":762,"ZONE":763,"SEMICOLON":764,"PERCENT":765,"ROWS":766,"FuncValue_option0_group0":767,"$accept":0,"$end":1},
-terminals_: {2:"error",4:"LITERAL",5:"BRALITERAL",10:"EOF",14:"EXPLAIN",15:"QUERY",16:"PLAN",53:"EndTransaction",72:"WITH",74:"COMMA",76:"AS",77:"LPAR",78:"RPAR",89:"SEARCH",93:"PIVOT",95:"FOR",98:"UNPIVOT",99:"IN",107:"REMOVE",112:"LIKE",115:"ARROW",116:"DOT",118:"ORDER",119:"BY",122:"DOTDOT",123:"CARET",124:"EQ",128:"WHERE",129:"OF",130:"CLASS",131:"NUMBER",132:"STRING",133:"SLASH",134:"VERTEX",135:"EDGE",136:"EXCLAMATION",137:"SHARP",138:"MODULO",139:"GT",140:"LT",141:"GTGT",142:"LTLT",143:"DOLLAR",145:"AT",146:"SET",148:"TO",149:"VALUE",150:"ROW",152:"COLON",154:"NOT",156:"IF",162:"UNION",164:"ALL",166:"ANY",168:"INTERSECT",169:"EXCEPT",170:"AND",171:"OR",172:"PATH",173:"RETURN",175:"REPEAT",179:"PLUS",180:"STAR",181:"QUESTION",183:"FROM",185:"DISTINCT",187:"UNIQUE",189:"SELECT",190:"COLUMN",191:"MATRIX",192:"TEXTSTRING",193:"INDEX",194:"RECORDSET",195:"TOP",198:"INTO",206:"CROSS",207:"APPLY",208:"OUTER",212:"INDEXED",213:"INSERTED",222:"NATURAL",223:"JOIN",224:"INNER",225:"LEFT",226:"RIGHT",227:"FULL",228:"SEMI",229:"ANTI",230:"ON",231:"USING",232:"GROUP",236:"GROUPING",237:"ROLLUP",238:"CUBE",239:"HAVING",240:"CORRESPONDING",242:"DIRECTION",243:"COLLATE",244:"NOCASE",245:"LIMIT",247:"OFFSET",249:"FETCH",265:"CURRENT_TIMESTAMP",266:"JAVASCRIPT",267:"CREATE",268:"FUNCTION",269:"AGGREGATE",270:"NEW",271:"CAST",273:"CONVERT",276:"OVER",279:"PARTITION",280:"SUM",281:"COUNT",282:"MIN",283:"MAX",284:"AVG",285:"FIRST",286:"LAST",287:"AGGR",288:"ARRAY",290:"REPLACE",291:"DATEADD",292:"DATEDIFF",293:"INTERVAL",294:"TRUE",295:"FALSE",296:"NSTRING",297:"NULL",298:"EXISTS",299:"ARRAYLBRA",300:"RBRA",302:"BRAQUESTION",303:"CASE",306:"END",308:"WHEN",309:"THEN",310:"ELSE",311:"REGEXP",312:"TILDA",313:"GLOB",314:"ESCAPE",315:"NOT_LIKE",316:"BARBAR",317:"MINUS",318:"AMPERSAND",319:"BAR",320:"GE",321:"LE",322:"EQEQ",323:"EQEQEQ",324:"NE",325:"NEEQEQ",326:"NEEQEQEQ",330:"BETWEEN",331:"NOT_BETWEEN",332:"IS",333:"DOUBLECOLON",334:"SOME",335:"UPDATE",338:"DELETE",339:"INSERT",343:"DEFAULT",344:"VALUES",347:"DateValue",353:"TABLE",356:"IDENTITY",357:"TEMP",367:"CONSTRAINT",368:"CHECK",369:"PRIMARY",370:"KEY",373:"FOREIGN",374:"REFERENCES",380:"NO",381:"ACTION",386:"ColumnConstraints",389:"ENUM",390:"MAXNUM",396:"DROP",400:"ALTER",401:"RENAME",402:"ADD",403:"MODIFY",404:"ATTACH",405:"DATABASE",406:"DETACH",408:"USE",409:"SHOW",410:"VIEW",414:"READ",415:"ONLY",416:"OPTION",417:"SOURCE",418:"ASSERT",420:"ATLBRA",424:"LCUR",426:"RCUR",433:"OFF",434:"COMMIT",435:"TRANSACTION",436:"ROLLBACK",437:"BEGIN",439:"WHILE",440:"CONTINUE",441:"BREAK",442:"PRINT",443:"REQUIRE",447:"ECHO",448:"DECLARE",451:"TRUNCATE",452:"MERGE",460:"MATCHED",463:"TARGET",464:"OUTPUT",470:"CONTENT",472:"GRAPH",505:"COLONDASH",507:"QUESTIONDASH",508:"CALL",509:"TRIGGER",514:"BEFORE",515:"AFTER",516:"INSTEAD",517:"REINDEX",518:"A",519:"ABSENT",520:"ABSOLUTE",521:"ACCORDING",522:"ADA",523:"ADMIN",524:"ALWAYS",525:"ASC",526:"ASSERTION",527:"ASSIGNMENT",528:"ATTRIBUTE",529:"ATTRIBUTES",530:"BASE64",531:"BERNOULLI",532:"BLOCKED",533:"BOM",534:"BREADTH",535:"C",536:"CASCADE",537:"CATALOG",538:"CATALOG_NAME",539:"CHAIN",540:"CHARACTERISTICS",541:"CHARACTERS",542:"CHARACTER_SET_CATALOG",543:"CHARACTER_SET_NAME",544:"CHARACTER_SET_SCHEMA",545:"CLASS_ORIGIN",546:"COBOL",547:"COLLATION",548:"COLLATION_CATALOG",549:"COLLATION_NAME",550:"COLLATION_SCHEMA",551:"COLUMNS",552:"COLUMN_NAME",553:"COMMAND_FUNCTION",554:"COMMAND_FUNCTION_CODE",555:"COMMITTED",556:"CONDITION_NUMBER",557:"CONNECTION",558:"CONNECTION_NAME",559:"CONSTRAINTS",560:"CONSTRAINT_CATALOG",561:"CONSTRAINT_NAME",562:"CONSTRAINT_SCHEMA",563:"CONSTRUCTOR",564:"CONTROL",565:"CURSOR_NAME",566:"DATA",567:"DATETIME_INTERVAL_CODE",568:"DATETIME_INTERVAL_PRECISION",569:"DB",570:"DEFAULTS",571:"DEFERRABLE",572:"DEFERRED",573:"DEFINED",574:"DEFINER",575:"DEGREE",576:"DEPTH",577:"DERIVED",578:"DESC",579:"DESCRIPTOR",580:"DIAGNOSTICS",581:"DISPATCH",582:"DOCUMENT",583:"DOMAIN",584:"DYNAMIC_FUNCTION",585:"DYNAMIC_FUNCTION_CODE",586:"EMPTY",587:"ENCODING",588:"ENFORCED",589:"EXCLUDE",590:"EXCLUDING",591:"EXPRESSION",592:"FILE",593:"FINAL",594:"FLAG",595:"FOLLOWING",596:"FORTRAN",597:"FOUND",598:"FS",599:"G",600:"GENERAL",601:"GENERATED",602:"GO",603:"GOTO",604:"GRANTED",605:"HEX",606:"HIERARCHY",607:"ID",608:"IGNORE",609:"IMMEDIATE",610:"IMMEDIATELY",611:"IMPLEMENTATION",612:"INCLUDING",613:"INCREMENT",614:"INDENT",615:"INITIALLY",616:"INPUT",617:"INSTANCE",618:"INSTANTIABLE",619:"INTEGRITY",620:"INVOKER",621:"ISOLATION",622:"K",623:"KEY_MEMBER",624:"KEY_TYPE",625:"LENGTH",626:"LEVEL",627:"LIBRARY",628:"LINK",629:"LOCATION",630:"LOCATOR",631:"M",632:"MAP",633:"MAPPING",634:"MAXVALUE",635:"MESSAGE_LENGTH",636:"MESSAGE_OCTET_LENGTH",637:"MESSAGE_TEXT",638:"MINVALUE",639:"MORE",640:"MUMPS",641:"NAME",642:"NAMES",643:"NAMESPACE",644:"NESTING",645:"NEXT",646:"NFC",647:"NFD",648:"NFKC",649:"NFKD",650:"NIL",651:"NORMALIZED",652:"NULLABLE",653:"NULLS",654:"OBJECT",655:"OCTETS",656:"OPTIONS",657:"ORDERING",658:"ORDINALITY",659:"OTHERS",660:"OVERRIDING",661:"P",662:"PAD",663:"PARAMETER_MODE",664:"PARAMETER_NAME",665:"PARAMETER_ORDINAL_POSITION",666:"PARAMETER_SPECIFIC_CATALOG",667:"PARAMETER_SPECIFIC_NAME",668:"PARAMETER_SPECIFIC_SCHEMA",669:"PARTIAL",670:"PASCAL",671:"PASSING",672:"PASSTHROUGH",673:"PERMISSION",674:"PLACING",675:"PLI",676:"PRECEDING",677:"PRESERVE",678:"PRIOR",679:"PRIVILEGES",680:"PUBLIC",681:"RECOVERY",682:"RELATIVE",683:"REPEATABLE",684:"REQUIRING",685:"RESPECT",686:"RESTART",687:"RESTORE",688:"RESTRICT",689:"RETURNED_CARDINALITY",690:"RETURNED_LENGTH",691:"RETURNED_OCTET_LENGTH",692:"RETURNED_SQLSTATE",693:"RETURNING",694:"ROLE",695:"ROUTINE",696:"ROUTINE_CATALOG",697:"ROUTINE_NAME",698:"ROUTINE_SCHEMA",699:"ROW_COUNT",700:"SCALE",701:"SCHEMA",702:"SCHEMA_NAME",703:"SCOPE_CATALOG",704:"SCOPE_NAME",705:"SCOPE_SCHEMA",706:"SECTION",707:"SECURITY",708:"SELECTIVE",709:"SELF",710:"SEQUENCE",711:"SERIALIZABLE",712:"SERVER",713:"SERVER_NAME",714:"SESSION",715:"SETS",716:"SIMPLE",717:"SIZE",718:"SPACE",719:"SPECIFIC_NAME",720:"STANDALONE",721:"STATE",722:"STATEMENT",723:"STRIP",724:"STRUCTURE",725:"STYLE",726:"SUBCLASS_ORIGIN",727:"T",728:"TABLE_NAME",729:"TEMPORARY",730:"TIES",731:"TOKEN",732:"TOP_LEVEL_COUNT",733:"TRANSACTIONS_COMMITTED",734:"TRANSACTIONS_ROLLED_BACK",735:"TRANSACTION_ACTIVE",736:"TRANSFORM",737:"TRANSFORMS",738:"TRIGGER_CATALOG",739:"TRIGGER_NAME",740:"TRIGGER_SCHEMA",741:"TYPE",742:"UNBOUNDED",743:"UNCOMMITTED",744:"UNDER",745:"UNLINK",746:"UNNAMED",747:"UNTYPED",748:"URI",749:"USAGE",750:"USER_DEFINED_TYPE_CATALOG",751:"USER_DEFINED_TYPE_CODE",752:"USER_DEFINED_TYPE_NAME",753:"USER_DEFINED_TYPE_SCHEMA",754:"VALID",755:"VERSION",756:"WHITESPACE",757:"WORK",758:"WRAPPER",759:"WRITE",760:"XMLDECLARATION",761:"XMLSCHEMA",762:"YES",763:"ZONE",764:"SEMICOLON",765:"PERCENT",766:"ROWS"},
-productions_: [0,[3,1],[3,1],[3,2],[7,1],[7,2],[8,2],[9,3],[9,1],[9,1],[13,2],[13,4],[12,1],[17,0],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[47,3],[73,3],[73,1],[75,5],[40,10],[40,4],[92,8],[92,11],[102,4],[104,2],[104,1],[103,3],[103,1],[105,1],[105,3],[106,3],[109,3],[109,1],[110,1],[110,2],[114,1],[114,1],[117,1],[117,5],[117,5],[117,1],[117,2],[117,1],[117,2],[117,2],[117,3],[117,4],[117,4],[117,4],[117,4],[117,4],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,2],[117,2],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,3],[117,4],[117,3],[117,1],[117,4],[117,2],[117,2],[117,4],[117,4],[117,4],[117,4],[117,4],[117,5],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,6],[163,3],[163,1],[153,1],[153,1],[153,1],[182,2],[79,4],[79,4],[79,4],[79,3],[184,1],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[186,3],[186,4],[186,0],[81,0],[81,2],[81,2],[81,2],[81,2],[81,2],[82,2],[82,3],[82,5],[82,0],[205,6],[205,7],[205,6],[205,7],[203,1],[203,3],[209,4],[209,5],[209,3],[209,3],[209,2],[209,3],[209,1],[209,3],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,2],[209,3],[214,1],[199,3],[199,1],[204,2],[204,2],[204,1],[204,1],[215,3],[217,1],[217,2],[217,3],[217,3],[217,2],[217,3],[217,4],[217,5],[217,1],[217,2],[217,3],[217,1],[217,2],[217,3],[216,1],[216,2],[221,1],[221,2],[221,2],[221,3],[221,2],[221,3],[221,2],[221,3],[221,2],[221,2],[221,2],[218,2],[218,2],[218,0],[84,0],[84,2],[85,0],[85,4],[233,1],[233,3],[235,5],[235,4],[235,4],[235,1],[234,0],[234,2],[88,0],[88,2],[88,3],[88,2],[88,2],[88,3],[88,4],[88,3],[88,3],[86,0],[86,3],[120,1],[120,3],[241,1],[241,2],[241,3],[241,4],[87,0],[87,3],[87,8],[246,0],[246,2],[174,3],[174,1],[253,3],[253,2],[253,3],[253,2],[253,3],[253,2],[253,1],[254,5],[254,3],[254,1],[111,5],[111,3],[111,3],[111,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,3],[94,3],[94,3],[94,1],[94,1],[56,1],[70,5],[71,5],[263,2],[263,2],[261,6],[261,8],[261,6],[261,8],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[255,5],[255,6],[255,6],[275,0],[275,4],[275,4],[275,5],[277,3],[278,3],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[200,5],[200,3],[200,4],[200,4],[200,8],[200,8],[200,8],[200,8],[200,3],[151,1],[151,3],[196,1],[257,1],[257,1],[113,1],[113,1],[258,1],[202,2],[259,4],[262,3],[201,2],[201,2],[201,1],[201,1],[260,5],[260,4],[304,2],[304,1],[307,4],[305,2],[305,0],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,6],[256,6],[256,3],[256,3],[256,2],[256,2],[256,2],[256,2],[256,2],[256,3],[256,5],[256,6],[256,5],[256,6],[256,4],[256,5],[256,3],[256,4],[256,3],[256,4],[256,3],[256,3],[256,3],[256,3],[256,3],[329,1],[329,1],[329,4],[327,1],[327,1],[327,1],[327,1],[327,1],[327,1],[328,1],[328,1],[328,1],[55,6],[55,4],[147,1],[147,3],[336,3],[336,4],[29,5],[29,3],[36,5],[36,4],[36,7],[36,6],[36,5],[36,4],[36,5],[36,8],[36,7],[36,4],[36,6],[36,7],[341,1],[341,1],[340,0],[340,1],[342,3],[342,1],[342,1],[342,5],[342,3],[342,3],[345,1],[345,3],[346,1],[346,1],[346,1],[346,1],[346,1],[346,1],[100,1],[100,3],[24,9],[24,5],[349,1],[349,1],[352,0],[352,1],[354,2],[354,1],[355,1],[355,3],[355,3],[355,3],[348,0],[348,1],[350,0],[350,3],[351,3],[351,1],[351,2],[359,1],[359,3],[360,2],[360,2],[360,2],[360,2],[360,2],[361,0],[361,2],[366,4],[362,6],[363,9],[377,3],[376,0],[376,2],[378,4],[379,4],[364,6],[365,5],[365,5],[372,1],[372,1],[372,3],[372,3],[358,1],[358,3],[384,3],[384,2],[384,1],[387,6],[387,4],[387,1],[387,4],[272,2],[272,1],[388,1],[388,1],[385,0],[385,1],[391,2],[391,1],[393,3],[392,2],[392,5],[392,3],[392,6],[392,1],[392,2],[392,4],[392,2],[392,1],[392,2],[392,1],[392,1],[392,3],[392,5],[33,4],[399,3],[399,1],[398,0],[398,2],[18,6],[18,6],[18,6],[18,8],[18,6],[39,5],[19,4],[19,7],[19,6],[19,9],[30,3],[21,4],[21,6],[21,9],[21,6],[407,0],[407,2],[54,3],[54,2],[31,4],[31,5],[31,5],[22,8],[22,9],[32,3],[43,2],[43,4],[43,3],[43,5],[45,2],[45,4],[45,4],[45,6],[42,4],[42,6],[44,4],[44,6],[41,4],[41,6],[25,11],[25,8],[413,3],[413,3],[413,5],[34,4],[66,2],[57,2],[58,2],[58,2],[58,4],[144,4],[144,2],[144,2],[144,2],[144,2],[144,1],[144,2],[144,2],[422,1],[422,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,3],[419,3],[419,4],[419,2],[421,2],[421,3],[421,1],[425,3],[425,1],[428,3],[428,3],[428,3],[427,3],[427,1],[65,4],[65,3],[65,4],[65,5],[65,5],[65,6],[431,1],[431,1],[430,3],[430,2],[432,1],[432,1],[432,3],[429,1],[429,1],[51,2],[52,2],[50,2],[35,4],[35,3],[438,2],[59,3],[60,1],[61,1],[62,3],[63,2],[63,2],[64,2],[64,2],[446,1],[446,1],[69,2],[444,3],[444,1],[445,3],[445,1],[28,2],[449,1],[449,3],[450,3],[450,4],[450,5],[450,6],[46,3],[37,6],[453,1],[453,2],[454,2],[455,2],[456,2],[456,2],[456,1],[456,1],[458,4],[458,6],[461,1],[461,3],[459,5],[459,7],[459,7],[459,9],[459,7],[459,9],[462,3],[462,6],[462,3],[462,6],[457,0],[457,2],[457,5],[457,4],[457,7],[27,6],[469,2],[468,0],[468,2],[468,2],[468,1],[26,8],[23,3],[23,4],[473,3],[473,1],[474,3],[474,7],[474,6],[474,3],[474,4],[478,1],[478,1],[482,2],[483,3],[484,2],[485,4],[475,4],[475,3],[475,2],[475,1],[497,2],[493,2],[493,2],[498,4],[500,6],[67,3],[67,2],[506,3],[506,1],[504,1],[504,4],[68,2],[20,2],[48,9],[48,8],[48,9],[510,0],[510,1],[510,1],[510,1],[510,2],[511,1],[511,1],[511,1],[49,3],[38,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[11,1],[11,1],[80,0],[80,1],[83,0],[83,1],[90,0],[90,2],[91,0],[91,1],[96,0],[96,1],[97,0],[97,1],[101,0],[101,1],[108,0],[108,1],[121,0],[121,1],[125,1],[125,2],[126,1],[126,2],[127,0],[127,1],[155,0],[155,2],[157,0],[157,2],[159,0],[159,2],[160,1],[160,1],[161,0],[161,2],[165,0],[165,2],[167,0],[167,2],[176,0],[176,2],[177,0],[177,2],[178,0],[178,2],[188,0],[188,1],[197,0],[197,1],[210,0],[210,1],[211,0],[211,1],[219,0],[219,1],[220,0],[220,1],[248,0],[248,1],[250,0],[250,1],[251,0],[251,1],[252,0],[252,1],[264,1],[264,1],[767,1],[767,1],[289,0],[289,1],[301,1],[301,1],[337,1],[337,1],[371,0],[371,1],[375,0],[375,1],[382,0],[382,1],[383,0],[383,1],[394,0],[394,1],[395,0],[395,1],[397,1],[397,1],[411,0],[411,1],[412,0],[412,1],[465,0],[465,1],[466,0],[466,1],[467,0],[467,1],[471,0],[471,1],[476,0],[476,1],[477,0],[477,1],[479,0],[479,1],[480,0],[480,1],[481,0],[481,1],[486,0],[486,1],[487,0],[487,1],[488,0],[488,1],[489,0],[489,1],[490,0],[490,1],[491,0],[491,1],[492,0],[492,1],[494,0],[494,1],[495,0],[495,1],[496,0],[496,1],[499,0],[499,2],[501,0],[501,2],[502,0],[502,2],[503,0],[503,2],[512,0],[512,1],[513,0],[513,1]],
-performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
-/* this == yyval */
-
-var $0 = $$.length - 1;
-switch (yystate) {
-case 1:
-
- if (alasql.options.casesensitive) this.$ = $$[$0];
- else this.$ = $$[$0].toLowerCase();
-
-break;
-case 2:
- this.$ = doubleq($$[$0].substr(1,$$[$0].length-2));
-break;
-case 3:
- this.$ = $$[$0].toLowerCase()
-break;
-case 4:
- this.$ = $$[$0]
-break;
-case 5:
- this.$ = $$[$0] ? $$[$0-1] + ' ' + $$[$0] : $$[$0-1]
-break;
-case 6:
- return new yy.Statements({statements:$$[$0-1]});
-break;
-case 7:
- this.$ = $$[$0-2]; if($$[$0]) $$[$0-2].push($$[$0]);
-break;
-case 8: case 9: case 70: case 80: case 85: case 143: case 177: case 205: case 206: case 242: case 261: case 273: case 354: case 372: case 451: case 474: case 475: case 479: case 487: case 528: case 529: case 566: case 649: case 659: case 683: case 685: case 687: case 701: case 702: case 732: case 756:
- this.$ = [$$[$0]];
-break;
-case 10:
- this.$ = $$[$0]; $$[$0].explain = true;
-break;
-case 11:
- this.$ = $$[$0]; $$[$0].explain = true;
-break;
-case 12:
-
- this.$ = $$[$0];
-
- // TODO combine exists and queries
- if(yy.exists) this.$.exists = yy.exists;
- delete yy.exists;
- if(yy.queries) this.$.queries = yy.queries;
- delete yy.queries;
-
-break;
-case 13: case 162: case 172: case 237: case 238: case 240: case 248: case 250: case 259: case 267: case 270: case 375: case 491: case 501: case 503: case 515: case 521: case 522: case 567:
- this.$ = undefined;
-break;
-case 68:
- this.$ = new yy.WithSelect({withs: $$[$0-1], select:$$[$0]});
-break;
-case 69: case 565:
- $$[$0-2].push($$[$0]); this.$=$$[$0-2];
-break;
-case 71:
- this.$ = {name:$$[$0-4], select:$$[$0-1]};
-break;
-case 72:
-
- yy.extend(this.$,$$[$0-9]); yy.extend(this.$,$$[$0-8]); yy.extend(this.$,$$[$0-7]); yy.extend(this.$,$$[$0-6]);
- yy.extend(this.$,$$[$0-5]); yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);
- yy.extend(this.$,$$[$0-2]); yy.extend(this.$,$$[$0-1]); yy.extend(this.$,$$[$0]);
- this.$ = $$[$0-9];
-/* if(yy.exists) this.$.exists = yy.exists;
- delete yy.exists;
- if(yy.queries) this.$.queries = yy.queries;
- delete yy.queries;
-*/
-break;
-case 73:
-
- this.$ = new yy.Search({selectors:$$[$0-2], from:$$[$0]});
- yy.extend(this.$,$$[$0-1]);
-
-break;
-case 74:
- this.$ = {pivot:{expr:$$[$0-5], columnid:$$[$0-3], inlist:$$[$0-2], as:$$[$0]}};
-break;
-case 75:
- this.$ = {unpivot:{tocolumnid:$$[$0-8], forcolumnid:$$[$0-6], inlist:$$[$0-3], as:$$[$0]}};
-break;
-case 76: case 520: case 549: case 585: case 619: case 636: case 637: case 640: case 662:
- this.$ = $$[$0-1];
-break;
-case 77: case 78: case 86: case 147: case 185: case 247: case 280: case 288: case 289: case 290: case 291: case 292: case 293: case 294: case 295: case 296: case 297: case 298: case 299: case 300: case 301: case 304: case 305: case 320: case 321: case 322: case 323: case 324: case 325: case 374: case 440: case 441: case 442: case 443: case 444: case 445: case 516: case 542: case 546: case 548: case 623: case 624: case 625: case 626: case 627: case 628: case 632: case 634: case 635: case 644: case 660: case 661: case 723: case 738: case 739: case 741: case 742: case 748: case 749:
- this.$ = $$[$0];
-break;
-case 79: case 84: case 731: case 755:
- this.$ = $$[$0-2]; this.$.push($$[$0]);
-break;
-case 81:
- this.$ = {expr:$$[$0]};
-break;
-case 82:
- this.$ = {expr:$$[$0-2],as:$$[$0]};
-break;
-case 83:
- this.$ = {removecolumns:$$[$0]};
-break;
-case 87:
- this.$ = {like:$$[$0]};
-break;
-case 90: case 104:
- this.$ = {srchid:"PROP", args: [$$[$0]]};
-break;
-case 91:
- this.$ = {srchid:"ORDERBY", args: $$[$0-1]};
-break;
-case 92:
-
- var dir = $$[$0-1];
- if(!dir) dir = 'ASC';
- this.$ = {srchid:"ORDERBY", args: [{expression: new yy.Column({columnid:'_'}), direction:dir}]};
-
-break;
-case 93:
- this.$ = {srchid:"PARENT"};
-break;
-case 94:
- this.$ = {srchid:"APROP", args: [$$[$0]]};
-break;
-case 95:
- this.$ = {selid:"ROOT"};
-break;
-case 96:
- this.$ = {srchid:"EQ", args: [$$[$0]]};
-break;
-case 97:
- this.$ = {srchid:"LIKE", args: [$$[$0]]};
-break;
-case 98: case 99:
- this.$ = {selid:"WITH", args: $$[$0-1]};
-break;
-case 100:
- this.$ = {srchid:$$[$0-3].toUpperCase(), args:$$[$0-1]};
-break;
-case 101:
- this.$ = {srchid:"WHERE", args:[$$[$0-1]]};
-break;
-case 102:
- this.$ = {selid:"OF", args:[$$[$0-1]]};
-break;
-case 103:
- this.$ = {srchid:"CLASS", args:[$$[$0-1]]};
-break;
-case 105:
- this.$ = {srchid:"NAME", args: [$$[$0].substr(1,$$[$0].length-2)]};
-break;
-case 106:
- this.$ = {srchid:"CHILD"};
-break;
-case 107:
- this.$ = {srchid:"VERTEX"};
-break;
-case 108:
- this.$ = {srchid:"EDGE"};
-break;
-case 109:
- this.$ = {srchid:"REF"};
-break;
-case 110:
- this.$ = {srchid:"SHARP", args:[$$[$0]]};
-break;
-case 111:
- this.$ = {srchid:"ATTR", args:((typeof $$[$0] == 'undefined')?undefined:[$$[$0]])};
-break;
-case 112:
- this.$ = {srchid:"ATTR"};
-break;
-case 113:
- this.$ = {srchid:"OUT"};
-break;
-case 114:
- this.$ = {srchid:"IN"};
-break;
-case 115:
- this.$ = {srchid:"OUTOUT"};
-break;
-case 116:
- this.$ = {srchid:"ININ"};
-break;
-case 117:
- this.$ = {srchid:"CONTENT"};
-break;
-case 118:
- this.$ = {srchid:"EX",args:[new yy.Json({value:$$[$0]})]};
-break;
-case 119:
- this.$ = {srchid:"AT", args:[$$[$0]]};
-break;
-case 120:
- this.$ = {srchid:"AS", args:[$$[$0]]};
-break;
-case 121:
- this.$ = {srchid:"SET", args:$$[$0-1]};
-break;
-case 122:
- this.$ = {selid:"TO", args:[$$[$0]]};
-break;
-case 123:
- this.$ = {srchid:"VALUE"};
-break;
-case 124:
- this.$ = {srchid:"ROW", args:$$[$0-1]};
-break;
-case 125:
- this.$ = {srchid:"CLASS", args:[$$[$0]]};
-break;
-case 126:
- this.$ = {selid:$$[$0],args:[$$[$0-1]] };
-break;
-case 127:
- this.$ = {selid:"NOT",args:$$[$0-1] };
-break;
-case 128:
- this.$ = {selid:"IF",args:$$[$0-1] };
-break;
-case 129:
- this.$ = {selid:$$[$0-3],args:$$[$0-1] };
-break;
-case 130:
- this.$ = {selid:'DISTINCT',args:$$[$0-1] };
-break;
-case 131:
- this.$ = {selid:'UNION',args:$$[$0-1] };
-break;
-case 132:
- this.$ = {selid:'UNIONALL',args:$$[$0-1] };
-break;
-case 133:
- this.$ = {selid:'ALL',args:[$$[$0-1]] };
-break;
-case 134:
- this.$ = {selid:'ANY',args:[$$[$0-1]] };
-break;
-case 135:
- this.$ = {selid:'INTERSECT',args:$$[$0-1] };
-break;
-case 136:
- this.$ = {selid:'EXCEPT',args:$$[$0-1] };
-break;
-case 137:
- this.$ = {selid:'AND',args:$$[$0-1] };
-break;
-case 138:
- this.$ = {selid:'OR',args:$$[$0-1] };
-break;
-case 139:
- this.$ = {selid:'PATH',args:[$$[$0-1]] };
-break;
-case 140:
- this.$ = {srchid:'RETURN',args:$$[$0-1] };
-break;
-case 141:
- this.$ = {selid:'REPEAT',sels:$$[$0-3], args:$$[$0-1] };
-break;
-case 142:
- this.$ = $$[$0-2]; this.$.push($$[$0]);
-break;
-case 144:
- this.$ = "PLUS";
-break;
-case 145:
- this.$ = "STAR";
-break;
-case 146:
- this.$ = "QUESTION";
-break;
-case 148:
- this.$ = new yy.Select({ columns:$$[$0], distinct: true }); yy.extend(this.$, $$[$0-3]); yy.extend(this.$, $$[$0-1]);
-break;
-case 149:
- this.$ = new yy.Select({ columns:$$[$0], distinct: true }); yy.extend(this.$, $$[$0-3]);yy.extend(this.$, $$[$0-1]);
-break;
-case 150:
- this.$ = new yy.Select({ columns:$$[$0], all:true }); yy.extend(this.$, $$[$0-3]);yy.extend(this.$, $$[$0-1]);
-break;
-case 151:
-
- if(!$$[$0]) {
- this.$ = new yy.Select({columns:[new yy.Column({columnid:'_',})], modifier:'COLUMN'});
- } else {
- this.$ = new yy.Select({ columns:$$[$0] }); yy.extend(this.$, $$[$0-2]);yy.extend(this.$, $$[$0-1]);
- }
-
-break;
-case 152:
- if($$[$0]=='SELECT') this.$ = undefined; else this.$ = {modifier: $$[$0]};
-break;
-case 153:
- this.$ = {modifier:'VALUE'}
-break;
-case 154:
- this.$ = {modifier:'ROW'}
-break;
-case 155:
- this.$ = {modifier:'COLUMN'}
-break;
-case 156:
- this.$ = {modifier:'MATRIX'}
-break;
-case 157:
- this.$ = {modifier:'TEXTSTRING'}
-break;
-case 158:
- this.$ = {modifier:'INDEX'}
-break;
-case 159:
- this.$ = {modifier:'RECORDSET'}
-break;
-case 160:
- this.$ = {top: $$[$0-1], percent:(typeof $$[$0] != 'undefined'?true:undefined)};
-break;
-case 161:
- this.$ = {top: $$[$0-1]};
-break;
-case 163: case 330: case 523: case 524: case 724:
-this.$ = undefined;
-break;
-case 164: case 165: case 166: case 167:
-this.$ = {into: $$[$0]}
-break;
-case 168:
-
- var s = $$[$0];
- s = s.substr(1,s.length-2);
- var x3 = s.substr(-3).toUpperCase();
- var x4 = s.substr(-4).toUpperCase();
- if(s[0] == '#') {
- this.$ = {into: new yy.FuncValue({funcid: 'HTML', args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
- } else if(x3=='XLS' || x3 == 'CSV' || x3=='TAB') {
- this.$ = {into: new yy.FuncValue({funcid: x3, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
- } else if(x4=='XLSX' || x4 == 'JSON') {
- this.$ = {into: new yy.FuncValue({funcid: x4, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
- }
-
-break;
-case 169:
- this.$ = { from: $$[$0] };
-break;
-case 170:
- this.$ = { from: $$[$0-1], joins: $$[$0] };
-break;
-case 171:
- this.$ = { from: $$[$0-2], joins: $$[$0-1] };
-break;
-case 173:
- this.$ = new yy.Apply({select: $$[$0-2], applymode:'CROSS', as:$$[$0]});
-break;
-case 174:
- this.$ = new yy.Apply({select: $$[$0-3], applymode:'CROSS', as:$$[$0]});
-break;
-case 175:
- this.$ = new yy.Apply({select: $$[$0-2], applymode:'OUTER', as:$$[$0]});
-break;
-case 176:
- this.$ = new yy.Apply({select: $$[$0-3], applymode:'OUTER', as:$$[$0]});
-break;
-case 178: case 243: case 452: case 530: case 531:
- this.$ = $$[$0-2]; $$[$0-2].push($$[$0]);
-break;
-case 179:
- this.$ = $$[$0-2]; this.$.as = $$[$0]
-break;
-case 180:
- this.$ = $$[$0-3]; this.$.as = $$[$0]
-break;
-case 181:
- this.$ = $$[$0-1]; this.$.as = 'default'
-break;
-case 182:
- this.$ = new yy.Json({value:$$[$0-2]}); $$[$0-2].as = $$[$0]
-break;
-case 183:
- this.$ = $$[$0-1]; $$[$0-1].as = $$[$0]
-break;
-case 184:
- this.$ = $$[$0-2]; $$[$0-2].as = $$[$0]
-break;
-case 186: case 638: case 641:
- this.$ = $$[$0-2];
-break;
-case 187: case 191: case 195: case 198:
- this.$ = $$[$0-1]; $$[$0-1].as = $$[$0];
-break;
-case 188: case 192: case 196: case 199:
- this.$ = $$[$0-2]; $$[$0-2].as = $$[$0];
-break;
-case 189: case 190: case 194: case 197:
- this.$ = $$[$0]; $$[$0].as = 'default';
-break;
-case 193:
- this.$ = {inserted:true}; /*$$[$0].as = 'default'*/;
-break;
-case 200:
-
- var s = $$[$0];
- s = s.substr(1,s.length-2);
- var x3 = s.substr(-3).toUpperCase();
- var x4 = s.substr(-4).toUpperCase();
- var r;
- if(s[0] == '#') {
- r = new yy.FuncValue({funcid: 'HTML', args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
- } else if(x3=='XLS' || x3 == 'CSV' || x3=='TAB') {
- r = new yy.FuncValue({funcid: x3, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
- } else if(x4=='XLSX' || x4 == 'JSON') {
- r = new yy.FuncValue({funcid: x4, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
- } else {
- throw new Error('Unknown string in FROM clause');
- };
- this.$ = r;
-
-break;
-case 201:
-
- if($$[$0-2] == 'INFORMATION_SCHEMA') {
- this.$ = new yy.FuncValue({funcid: $$[$0-2], args:[new yy.StringValue({value:$$[$0]})]});
- } else {
- this.$ = new yy.Table({databaseid: $$[$0-2], tableid:$$[$0]});
- }
-
-break;
-case 202:
- this.$ = new yy.Table({tableid: $$[$0]});
-break;
-case 203: case 204:
- this.$ = $$[$0-1]; $$[$0-1].push($$[$0]);
-break;
-case 207:
- this.$ = new yy.Join($$[$0-2]); yy.extend(this.$, $$[$0-1]); yy.extend(this.$, $$[$0]);
-break;
-case 208:
- this.$ = {table: $$[$0]};
-break;
-case 209:
- this.$ = {table: $$[$0-1], as: $$[$0] } ;
-break;
-case 210:
- this.$ = {table: $$[$0-2], as: $$[$0] } ;
-break;
-case 211:
- this.$ = {json:new yy.Json({value:$$[$0-2],as:$$[$0]})};
-break;
-case 212:
- this.$ = {param: $$[$0-1], as: $$[$0] } ;
-break;
-case 213:
- this.$ = {param: $$[$0-2], as: $$[$0] } ;
-break;
-case 214:
- this.$ = {select: $$[$0-2], as: $$[$0]} ;
-break;
-case 215:
- this.$ = {select: $$[$0-3], as: $$[$0] } ;
-break;
-case 216:
- this.$ = {func:$$[$0], as:'default'};
-break;
-case 217:
- this.$ = {func:$$[$0-1], as: $$[$0]};
-break;
-case 218:
- this.$ = {func:$$[$0-2], as: $$[$0]};
-break;
-case 219:
- this.$ = {variable:$$[$0],as:'default'};
-break;
-case 220:
- this.$ = {variable:$$[$0-1],as:$$[$0]};
-break;
-case 221:
- this.$ = {variable:$$[$0-2],as:$$[$0]}
-break;
-case 222:
- this.$ = { joinmode: $$[$0] } ;
-break;
-case 223:
- this.$ = {joinmode: $$[$0-1], natural:true} ;
-break;
-case 224: case 225:
- this.$ = "INNER";
-break;
-case 226: case 227:
- this.$ = "LEFT";
-break;
-case 228: case 229:
- this.$ = "RIGHT";
-break;
-case 230: case 231:
- this.$ = "OUTER";
-break;
-case 232:
- this.$ = "SEMI";
-break;
-case 233:
- this.$ = "ANTI";
-break;
-case 234:
- this.$ = "CROSS";
-break;
-case 235:
- this.$ = {on: $$[$0]};
-break;
-case 236: case 697:
- this.$ = {using: $$[$0]};
-break;
-case 239:
- this.$ = {where: new yy.Expression({expression:$$[$0]})};
-break;
-case 241:
- this.$ = {group:$$[$0-1]}; yy.extend(this.$,$$[$0]);
-break;
-case 244:
- this.$ = new yy.GroupExpression({type:'GROUPING SETS', group: $$[$0-1]});
-break;
-case 245:
- this.$ = new yy.GroupExpression({type:'ROLLUP', group: $$[$0-1]});
-break;
-case 246:
- this.$ = new yy.GroupExpression({type:'CUBE', group: $$[$0-1]});
-break;
-case 249:
- this.$ = {having:$$[$0]}
-break;
-case 251:
- this.$ = {union: $$[$0]} ;
-break;
-case 252:
- this.$ = {unionall: $$[$0]} ;
-break;
-case 253:
- this.$ = {except: $$[$0]} ;
-break;
-case 254:
- this.$ = {intersect: $$[$0]} ;
-break;
-case 255:
- this.$ = {union: $$[$0], corresponding:true} ;
-break;
-case 256:
- this.$ = {unionall: $$[$0], corresponding:true} ;
-break;
-case 257:
- this.$ = {except: $$[$0], corresponding:true} ;
-break;
-case 258:
- this.$ = {intersect: $$[$0], corresponding:true} ;
-break;
-case 260:
- this.$ = {order:$$[$0]}
-break;
-case 262:
- this.$ = $$[$0-2]; $$[$0-2].push($$[$0])
-break;
-case 263:
- this.$ = new yy.Expression({expression: $$[$0], direction:'ASC'})
-break;
-case 264:
- this.$ = new yy.Expression({expression: $$[$0-1], direction:$$[$0].toUpperCase()})
-break;
-case 265:
- this.$ = new yy.Expression({expression: $$[$0-2], direction:'ASC', nocase:true})
-break;
-case 266:
- this.$ = new yy.Expression({expression: $$[$0-3], direction:$$[$0].toUpperCase(), nocase:true})
-break;
-case 268:
- this.$ = {limit:$$[$0-1]}; yy.extend(this.$, $$[$0]);
-break;
-case 269:
- this.$ = {limit:$$[$0-2],offset:$$[$0-6]};
-break;
-case 271:
- this.$ = {offset:$$[$0]};
-break;
-case 272: case 509: case 533: case 648: case 658: case 682: case 684: case 688:
- $$[$0-2].push($$[$0]); this.$ = $$[$0-2];
-break;
-case 274: case 276: case 278:
- $$[$0-2].as = $$[$0]; this.$ = $$[$0-2];
-break;
-case 275: case 277: case 279:
- $$[$0-1].as = $$[$0]; this.$ = $$[$0-1];
-break;
-case 281:
- this.$ = new yy.Column({columid: $$[$0], tableid: $$[$0-2], databaseid:$$[$0-4]});
-break;
-case 282:
- this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2]});
-break;
-case 283:
- this.$ = new yy.Column({columnid:$$[$0]});
-break;
-case 284:
- this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2], databaseid:$$[$0-4]});
-break;
-case 285: case 286:
- this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2]});
-break;
-case 287:
- this.$ = new yy.Column({columnid: $$[$0]});
-break;
-case 302:
- this.$ = new yy.DomainValueValue();
-break;
-case 303:
- this.$ = new yy.Json({value:$$[$0]});
-break;
-case 306: case 307: case 308:
-
- if(!yy.queries) yy.queries = [];
- yy.queries.push($$[$0-1]);
- $$[$0-1].queriesidx = yy.queries.length;
- this.$ = $$[$0-1];
-
-break;
-case 309:
-this.$ = $$[$0]
-break;
-case 310:
- this.$ = new yy.FuncValue({funcid:'CURRENT_TIMESTAMP'});
-break;
-case 311:
- this.$ = new yy.JavaScript({value:$$[$0].substr(2,$$[$0].length-4)});
-break;
-case 312:
- this.$ = new yy.JavaScript({value:'alasql.fn["'+$$[$0-2]+'"] = '+$$[$0].substr(2,$$[$0].length-4)});
-break;
-case 313:
- this.$ = new yy.JavaScript({value:'alasql.aggr["'+$$[$0-2]+'"] = '+$$[$0].substr(2,$$[$0].length-4)});
-break;
-case 314:
- this.$ = new yy.FuncValue({funcid:$$[$0], newid:true});
-break;
-case 315:
- this.$ = $$[$0]; yy.extend(this.$,{newid:true});
-break;
-case 316:
- this.$ = new yy.Convert({expression:$$[$0-3]}) ; yy.extend(this.$,$$[$0-1]) ;
-break;
-case 317:
- this.$ = new yy.Convert({expression:$$[$0-5], style:$$[$0-1]}) ; yy.extend(this.$,$$[$0-3]) ;
-break;
-case 318:
- this.$ = new yy.Convert({expression:$$[$0-1]}) ; yy.extend(this.$,$$[$0-3]) ;
-break;
-case 319:
- this.$ = new yy.Convert({expression:$$[$0-3], style:$$[$0-1]}) ; yy.extend(this.$,$$[$0-5]) ;
-break;
-case 326:
- this.$ = new yy.FuncValue({funcid:'CURRENT_TIMESTAMP'});
-break;
-case 327:
-
- if($$[$0-2].length > 1 && ($$[$0-4].toUpperCase() == 'MAX' || $$[$0-4].toUpperCase() == 'MIN')) {
- this.$ = new yy.FuncValue({funcid:$$[$0-4],args:$$[$0-2]});
- } else {
- this.$ = new yy.AggrValue({aggregatorid: $$[$0-4].toUpperCase(), expression: $$[$0-2].pop(), over:$$[$0]});
- }
-
-break;
-case 328:
- this.$ = new yy.AggrValue({aggregatorid: $$[$0-5].toUpperCase(), expression: $$[$0-2], distinct:true, over:$$[$0]});
-break;
-case 329:
- this.$ = new yy.AggrValue({aggregatorid: $$[$0-5].toUpperCase(), expression: $$[$0-2],
- over:$$[$0]});
-break;
-case 331: case 332:
- this.$ = new yy.Over(); yy.extend(this.$,$$[$0-1]);
-break;
-case 333:
- this.$ = new yy.Over(); yy.extend(this.$,$$[$0-2]); yy.extend(this.$,$$[$0-1]);
-break;
-case 334:
- this.$ = {partition:$$[$0]};
-break;
-case 335:
- this.$ = {order:$$[$0]};
-break;
-case 336:
- this.$ = "SUM";
-break;
-case 337:
- this.$ = "COUNT";
-break;
-case 338:
- this.$ = "MIN";
-break;
-case 339: case 544:
- this.$ = "MAX";
-break;
-case 340:
- this.$ = "AVG";
-break;
-case 341:
- this.$ = "FIRST";
-break;
-case 342:
- this.$ = "LAST";
-break;
-case 343:
- this.$ = "AGGR";
-break;
-case 344:
- this.$ = "ARRAY";
-break;
-case 345:
-
- var funcid = $$[$0-4];
- var exprlist = $$[$0-1];
- if(exprlist.length > 1 && (funcid.toUpperCase() == 'MIN' || funcid.toUpperCase() == 'MAX')) {
- this.$ = new yy.FuncValue({funcid: funcid, args: exprlist});
- } else if(alasql.aggr[$$[$0-4]]) {
- this.$ = new yy.AggrValue({aggregatorid: 'REDUCE',
- funcid: funcid, expression: exprlist.pop(),distinct:($$[$0-2]=='DISTINCT') });
- } else {
- this.$ = new yy.FuncValue({funcid: funcid, args: exprlist});
- };
-
-break;
-case 346:
- this.$ = new yy.FuncValue({ funcid: $$[$0-2] })
-break;
-case 347:
- this.$ = new yy.FuncValue({ funcid: 'IIF', args:$$[$0-1] })
-break;
-case 348:
- this.$ = new yy.FuncValue({ funcid: 'REPLACE', args:$$[$0-1] })
-break;
-case 349:
- this.$ = new yy.FuncValue({ funcid: 'DATEADD', args:[new yy.StringValue({value:$$[$0-5]}),$$[$0-3],$$[$0-1]]})
-break;
-case 350:
- this.$ = new yy.FuncValue({ funcid: 'DATEADD', args:[$$[$0-5],$$[$0-3],$$[$0-1]]})
-break;
-case 351:
- this.$ = new yy.FuncValue({ funcid: 'DATEDIFF', args:[new yy.StringValue({value:$$[$0-5]}),$$[$0-3],$$[$0-1]]})
-break;
-case 352:
- this.$ = new yy.FuncValue({ funcid: 'DATEDIFF', args:[$$[$0-5],$$[$0-3],$$[$0-1]]})
-break;
-case 353:
- this.$ = new yy.FuncValue({ funcid: 'INTERVAL', args:[$$[$0-1],new yy.StringValue({value:($$[$0]).toLowerCase()})]});
-break;
-case 355:
- $$[$0-2].push($$[$0]); this.$ = $$[$0-2]
-break;
-case 356:
- this.$ = new yy.NumValue({value:+$$[$0]});
-break;
-case 357:
- this.$ = new yy.LogicValue({value:true});
-break;
-case 358:
- this.$ = new yy.LogicValue({value:false});
-break;
-case 359:
- this.$ = new yy.StringValue({value: $$[$0].substr(1,$$[$0].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});
-break;
-case 360:
- this.$ = new yy.StringValue({value: $$[$0].substr(2,$$[$0].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});
-break;
-case 361:
- this.$ = new yy.NullValue({value:undefined});
-break;
-case 362:
- this.$ = new yy.VarValue({variable:$$[$0]});
-break;
-case 363:
-
- if(!yy.exists) yy.exists = [];
- this.$ = new yy.ExistsValue({value:$$[$0-1], existsidx:yy.exists.length});
- yy.exists.push($$[$0-1]);
-
-break;
-case 364:
- this.$ = new yy.ArrayValue({value:$$[$0-1]});
-break;
-case 365: case 366:
- this.$ = new yy.ParamValue({param: $$[$0]});
-break;
-case 367:
-
- if(typeof yy.question == 'undefined') yy.question = 0;
- this.$ = new yy.ParamValue({param: yy.question++});
-
-break;
-case 368:
-
- if(typeof yy.question == 'undefined') yy.question = 0;
- this.$ = new yy.ParamValue({param: yy.question++, array:true});
-
-break;
-case 369:
- this.$ = new yy.CaseValue({expression:$$[$0-3], whens: $$[$0-2], elses: $$[$0-1]});
-break;
-case 370:
- this.$ = new yy.CaseValue({whens: $$[$0-2], elses: $$[$0-1]});
-break;
-case 371: case 699: case 700:
- this.$ = $$[$0-1]; this.$.push($$[$0]);
-break;
-case 373:
- this.$ = {when: $$[$0-2], then: $$[$0] };
-break;
-case 376: case 377:
- this.$ = new yy.Op({left:$$[$0-2], op:'REGEXP', right:$$[$0]});
-break;
-case 378:
- this.$ = new yy.Op({left:$$[$0-2], op:'GLOB', right:$$[$0]});
-break;
-case 379:
- this.$ = new yy.Op({left:$$[$0-2], op:'LIKE', right:$$[$0]});
-break;
-case 380:
- this.$ = new yy.Op({left:$$[$0-4], op:'LIKE', right:$$[$0-2], escape:$$[$0]});
-break;
-case 381:
- this.$ = new yy.Op({left:$$[$0-2], op:'NOT LIKE', right:$$[$0] });
-break;
-case 382:
- this.$ = new yy.Op({left:$$[$0-4], op:'NOT LIKE', right:$$[$0-2], escape:$$[$0] });
-break;
-case 383:
- this.$ = new yy.Op({left:$$[$0-2], op:'||', right:$$[$0]});
-break;
-case 384:
- this.$ = new yy.Op({left:$$[$0-2], op:'+', right:$$[$0]});
-break;
-case 385:
- this.$ = new yy.Op({left:$$[$0-2], op:'-', right:$$[$0]});
-break;
-case 386:
- this.$ = new yy.Op({left:$$[$0-2], op:'*', right:$$[$0]});
-break;
-case 387:
- this.$ = new yy.Op({left:$$[$0-2], op:'/', right:$$[$0]});
-break;
-case 388:
- this.$ = new yy.Op({left:$$[$0-2], op:'%', right:$$[$0]});
-break;
-case 389:
- this.$ = new yy.Op({left:$$[$0-2], op:'^', right:$$[$0]});
-break;
-case 390:
- this.$ = new yy.Op({left:$$[$0-2], op:'>>', right:$$[$0]});
-break;
-case 391:
- this.$ = new yy.Op({left:$$[$0-2], op:'<<', right:$$[$0]});
-break;
-case 392:
- this.$ = new yy.Op({left:$$[$0-2], op:'&', right:$$[$0]});
-break;
-case 393:
- this.$ = new yy.Op({left:$$[$0-2], op:'|', right:$$[$0]});
-break;
-case 394: case 395: case 397:
- this.$ = new yy.Op({left:$$[$0-2], op:'->' , right:$$[$0]});
-break;
-case 396:
- this.$ = new yy.Op({left:$$[$0-4], op:'->' , right:$$[$0-1]});
-break;
-case 398: case 399: case 401:
- this.$ = new yy.Op({left:$$[$0-2], op:'!' , right:$$[$0]});
-break;
-case 400:
- this.$ = new yy.Op({left:$$[$0-4], op:'!' , right:$$[$0-1]});
-break;
-case 402:
- this.$ = new yy.Op({left:$$[$0-2], op:'>' , right:$$[$0]});
-break;
-case 403:
- this.$ = new yy.Op({left:$$[$0-2], op:'>=' , right:$$[$0]});
-break;
-case 404:
- this.$ = new yy.Op({left:$$[$0-2], op:'<' , right:$$[$0]});
-break;
-case 405:
- this.$ = new yy.Op({left:$$[$0-2], op:'<=' , right:$$[$0]});
-break;
-case 406:
- this.$ = new yy.Op({left:$$[$0-2], op:'=' , right:$$[$0]});
-break;
-case 407:
- this.$ = new yy.Op({left:$$[$0-2], op:'==' , right:$$[$0]});
-break;
-case 408:
- this.$ = new yy.Op({left:$$[$0-2], op:'===' , right:$$[$0]});
-break;
-case 409:
- this.$ = new yy.Op({left:$$[$0-2], op:'!=' , right:$$[$0]});
-break;
-case 410:
- this.$ = new yy.Op({left:$$[$0-2], op:'!==' , right:$$[$0]});
-break;
-case 411:
- this.$ = new yy.Op({left:$$[$0-2], op:'!===' , right:$$[$0]});
-break;
-case 412:
-
- if(!yy.queries) yy.queries = [];
- this.$ = new yy.Op({left:$$[$0-5], op:$$[$0-4] , allsome:$$[$0-3], right:$$[$0-1], queriesidx: yy.queries.length});
- yy.queries.push($$[$0-1]);
-
-break;
-case 413:
-
- this.$ = new yy.Op({left:$$[$0-5], op:$$[$0-4] , allsome:$$[$0-3], right:$$[$0-1]});
-
-break;
-case 414:
-
- if($$[$0-2].op == 'BETWEEN1') {
-
- if($$[$0-2].left.op == 'AND') {
- this.$ = new yy.Op({left:$$[$0-2].left.left,op:'AND',right:
- new yy.Op({left:$$[$0-2].left.right, op:'BETWEEN',
- right1:$$[$0-2].right, right2:$$[$0]})
- });
- } else {
- this.$ = new yy.Op({left:$$[$0-2].left, op:'BETWEEN',
- right1:$$[$0-2].right, right2:$$[$0]});
- }
-
- } else if($$[$0-2].op == 'NOT BETWEEN1') {
- if($$[$0-2].left.op == 'AND') {
- this.$ = new yy.Op({left:$$[$0-2].left.left,op:'AND',right:
- new yy.Op({left:$$[$0-2].left.right, op:'NOT BETWEEN',
- right1:$$[$0-2].right, right2:$$[$0]})
- });
- } else {
- this.$ = new yy.Op({left:$$[$0-2].left, op:'NOT BETWEEN',
- right1:$$[$0-2].right, right2:$$[$0]});
- }
- } else {
- this.$ = new yy.Op({left:$$[$0-2], op:'AND', right:$$[$0]});
- }
-
-break;
-case 415:
- this.$ = new yy.Op({left:$$[$0-2], op:'OR' , right:$$[$0]});
-break;
-case 416:
- this.$ = new yy.UniOp({op:'NOT' , right:$$[$0]});
-break;
-case 417:
- this.$ = new yy.UniOp({op:'-' , right:$$[$0]});
-break;
-case 418:
- this.$ = new yy.UniOp({op:'+' , right:$$[$0]});
-break;
-case 419:
- this.$ = new yy.UniOp({op:'~' , right:$$[$0]});
-break;
-case 420:
- this.$ = new yy.UniOp({op:'#' , right:$$[$0]});
-break;
-case 421:
- this.$ = new yy.UniOp({right: $$[$0-1]});
-break;
-case 422:
-
- if(!yy.queries) yy.queries = [];
- this.$ = new yy.Op({left: $$[$0-4], op:'IN', right:$$[$0-1], queriesidx: yy.queries.length});
- yy.queries.push($$[$0-1]);
-
-break;
-case 423:
-
- if(!yy.queries) yy.queries = [];
- this.$ = new yy.Op({left: $$[$0-5], op:'NOT IN', right:$$[$0-1], queriesidx: yy.queries.length});
- yy.queries.push($$[$0-1]);
-
-break;
-case 424:
- this.$ = new yy.Op({left: $$[$0-4], op:'IN', right:$$[$0-1]});
-break;
-case 425:
- this.$ = new yy.Op({left: $$[$0-5], op:'NOT IN', right:$$[$0-1]});
-break;
-case 426:
- this.$ = new yy.Op({left: $$[$0-3], op:'IN', right:[]});
-break;
-case 427:
- this.$ = new yy.Op({left: $$[$0-4], op:'NOT IN', right:[]});
-break;
-case 428: case 430:
- this.$ = new yy.Op({left: $$[$0-2], op:'IN', right:$$[$0]});
-break;
-case 429: case 431:
- this.$ = new yy.Op({left: $$[$0-3], op:'NOT IN', right:$$[$0]});
-break;
-case 432:
-
-/* var expr = $$[$0];
- if(expr.left && expr.left.op == 'AND') {
- this.$ = new yy.Op({left:new yy.Op({left:$$[$0-2], op:'BETWEEN', right:expr.left}), op:'AND', right:expr.right });
- } else {
-*/
- this.$ = new yy.Op({left:$$[$0-2], op:'BETWEEN1', right:$$[$0] });
-
-break;
-case 433:
-
- this.$ = new yy.Op({left:$$[$0-2], op:'NOT BETWEEN1', right:$$[$0] });
-
-break;
-case 434:
- this.$ = new yy.Op({op:'IS' , left:$$[$0-2], right:$$[$0]});
-break;
-case 435:
-
- this.$ = new yy.Op({
- op:'IS',
- left:$$[$0-2],
- right: new yy.UniOp({
- op:'NOT',
- right:new yy.NullValue({value:undefined})
- })
- });
-
-break;
-case 436:
- this.$ = new yy.Convert({expression:$$[$0-2]}) ; yy.extend(this.$,$$[$0]) ;
-break;
-case 437: case 438:
- this.$ = $$[$0];
-break;
-case 439:
- this.$ = $$[$0-1];
-break;
-case 446:
- this.$ = 'ALL';
-break;
-case 447:
- this.$ = 'SOME';
-break;
-case 448:
- this.$ = 'ANY';
-break;
-case 449:
- this.$ = new yy.Update({table:$$[$0-4], columns:$$[$0-2], where:$$[$0]});
-break;
-case 450:
- this.$ = new yy.Update({table:$$[$0-2], columns:$$[$0]});
-break;
-case 453:
- this.$ = new yy.SetColumn({column:$$[$0-2], expression:$$[$0]})
-break;
-case 454:
- this.$ = new yy.SetColumn({variable:$$[$0-2], expression:$$[$0], method:$$[$0-3]})
-break;
-case 455:
- this.$ = new yy.Delete({table:$$[$0-2], where:$$[$0]});
-break;
-case 456:
- this.$ = new yy.Delete({table:$$[$0]});
-break;
-case 457:
- this.$ = new yy.Insert({into:$$[$0-2], values: $$[$0]});
-break;
-case 458:
- this.$ = new yy.Insert({into:$$[$0-1], values: $$[$0]});
-break;
-case 459: case 461:
- this.$ = new yy.Insert({into:$$[$0-2], values: $$[$0], orreplace:true});
-break;
-case 460: case 462:
- this.$ = new yy.Insert({into:$$[$0-1], values: $$[$0], orreplace:true});
-break;
-case 463:
- this.$ = new yy.Insert({into:$$[$0-2], "default": true}) ;
-break;
-case 464:
- this.$ = new yy.Insert({into:$$[$0-5], columns: $$[$0-3], values: $$[$0]});
-break;
-case 465:
- this.$ = new yy.Insert({into:$$[$0-4], columns: $$[$0-2], values: $$[$0]});
-break;
-case 466:
- this.$ = new yy.Insert({into:$$[$0-1], select: $$[$0]});
-break;
-case 467:
- this.$ = new yy.Insert({into:$$[$0-1], select: $$[$0], orreplace:true});
-break;
-case 468:
- this.$ = new yy.Insert({into:$$[$0-4], columns: $$[$0-2], select: $$[$0]});
-break;
-case 473:
- this.$ = [$$[$0-1]];
-break;
-case 476:
-this.$ = $$[$0-4]; $$[$0-4].push($$[$0-1])
-break;
-case 477: case 478: case 480: case 488:
-this.$ = $$[$0-2]; $$[$0-2].push($$[$0])
-break;
-case 489:
-
- this.$ = new yy.CreateTable({table:$$[$0-4]});
- yy.extend(this.$,$$[$0-7]);
- yy.extend(this.$,$$[$0-6]);
- yy.extend(this.$,$$[$0-5]);
- yy.extend(this.$,$$[$0-2]);
- yy.extend(this.$,$$[$0]);
-
-break;
-case 490:
-
- this.$ = new yy.CreateTable({table:$$[$0]});
- yy.extend(this.$,$$[$0-3]);
- yy.extend(this.$,$$[$0-2]);
- yy.extend(this.$,$$[$0-1]);
-
-break;
-case 492:
- this.$ = {"class":true};
-break;
-case 502:
- this.$ = {temporary:true};
-break;
-case 504:
- this.$ = {ifnotexists: true};
-break;
-case 505:
- this.$ = {columns: $$[$0-2], constraints: $$[$0]};
-break;
-case 506:
- this.$ = {columns: $$[$0]};
-break;
-case 507:
- this.$ = {as: $$[$0]}
-break;
-case 508: case 532:
- this.$ = [$$[$0]];
-break;
-case 510: case 511: case 512: case 513: case 514:
- $$[$0].constraintid = $$[$0-1]; this.$ = $$[$0];
-break;
-case 517:
- this.$ = {type: 'CHECK', expression: $$[$0-1]};
-break;
-case 518:
- this.$ = {type: 'PRIMARY KEY', columns: $$[$0-1], clustered:($$[$0-3]+'').toUpperCase()};
-break;
-case 519:
- this.$ = {type: 'FOREIGN KEY', columns: $$[$0-5], fktable: $$[$0-2], fkcolumns: $$[$0-1]};
-break;
-case 525:
-
- this.$ = {type: 'UNIQUE', columns: $$[$0-1], clustered:($$[$0-3]+'').toUpperCase()};
-
-break;
-case 534:
- this.$ = new yy.ColumnDef({columnid:$$[$0-2]}); yy.extend(this.$,$$[$0-1]); yy.extend(this.$,$$[$0]);
-break;
-case 535:
- this.$ = new yy.ColumnDef({columnid:$$[$0-1]}); yy.extend(this.$,$$[$0]);
-break;
-case 536:
- this.$ = new yy.ColumnDef({columnid:$$[$0], dbtypeid: ''});
-break;
-case 537:
- this.$ = {dbtypeid: $$[$0-5], dbsize: $$[$0-3], dbprecision: +$$[$0-1]}
-break;
-case 538:
- this.$ = {dbtypeid: $$[$0-3], dbsize: $$[$0-1]}
-break;
-case 539:
- this.$ = {dbtypeid: $$[$0]}
-break;
-case 540:
- this.$ = {dbtypeid: 'ENUM', enumvalues: $$[$0-1]}
-break;
-case 541:
- this.$ = $$[$0-1]; $$[$0-1].dbtypeid += '[' + $$[$0] + ']';
-break;
-case 543: case 750:
- this.$ = +$$[$0];
-break;
-case 545:
-this.$ = undefined
-break;
-case 547:
-
- yy.extend($$[$0-1],$$[$0]); this.$ = $$[$0-1];
-
-break;
-case 550:
-this.$ = {primarykey:true};
-break;
-case 551: case 552:
-this.$ = {foreignkey:{table:$$[$0-1], columnid: $$[$0]}};
-break;
-case 553:
- this.$ = {identity: {value:$$[$0-3],step:$$[$0-1]}}
-break;
-case 554:
- this.$ = {identity: {value:1,step:1}}
-break;
-case 555: case 557:
-this.$ = {"default":$$[$0]};
-break;
-case 556:
-this.$ = {"default":$$[$0-1]};
-break;
-case 558:
-this.$ = {"null":true};
-break;
-case 559:
-this.$ = {notnull:true};
-break;
-case 560:
-this.$ = {check:$$[$0]};
-break;
-case 561:
-this.$ = {unique:true};
-break;
-case 562:
-this.$ = {"onupdate":$$[$0]};
-break;
-case 563:
-this.$ = {"onupdate":$$[$0-1]};
-break;
-case 564:
- this.$ = new yy.DropTable({tables:$$[$0],type:$$[$0-2]}); yy.extend(this.$, $$[$0-1]);
-break;
-case 568:
- this.$ = {ifexists: true};
-break;
-case 569:
- this.$ = new yy.AlterTable({table:$$[$0-3], renameto: $$[$0]});
-break;
-case 570:
- this.$ = new yy.AlterTable({table:$$[$0-3], addcolumn: $$[$0]});
-break;
-case 571:
- this.$ = new yy.AlterTable({table:$$[$0-3], modifycolumn: $$[$0]});
-break;
-case 572:
- this.$ = new yy.AlterTable({table:$$[$0-5], renamecolumn: $$[$0-2], to: $$[$0]});
-break;
-case 573:
- this.$ = new yy.AlterTable({table:$$[$0-3], dropcolumn: $$[$0]});
-break;
-case 574:
- this.$ = new yy.AlterTable({table:$$[$0-2], renameto: $$[$0]});
-break;
-case 575:
- this.$ = new yy.AttachDatabase({databaseid:$$[$0], engineid:$$[$0-2].toUpperCase() });
-break;
-case 576:
- this.$ = new yy.AttachDatabase({databaseid:$$[$0-3], engineid:$$[$0-5].toUpperCase(), args:$$[$0-1] });
-break;
-case 577:
- this.$ = new yy.AttachDatabase({databaseid:$$[$0-2], engineid:$$[$0-4].toUpperCase(), as:$$[$0] });
-break;
-case 578:
- this.$ = new yy.AttachDatabase({databaseid:$$[$0-5], engineid:$$[$0-7].toUpperCase(), as:$$[$0], args:$$[$0-3]});
-break;
-case 579:
- this.$ = new yy.DetachDatabase({databaseid:$$[$0]});
-break;
-case 580:
- this.$ = new yy.CreateDatabase({databaseid:$$[$0] }); yy.extend(this.$,$$[$0]);
-break;
-case 581:
- this.$ = new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(), databaseid:$$[$0-1], as:$$[$0] }); yy.extend(this.$,$$[$0-2]);
-break;
-case 582:
- this.$ = new yy.CreateDatabase({engineid:$$[$0-7].toUpperCase(), databaseid:$$[$0-4], args:$$[$0-2], as:$$[$0] }); yy.extend(this.$,$$[$0-5]);
-break;
-case 583:
- this.$ = new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),
- as:$$[$0], args:[$$[$0-1]] }); yy.extend(this.$,$$[$0-2]);
-break;
-case 584:
-this.$ = undefined;
-break;
-case 586: case 587:
- this.$ = new yy.UseDatabase({databaseid: $$[$0] });
-break;
-case 588:
- this.$ = new yy.DropDatabase({databaseid: $$[$0] }); yy.extend(this.$,$$[$0-1]);
-break;
-case 589: case 590:
- this.$ = new yy.DropDatabase({databaseid: $$[$0], engineid:$$[$0-3].toUpperCase() }); yy.extend(this.$,$$[$0-1]);
-break;
-case 591:
- this.$ = new yy.CreateIndex({indexid:$$[$0-5], table:$$[$0-3], columns:$$[$0-1]})
-break;
-case 592:
- this.$ = new yy.CreateIndex({indexid:$$[$0-5], table:$$[$0-3], columns:$$[$0-1], unique:true})
-break;
-case 593:
- this.$ = new yy.DropIndex({indexid:$$[$0]});
-break;
-case 594:
- this.$ = new yy.ShowDatabases();
-break;
-case 595:
- this.$ = new yy.ShowDatabases({like:$$[$0]});
-break;
-case 596:
- this.$ = new yy.ShowDatabases({engineid:$$[$0-1].toUpperCase() });
-break;
-case 597:
- this.$ = new yy.ShowDatabases({engineid:$$[$0-3].toUpperCase() , like:$$[$0]});
-break;
-case 598:
- this.$ = new yy.ShowTables();
-break;
-case 599:
- this.$ = new yy.ShowTables({like:$$[$0]});
-break;
-case 600:
- this.$ = new yy.ShowTables({databaseid: $$[$0]});
-break;
-case 601:
- this.$ = new yy.ShowTables({like:$$[$0], databaseid: $$[$0-2]});
-break;
-case 602:
- this.$ = new yy.ShowColumns({table: $$[$0]});
-break;
-case 603:
- this.$ = new yy.ShowColumns({table: $$[$0-2], databaseid:$$[$0]});
-break;
-case 604:
- this.$ = new yy.ShowIndex({table: $$[$0]});
-break;
-case 605:
- this.$ = new yy.ShowIndex({table: $$[$0-2], databaseid: $$[$0]});
-break;
-case 606:
- this.$ = new yy.ShowCreateTable({table: $$[$0]});
-break;
-case 607:
- this.$ = new yy.ShowCreateTable({table: $$[$0-2], databaseid:$$[$0]});
-break;
-case 608:
-
- this.$ = new yy.CreateTable({table:$$[$0-6],view:true,select:$$[$0-1],viewcolumns:$$[$0-4]});
- yy.extend(this.$,$$[$0-9]);
- yy.extend(this.$,$$[$0-7]);
-
-break;
-case 609:
-
- this.$ = new yy.CreateTable({table:$$[$0-3],view:true,select:$$[$0-1]});
- yy.extend(this.$,$$[$0-6]);
- yy.extend(this.$,$$[$0-4]);
-
-break;
-case 613:
- this.$ = new yy.DropTable({tables:$$[$0], view:true}); yy.extend(this.$, $$[$0-1]);
-break;
-case 614: case 760:
- this.$ = new yy.ExpressionStatement({expression:$$[$0]});
-break;
-case 615:
- this.$ = new yy.Source({url:$$[$0].value});
-break;
-case 616:
- this.$ = new yy.Assert({value:$$[$0]});
-break;
-case 617:
- this.$ = new yy.Assert({value:$$[$0].value});
-break;
-case 618:
- this.$ = new yy.Assert({value:$$[$0], message:$$[$0-2]});
-break;
-case 620: case 631: case 633:
- this.$ = $$[$0].value;
-break;
-case 621: case 629:
- this.$ = +$$[$0].value;
-break;
-case 622:
- this.$ = (!!$$[$0].value);
-break;
-case 630:
- this.$ = ""+$$[$0].value;
-break;
-case 639:
- this.$ = {};
-break;
-case 642:
- this.$ = [];
-break;
-case 643:
- yy.extend($$[$0-2],$$[$0]); this.$ = $$[$0-2];
-break;
-case 645:
- this.$ = {}; this.$[$$[$0-2].substr(1,$$[$0-2].length-2)] = $$[$0];
-break;
-case 646: case 647:
- this.$ = {}; this.$[$$[$0-2]] = $$[$0];
-break;
-case 650:
- this.$ = new yy.SetVariable({variable:$$[$0-2].toLowerCase(), value:$$[$0]});
-break;
-case 651:
- this.$ = new yy.SetVariable({variable:$$[$0-1].toLowerCase(), value:$$[$0]});
-break;
-case 652:
- this.$ = new yy.SetVariable({variable:$$[$0-2], expression:$$[$0]});
-break;
-case 653:
- this.$ = new yy.SetVariable({variable:$$[$0-3], props: $$[$0-2], expression:$$[$0]});
-break;
-case 654:
- this.$ = new yy.SetVariable({variable:$$[$0-2], expression:$$[$0], method:$$[$0-3]});
-break;
-case 655:
- this.$ = new yy.SetVariable({variable:$$[$0-3], props: $$[$0-2], expression:$$[$0], method:$$[$0-4]});
-break;
-case 656:
-this.$ = '@';
-break;
-case 657:
-this.$ = '$';
-break;
-case 663:
- this.$ = true;
-break;
-case 664:
- this.$ = false;
-break;
-case 665:
- this.$ = new yy.CommitTransaction();
-break;
-case 666:
- this.$ = new yy.RollbackTransaction();
-break;
-case 667:
- this.$ = new yy.BeginTransaction();
-break;
-case 668:
- this.$ = new yy.If({expression:$$[$0-2],thenstat:$$[$0-1], elsestat:$$[$0]});
- if($$[$0-1].exists) this.$.exists = $$[$0-1].exists;
- if($$[$0-1].queries) this.$.queries = $$[$0-1].queries;
-
-break;
-case 669:
-
- this.$ = new yy.If({expression:$$[$0-1],thenstat:$$[$0]});
- if($$[$0].exists) this.$.exists = $$[$0].exists;
- if($$[$0].queries) this.$.queries = $$[$0].queries;
-
-break;
-case 670:
-this.$ = $$[$0];
-break;
-case 671:
- this.$ = new yy.While({expression:$$[$0-1],loopstat:$$[$0]});
- if($$[$0].exists) this.$.exists = $$[$0].exists;
- if($$[$0].queries) this.$.queries = $$[$0].queries;
-
-break;
-case 672:
- this.$ = new yy.Continue();
-break;
-case 673:
- this.$ = new yy.Break();
-break;
-case 674:
- this.$ = new yy.BeginEnd({statements:$$[$0-1]});
-break;
-case 675:
- this.$ = new yy.Print({exprs:$$[$0]});
-break;
-case 676:
- this.$ = new yy.Print({select:$$[$0]});
-break;
-case 677:
- this.$ = new yy.Require({paths:$$[$0]});
-break;
-case 678:
- this.$ = new yy.Require({plugins:$$[$0]});
-break;
-case 679: case 680:
-this.$ = $$[$0].toUpperCase();
-break;
-case 681:
- this.$ = new yy.Echo({expr:$$[$0]});
-break;
-case 686:
- this.$ = new yy.Declare({declares:$$[$0]});
-break;
-case 689:
- this.$ = {variable: $$[$0-1]}; yy.extend(this.$,$$[$0]);
-break;
-case 690:
- this.$ = {variable: $$[$0-2]}; yy.extend(this.$,$$[$0]);
-break;
-case 691:
- this.$ = {variable: $$[$0-3], expression:$$[$0]}; yy.extend(this.$,$$[$0-2]);
-break;
-case 692:
- this.$ = {variable: $$[$0-4], expression:$$[$0]}; yy.extend(this.$,$$[$0-2]);
-break;
-case 693:
- this.$ = new yy.TruncateTable({table:$$[$0]});
-break;
-case 694:
-
- this.$ = new yy.Merge(); yy.extend(this.$,$$[$0-4]); yy.extend(this.$,$$[$0-3]);
- yy.extend(this.$,$$[$0-2]);
- yy.extend(this.$,{matches:$$[$0-1]});yy.extend(this.$,$$[$0]);
-
-break;
-case 695: case 696:
- this.$ = {into: $$[$0]};
-break;
-case 698:
- this.$ = {on:$$[$0]};
-break;
-case 703:
- this.$ = {matched:true, action:$$[$0]}
-break;
-case 704:
- this.$ = {matched:true, expr: $$[$0-2], action:$$[$0]}
-break;
-case 705:
- this.$ = {"delete":true};
-break;
-case 706:
- this.$ = {update:$$[$0]};
-break;
-case 707: case 708:
- this.$ = {matched:false, bytarget: true, action:$$[$0]}
-break;
-case 709: case 710:
- this.$ = {matched:false, bytarget: true, expr:$$[$0-2], action:$$[$0]}
-break;
-case 711:
- this.$ = {matched:false, bysource: true, action:$$[$0]}
-break;
-case 712:
- this.$ = {matched:false, bysource: true, expr:$$[$0-2], action:$$[$0]}
-break;
-case 713:
- this.$ = {insert:true, values:$$[$0]};
-break;
-case 714:
- this.$ = {insert:true, values:$$[$0], columns:$$[$0-3]};
-break;
-case 715:
- this.$ = {insert:true, defaultvalues:true};
-break;
-case 716:
- this.$ = {insert:true, defaultvalues:true, columns:$$[$0-3]};
-break;
-case 718:
- this.$ = {output:{columns:$$[$0]}}
-break;
-case 719:
- this.$ = {output:{columns:$$[$0-3], intovar: $$[$0], method:$$[$0-1]}}
-break;
-case 720:
- this.$ = {output:{columns:$$[$0-2], intotable: $$[$0]}}
-break;
-case 721:
- this.$ = {output:{columns:$$[$0-5], intotable: $$[$0-3], intocolumns:$$[$0-1]}}
-break;
-case 722:
-
- this.$ = new yy.CreateVertex({"class":$$[$0-3],sharp:$$[$0-2], name:$$[$0-1]});
- yy.extend(this.$,$$[$0]);
-
-break;
-case 725:
- this.$ = {sets:$$[$0]};
-break;
-case 726:
- this.$ = {content:$$[$0]};
-break;
-case 727:
- this.$ = {select:$$[$0]};
-break;
-case 728:
-
- this.$ = new yy.CreateEdge({from:$$[$0-3],to:$$[$0-1],name:$$[$0-5]});
- yy.extend(this.$,$$[$0]);
-
-break;
-case 729:
- this.$ = new yy.CreateGraph({graph:$$[$0]});
-break;
-case 730:
- this.$ = new yy.CreateGraph({from:$$[$0]});
-break;
-case 733:
-
- this.$ = $$[$0-2];
- if($$[$0-1]) this.$.json = new yy.Json({value:$$[$0-1]});
- if($$[$0]) this.$.as = $$[$0];
-
-break;
-case 734:
-
- this.$ = {source:$$[$0-6], target: $$[$0]};
- if($$[$0-3]) this.$.json = new yy.Json({value:$$[$0-3]});
- if($$[$0-2]) this.$.as = $$[$0-2];
- yy.extend(this.$,$$[$0-4]);
-
-break;
-case 735:
-
- this.$ = {source:$$[$0-5], target: $$[$0]};
- if($$[$0-2]) this.$.json = new yy.Json({value:$$[$0-3]});
- if($$[$0-1]) this.$.as = $$[$0-2];
-
-break;
-case 736:
-
- this.$ = {source:$$[$0-2], target: $$[$0]};
-
-break;
-case 740:
- this.$ = {vars:$$[$0], method:$$[$0-1]};
-break;
-case 743: case 744:
-
- var s3 = $$[$0-1];
- this.$ = {prop:$$[$0-3], sharp:$$[$0-2], name:(typeof s3 == 'undefined')?undefined:s3.substr(1,s3.length-2), "class":$$[$0]};
-
-break;
-case 745:
-
- var s2 = $$[$0-1];
- this.$ = {sharp:$$[$0-2], name:(typeof s2 == 'undefined')?undefined:s2.substr(1,s2.length-2), "class":$$[$0]};
-
-break;
-case 746:
-
- var s1 = $$[$0-1];
- this.$ = {name:(typeof s1 == 'undefined')?undefined:s1.substr(1,s1.length-2), "class":$$[$0]};
-
-break;
-case 747:
-
- this.$ = {"class":$$[$0]};
-
-break;
-case 753:
- this.$ = new yy.AddRule({left:$$[$0-2], right:$$[$0]});
-break;
-case 754:
- this.$ = new yy.AddRule({right:$$[$0]});
-break;
-case 757:
- this.$ = new yy.Term({termid:$$[$0]});
-break;
-case 758:
- this.$ = new yy.Term({termid:$$[$0-3],args:$$[$0-1]});
-break;
-case 761:
-
- this.$ = new yy.CreateTrigger({trigger:$$[$0-6], when:$$[$0-5], action:$$[$0-4], table:$$[$0-2], statement:$$[$0]});
- if($$[$0].exists) this.$.exists = $$[$0].exists;
- if($$[$0].queries) this.$.queries = $$[$0].queries;
-
-break;
-case 762:
-
- this.$ = new yy.CreateTrigger({trigger:$$[$0-5], when:$$[$0-4], action:$$[$0-3], table:$$[$0-1], funcid:$$[$0]});
-
-break;
-case 763:
-
- this.$ = new yy.CreateTrigger({trigger:$$[$0-6], when:$$[$0-4], action:$$[$0-3], table:$$[$0-5], statement:$$[$0]});
- if($$[$0].exists) this.$.exists = $$[$0].exists;
- if($$[$0].queries) this.$.queries = $$[$0].queries;
-
-break;
-case 764: case 765: case 767:
- this.$ = 'AFTER';
-break;
-case 766:
- this.$ = 'BEFORE';
-break;
-case 768:
- this.$ = 'INSTEADOF';
-break;
-case 769:
- this.$ = 'INSERT';
-break;
-case 770:
- this.$ = 'DELETE';
-break;
-case 771:
- this.$ = 'UPDATE';
-break;
-case 772:
- this.$ = new yy.DropTrigger({trigger:$$[$0]});
-break;
-case 773:
- this.$ = new yy.Reindex({indexid:$$[$0]});
-break;
-case 1047: case 1067: case 1069: case 1071: case 1075: case 1077: case 1079: case 1081: case 1083: case 1085:
-this.$ = [];
-break;
-case 1048: case 1062: case 1064: case 1068: case 1070: case 1072: case 1076: case 1078: case 1080: case 1082: case 1084: case 1086:
-$$[$0-1].push($$[$0]);
-break;
-case 1061: case 1063:
-this.$ = [$$[$0]];
-break;
-}
-},
-table: [o([10,602,764],$V0,{8:1,9:2,12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,2:$V1,4:$V2,5:$V3,14:$V4,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{1:[3]},{10:[1,105],11:106,602:$VH,764:$VI},o($VJ,[2,8]),o($VJ,[2,9]),o($VK,[2,12]),o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:109,2:$V1,4:$V2,5:$V3,15:[1,110],53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,14]),o($VK,[2,15]),o($VK,[2,16]),o($VK,[2,17]),o($VK,[2,18]),o($VK,[2,19]),o($VK,[2,20]),o($VK,[2,21]),o($VK,[2,22]),o($VK,[2,23]),o($VK,[2,24]),o($VK,[2,25]),o($VK,[2,26]),o($VK,[2,27]),o($VK,[2,28]),o($VK,[2,29]),o($VK,[2,30]),o($VK,[2,31]),o($VK,[2,32]),o($VK,[2,33]),o($VK,[2,34]),o($VK,[2,35]),o($VK,[2,36]),o($VK,[2,37]),o($VK,[2,38]),o($VK,[2,39]),o($VK,[2,40]),o($VK,[2,41]),o($VK,[2,42]),o($VK,[2,43]),o($VK,[2,44]),o($VK,[2,45]),o($VK,[2,46]),o($VK,[2,47]),o($VK,[2,48]),o($VK,[2,49]),o($VK,[2,50]),o($VK,[2,51]),o($VK,[2,52]),o($VK,[2,53]),o($VK,[2,54]),o($VK,[2,55]),o($VK,[2,56]),o($VK,[2,57]),o($VK,[2,58]),o($VK,[2,59]),o($VK,[2,60]),o($VK,[2,61]),o($VK,[2,62]),o($VK,[2,63]),o($VK,[2,64]),o($VK,[2,65]),o($VK,[2,66]),o($VK,[2,67]),{353:[1,111]},{2:$V1,3:112,4:$V2,5:$V3},{2:$V1,3:114,4:$V2,5:$V3,156:$VL,200:113,290:$VM,291:$VN,292:$VO,293:$VP},o($VQ,[2,501],{3:121,348:125,2:$V1,4:$V2,5:$V3,134:$VR,135:$VS,187:[1,123],193:[1,122],268:[1,129],269:[1,130],357:[1,131],405:[1,120],472:[1,124],509:[1,128]}),{145:$VT,449:132,450:133},{183:[1,135]},{405:[1,136]},{2:$V1,3:138,4:$V2,5:$V3,130:[1,144],193:[1,139],353:[1,143],397:140,405:[1,137],410:[1,141],509:[1,142]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:145,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt1,$Vu1,{340:204,171:[1,205],198:$Vv1}),o($Vt1,$Vu1,{340:207,198:$Vv1}),{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,198:[1,210],199:213,200:215,201:214,202:217,209:209,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1,453:208},{2:$V1,3:221,4:$V2,5:$V3},{353:[1,222]},o($Vz1,[2,1043],{80:223,106:224,107:[1,225]}),o($VA1,[2,1047],{90:226}),{2:$V1,3:230,4:$V2,5:$V3,190:[1,228],193:[1,231],267:[1,227],353:[1,232],405:[1,229]},{353:[1,233]},{2:$V1,3:236,4:$V2,5:$V3,73:234,75:235},o([306,602,764],$V0,{12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,9:238,2:$V1,4:$V2,5:$V3,14:$V4,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,435:[1,237],436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{435:[1,239]},{435:[1,240]},{2:$V1,3:242,4:$V2,5:$V3,405:[1,241]},{2:$V1,3:244,4:$V2,5:$V3,199:243},o($VB1,[2,311]),{113:245,132:$VW,296:$Vj1},{2:$V1,3:114,4:$V2,5:$V3,113:251,131:$VV,132:[1,248],143:$VY,144:246,145:$VC1,152:$V$,156:$VL,181:$V31,196:250,200:255,201:254,257:252,258:253,265:$VD1,274:247,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:257,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,672]),o($VK,[2,673]),{2:$V1,3:168,4:$V2,5:$V3,40:259,56:165,77:$VU,79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:258,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:266,4:$V2,5:$V3,113:263,132:$VW,296:$Vj1,444:261,445:262,446:264,447:$VE1},{2:$V1,3:267,4:$V2,5:$V3,143:$VF1,145:$VG1,431:268},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:271,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{505:[1,272]},{2:$V1,3:100,4:$V2,5:$V3,504:274,506:273},{2:$V1,3:114,4:$V2,5:$V3,156:$VL,200:275,290:$VM,291:$VN,292:$VO,293:$VP},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:276,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VH1,$VI1,{186:280,164:[1,279],185:[1,277],187:[1,278],195:$VJ1}),o($VK1,[2,757],{77:[1,282]}),o([2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],[2,152],{149:[1,283],150:[1,284],190:[1,285],191:[1,286],192:[1,287],193:[1,288],194:[1,289]}),o($VL1,[2,1]),o($VL1,[2,2]),{6:290,131:[1,439],172:[1,462],245:[1,411],285:[1,373],286:[1,407],370:[1,404],381:[1,295],402:[1,297],410:[1,549],414:[1,471],416:[1,443],417:[1,509],433:[1,442],435:[1,525],440:[1,342],460:[1,418],464:[1,448],470:[1,341],514:[1,307],515:[1,299],516:[1,399],518:[1,291],519:[1,292],520:[1,293],521:[1,294],522:[1,296],523:[1,298],524:[1,300],525:[1,301],526:[1,302],527:[1,303],528:[1,304],529:[1,305],530:[1,306],531:[1,308],532:[1,309],533:[1,310],534:[1,311],535:[1,312],536:[1,313],537:[1,314],538:[1,315],539:[1,316],540:[1,317],541:[1,318],542:[1,319],543:[1,320],544:[1,321],545:[1,322],546:[1,323],547:[1,324],548:[1,325],549:[1,326],550:[1,327],551:[1,328],552:[1,329],553:[1,330],554:[1,331],555:[1,332],556:[1,333],557:[1,334],558:[1,335],559:[1,336],560:[1,337],561:[1,338],562:[1,339],563:[1,340],564:[1,343],565:[1,344],566:[1,345],567:[1,346],568:[1,347],569:[1,348],570:[1,349],571:[1,350],572:[1,351],573:[1,352],574:[1,353],575:[1,354],576:[1,355],577:[1,356],578:[1,357],579:[1,358],580:[1,359],581:[1,360],582:[1,361],583:[1,362],584:[1,363],585:[1,364],586:[1,365],587:[1,366],588:[1,367],589:[1,368],590:[1,369],591:[1,370],592:[1,371],593:[1,372],594:[1,374],595:[1,375],596:[1,376],597:[1,377],598:[1,378],599:[1,379],600:[1,380],601:[1,381],602:[1,382],603:[1,383],604:[1,384],605:[1,385],606:[1,386],607:[1,387],608:[1,388],609:[1,389],610:[1,390],611:[1,391],612:[1,392],613:[1,393],614:[1,394],615:[1,395],616:[1,396],617:[1,397],618:[1,398],619:[1,400],620:[1,401],621:[1,402],622:[1,403],623:[1,405],624:[1,406],625:[1,408],626:[1,409],627:[1,410],628:[1,412],629:[1,413],630:[1,414],631:[1,415],632:[1,416],633:[1,417],634:[1,419],635:[1,420],636:[1,421],637:[1,422],638:[1,423],639:[1,424],640:[1,425],641:[1,426],642:[1,427],643:[1,428],644:[1,429],645:[1,430],646:[1,431],647:[1,432],648:[1,433],649:[1,434],650:[1,435],651:[1,436],652:[1,437],653:[1,438],654:[1,440],655:[1,441],656:[1,444],657:[1,445],658:[1,446],659:[1,447],660:[1,449],661:[1,450],662:[1,451],663:[1,452],664:[1,453],665:[1,454],666:[1,455],667:[1,456],668:[1,457],669:[1,458],670:[1,459],671:[1,460],672:[1,461],673:[1,463],674:[1,464],675:[1,465],676:[1,466],677:[1,467],678:[1,468],679:[1,469],680:[1,470],681:[1,472],682:[1,473],683:[1,474],684:[1,475],685:[1,476],686:[1,477],687:[1,478],688:[1,479],689:[1,480],690:[1,481],691:[1,482],692:[1,483],693:[1,484],694:[1,485],695:[1,486],696:[1,487],697:[1,488],698:[1,489],699:[1,490],700:[1,491],701:[1,492],702:[1,493],703:[1,494],704:[1,495],705:[1,496],706:[1,497],707:[1,498],708:[1,499],709:[1,500],710:[1,501],711:[1,502],712:[1,503],713:[1,504],714:[1,505],715:[1,506],716:[1,507],717:[1,508],718:[1,510],719:[1,511],720:[1,512],721:[1,513],722:[1,514],723:[1,515],724:[1,516],725:[1,517],726:[1,518],727:[1,519],728:[1,520],729:[1,521],730:[1,522],731:[1,523],732:[1,524],733:[1,526],734:[1,527],735:[1,528],736:[1,529],737:[1,530],738:[1,531],739:[1,532],740:[1,533],741:[1,534],742:[1,535],743:[1,536],744:[1,537],745:[1,538],746:[1,539],747:[1,540],748:[1,541],749:[1,542],750:[1,543],751:[1,544],752:[1,545],753:[1,546],754:[1,547],755:[1,548],756:[1,550],757:[1,551],758:[1,552],759:[1,553],760:[1,554],761:[1,555],762:[1,556],763:[1,557]},{1:[2,6]},o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:558,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VM1,[2,1041]),o($VM1,[2,1042]),o($VJ,[2,10]),{16:[1,559]},{2:$V1,3:244,4:$V2,5:$V3,199:560},{405:[1,561]},o($VK,[2,760]),{77:$VN1},{77:[1,563]},{77:$VO1},{77:[1,565]},{77:[1,566]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:567,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt1,$VP1,{350:568,156:$VQ1}),{405:[1,570]},{2:$V1,3:571,4:$V2,5:$V3},{193:[1,572]},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,183:[1,574],431:585,473:573,474:575,475:576,478:577,482:582,493:579,497:581},{130:[1,589],349:586,353:[1,588],410:[1,587]},{113:591,132:$VW,183:[2,1141],296:$Vj1,471:590},o($VU1,[2,1135],{465:592,3:593,2:$V1,4:$V2,5:$V3}),{2:$V1,3:594,4:$V2,5:$V3},{4:[1,595]},{4:[1,596]},o($VQ,[2,502]),o($VK,[2,686],{74:[1,597]}),o($VV1,[2,687]),{2:$V1,3:598,4:$V2,5:$V3},{2:$V1,3:244,4:$V2,5:$V3,199:599},{2:$V1,3:600,4:$V2,5:$V3},o($Vt1,$VW1,{398:601,156:$VX1}),{405:[1,603]},{2:$V1,3:604,4:$V2,5:$V3},o($Vt1,$VW1,{398:605,156:$VX1}),o($Vt1,$VW1,{398:606,156:$VX1}),{2:$V1,3:607,4:$V2,5:$V3},o($VY1,[2,1129]),o($VY1,[2,1130]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:608,114:625,327:637,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$V22,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V9,154:$Va2,156:$Va,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,266:$Vc,267:$Vd,290:$Ve,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VB1,[2,288]),o($VB1,[2,289]),o($VB1,[2,290]),o($VB1,[2,291]),o($VB1,[2,292]),o($VB1,[2,293]),o($VB1,[2,294]),o($VB1,[2,295]),o($VB1,[2,296]),o($VB1,[2,297]),o($VB1,[2,298]),o($VB1,[2,299]),o($VB1,[2,300]),o($VB1,[2,301]),o($VB1,[2,302]),o($VB1,[2,303]),o($VB1,[2,304]),o($VB1,[2,305]),{2:$V1,3:168,4:$V2,5:$V3,26:654,27:653,36:649,40:648,56:165,77:$VU,79:75,89:$V7,94:651,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,264:650,265:$V41,266:$Vc,267:[1,655],270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:[1,652],291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,339:$Vh,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,309]),o($VB1,[2,310]),{77:[1,656]},o([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy2,{77:$VN1,116:[1,657]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:658,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:659,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:661,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:662,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,283]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,249,265,266,267,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,300,302,303,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,415,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764,765,766],[2,356]),o($Vz2,[2,357]),o($Vz2,[2,358]),o($Vz2,$VA2),o($Vz2,[2,360]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,361]),{2:$V1,3:664,4:$V2,5:$V3,131:[1,665],301:663},{2:$V1,3:666,4:$V2,5:$V3},o($Vz2,[2,367]),o($Vz2,[2,368]),{2:$V1,3:667,4:$V2,5:$V3,77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},{77:[1,674]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:675,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,304:676,307:677,308:$VC2,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,679]},{77:[1,680]},o($VD2,[2,624]),{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,300:[1,683],302:$Vn1,419:190,420:$Vr1,421:681,422:684,423:686,424:$Vs1,427:682},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:696,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:697,4:$V2,5:$V3,156:$VL,200:698,290:$VM,291:$VN,292:$VO,293:$VP},{77:[2,336]},{77:[2,337]},{77:[2,338]},{77:[2,339]},{77:[2,340]},{77:[2,341]},{77:[2,342]},{77:[2,343]},{77:[2,344]},{2:$V1,3:704,4:$V2,5:$V3,131:$VF2,132:$VG2,425:699,426:[1,700],428:701},{2:$V1,3:244,4:$V2,5:$V3,199:705},{290:[1,706]},o($Vt1,[2,472]),{2:$V1,3:244,4:$V2,5:$V3,199:707},{231:[1,709],454:708},{231:[2,695]},{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:710,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{40:711,79:75,89:$V7,184:99,189:$Vb},o($VH2,[2,1091],{210:712,76:[1,713]}),o($VI2,[2,185],{3:714,2:$V1,4:$V2,5:$V3,76:[1,715],154:[1,716]}),o($VI2,[2,189],{3:717,2:$V1,4:$V2,5:$V3,76:[1,718]}),o($VI2,[2,190],{3:719,2:$V1,4:$V2,5:$V3,76:[1,720]}),o($VI2,[2,193]),o($VI2,[2,194],{3:721,2:$V1,4:$V2,5:$V3,76:[1,722]}),o($VI2,[2,197],{3:723,2:$V1,4:$V2,5:$V3,76:[1,724]}),o([2,4,5,10,72,74,76,78,93,98,118,128,154,162,168,169,183,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VJ2,{77:$VN1,116:$VK2}),o([2,4,5,10,72,74,76,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],[2,200]),o($VK,[2,773]),{2:$V1,3:244,4:$V2,5:$V3,199:726},o($VL2,$VM2,{81:727,198:$VN2}),o($Vz1,[2,1044]),o($VO2,[2,1057],{108:729,190:[1,730]}),o([10,78,183,306,310,602,764],$VM2,{419:190,81:731,117:732,3:733,114:736,144:758,158:768,160:769,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,198:$VN2,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),{353:[1,782]},{183:[1,783]},o($VK,[2,594],{112:[1,784]}),{405:[1,785]},{183:[1,786]},o($VK,[2,598],{112:[1,787],183:[1,788]}),{2:$V1,3:244,4:$V2,5:$V3,199:789},{40:790,74:[1,791],79:75,89:$V7,184:99,189:$Vb},o($Vv3,[2,70]),{76:[1,792]},o($VK,[2,667]),{11:106,306:[1,793],602:$VH,764:$VI},o($VK,[2,665]),o($VK,[2,666]),{2:$V1,3:794,4:$V2,5:$V3},o($VK,[2,587]),{146:[1,795]},o([2,4,5,10,53,72,74,76,77,78,89,95,124,128,143,145,146,148,149,152,154,156,181,183,187,189,230,266,267,290,297,302,306,310,335,338,339,343,344,356,368,369,373,374,396,400,401,402,403,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,514,515,516,517,602,764],$VJ2,{116:$VK2}),o($VK,[2,615]),o($VK,[2,616]),o($VK,[2,617]),o($VK,$VA2,{74:[1,796]}),{77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},o($Vw3,[2,320]),o($Vw3,[2,321]),o($Vw3,[2,322]),o($Vw3,[2,323]),o($Vw3,[2,324]),o($Vw3,[2,325]),o($Vw3,[2,326]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,114:625,327:637,12:797,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$V22,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V9,154:$Va2,156:$Va,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,266:$Vc,267:$Vd,290:$Ve,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,675],{74:$Vx3}),o($VK,[2,676]),o($Vy3,[2,354],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,677],{74:[1,800]}),o($VK,[2,678],{74:[1,801]}),o($VV1,[2,683]),o($VV1,[2,685]),o($VV1,[2,679]),o($VV1,[2,680]),{114:807,115:$V$1,116:$V02,124:[1,802],230:$VA3,429:803,430:804,433:$VB3},{2:$V1,3:808,4:$V2,5:$V3},o($Vt1,[2,656]),o($Vt1,[2,657]),o($VK,[2,614],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:100,4:$V2,5:$V3,504:274,506:809},o($VK,[2,754],{74:$VC3}),o($VD3,[2,756]),o($VK,[2,759]),o($VK,[2,681],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VE3,$VI1,{186:811,195:$VJ1}),o($VE3,$VI1,{186:812,195:$VJ1}),o($VE3,$VI1,{186:813,195:$VJ1}),o($VF3,[2,1087],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,188:814,174:815,253:816,94:817,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{77:[1,819],131:$VV,196:818},{2:$V1,3:100,4:$V2,5:$V3,504:274,506:820},o($VG3,[2,153]),o($VG3,[2,154]),o($VG3,[2,155]),o($VG3,[2,156]),o($VG3,[2,157]),o($VG3,[2,158]),o($VG3,[2,159]),o($VL1,[2,3]),o($VL1,[2,774]),o($VL1,[2,775]),o($VL1,[2,776]),o($VL1,[2,777]),o($VL1,[2,778]),o($VL1,[2,779]),o($VL1,[2,780]),o($VL1,[2,781]),o($VL1,[2,782]),o($VL1,[2,783]),o($VL1,[2,784]),o($VL1,[2,785]),o($VL1,[2,786]),o($VL1,[2,787]),o($VL1,[2,788]),o($VL1,[2,789]),o($VL1,[2,790]),o($VL1,[2,791]),o($VL1,[2,792]),o($VL1,[2,793]),o($VL1,[2,794]),o($VL1,[2,795]),o($VL1,[2,796]),o($VL1,[2,797]),o($VL1,[2,798]),o($VL1,[2,799]),o($VL1,[2,800]),o($VL1,[2,801]),o($VL1,[2,802]),o($VL1,[2,803]),o($VL1,[2,804]),o($VL1,[2,805]),o($VL1,[2,806]),o($VL1,[2,807]),o($VL1,[2,808]),o($VL1,[2,809]),o($VL1,[2,810]),o($VL1,[2,811]),o($VL1,[2,812]),o($VL1,[2,813]),o($VL1,[2,814]),o($VL1,[2,815]),o($VL1,[2,816]),o($VL1,[2,817]),o($VL1,[2,818]),o($VL1,[2,819]),o($VL1,[2,820]),o($VL1,[2,821]),o($VL1,[2,822]),o($VL1,[2,823]),o($VL1,[2,824]),o($VL1,[2,825]),o($VL1,[2,826]),o($VL1,[2,827]),o($VL1,[2,828]),o($VL1,[2,829]),o($VL1,[2,830]),o($VL1,[2,831]),o($VL1,[2,832]),o($VL1,[2,833]),o($VL1,[2,834]),o($VL1,[2,835]),o($VL1,[2,836]),o($VL1,[2,837]),o($VL1,[2,838]),o($VL1,[2,839]),o($VL1,[2,840]),o($VL1,[2,841]),o($VL1,[2,842]),o($VL1,[2,843]),o($VL1,[2,844]),o($VL1,[2,845]),o($VL1,[2,846]),o($VL1,[2,847]),o($VL1,[2,848]),o($VL1,[2,849]),o($VL1,[2,850]),o($VL1,[2,851]),o($VL1,[2,852]),o($VL1,[2,853]),o($VL1,[2,854]),o($VL1,[2,855]),o($VL1,[2,856]),o($VL1,[2,857]),o($VL1,[2,858]),o($VL1,[2,859]),o($VL1,[2,860]),o($VL1,[2,861]),o($VL1,[2,862]),o($VL1,[2,863]),o($VL1,[2,864]),o($VL1,[2,865]),o($VL1,[2,866]),o($VL1,[2,867]),o($VL1,[2,868]),o($VL1,[2,869]),o($VL1,[2,870]),o($VL1,[2,871]),o($VL1,[2,872]),o($VL1,[2,873]),o($VL1,[2,874]),o($VL1,[2,875]),o($VL1,[2,876]),o($VL1,[2,877]),o($VL1,[2,878]),o($VL1,[2,879]),o($VL1,[2,880]),o($VL1,[2,881]),o($VL1,[2,882]),o($VL1,[2,883]),o($VL1,[2,884]),o($VL1,[2,885]),o($VL1,[2,886]),o($VL1,[2,887]),o($VL1,[2,888]),o($VL1,[2,889]),o($VL1,[2,890]),o($VL1,[2,891]),o($VL1,[2,892]),o($VL1,[2,893]),o($VL1,[2,894]),o($VL1,[2,895]),o($VL1,[2,896]),o($VL1,[2,897]),o($VL1,[2,898]),o($VL1,[2,899]),o($VL1,[2,900]),o($VL1,[2,901]),o($VL1,[2,902]),o($VL1,[2,903]),o($VL1,[2,904]),o($VL1,[2,905]),o($VL1,[2,906]),o($VL1,[2,907]),o($VL1,[2,908]),o($VL1,[2,909]),o($VL1,[2,910]),o($VL1,[2,911]),o($VL1,[2,912]),o($VL1,[2,913]),o($VL1,[2,914]),o($VL1,[2,915]),o($VL1,[2,916]),o($VL1,[2,917]),o($VL1,[2,918]),o($VL1,[2,919]),o($VL1,[2,920]),o($VL1,[2,921]),o($VL1,[2,922]),o($VL1,[2,923]),o($VL1,[2,924]),o($VL1,[2,925]),o($VL1,[2,926]),o($VL1,[2,927]),o($VL1,[2,928]),o($VL1,[2,929]),o($VL1,[2,930]),o($VL1,[2,931]),o($VL1,[2,932]),o($VL1,[2,933]),o($VL1,[2,934]),o($VL1,[2,935]),o($VL1,[2,936]),o($VL1,[2,937]),o($VL1,[2,938]),o($VL1,[2,939]),o($VL1,[2,940]),o($VL1,[2,941]),o($VL1,[2,942]),o($VL1,[2,943]),o($VL1,[2,944]),o($VL1,[2,945]),o($VL1,[2,946]),o($VL1,[2,947]),o($VL1,[2,948]),o($VL1,[2,949]),o($VL1,[2,950]),o($VL1,[2,951]),o($VL1,[2,952]),o($VL1,[2,953]),o($VL1,[2,954]),o($VL1,[2,955]),o($VL1,[2,956]),o($VL1,[2,957]),o($VL1,[2,958]),o($VL1,[2,959]),o($VL1,[2,960]),o($VL1,[2,961]),o($VL1,[2,962]),o($VL1,[2,963]),o($VL1,[2,964]),o($VL1,[2,965]),o($VL1,[2,966]),o($VL1,[2,967]),o($VL1,[2,968]),o($VL1,[2,969]),o($VL1,[2,970]),o($VL1,[2,971]),o($VL1,[2,972]),o($VL1,[2,973]),o($VL1,[2,974]),o($VL1,[2,975]),o($VL1,[2,976]),o($VL1,[2,977]),o($VL1,[2,978]),o($VL1,[2,979]),o($VL1,[2,980]),o($VL1,[2,981]),o($VL1,[2,982]),o($VL1,[2,983]),o($VL1,[2,984]),o($VL1,[2,985]),o($VL1,[2,986]),o($VL1,[2,987]),o($VL1,[2,988]),o($VL1,[2,989]),o($VL1,[2,990]),o($VL1,[2,991]),o($VL1,[2,992]),o($VL1,[2,993]),o($VL1,[2,994]),o($VL1,[2,995]),o($VL1,[2,996]),o($VL1,[2,997]),o($VL1,[2,998]),o($VL1,[2,999]),o($VL1,[2,1000]),o($VL1,[2,1001]),o($VL1,[2,1002]),o($VL1,[2,1003]),o($VL1,[2,1004]),o($VL1,[2,1005]),o($VL1,[2,1006]),o($VL1,[2,1007]),o($VL1,[2,1008]),o($VL1,[2,1009]),o($VL1,[2,1010]),o($VL1,[2,1011]),o($VL1,[2,1012]),o($VL1,[2,1013]),o($VL1,[2,1014]),o($VL1,[2,1015]),o($VL1,[2,1016]),o($VL1,[2,1017]),o($VL1,[2,1018]),o($VL1,[2,1019]),o($VL1,[2,1020]),o($VL1,[2,1021]),o($VL1,[2,1022]),o($VL1,[2,1023]),o($VL1,[2,1024]),o($VL1,[2,1025]),o($VL1,[2,1026]),o($VL1,[2,1027]),o($VL1,[2,1028]),o($VL1,[2,1029]),o($VL1,[2,1030]),o($VL1,[2,1031]),o($VL1,[2,1032]),o($VL1,[2,1033]),o($VL1,[2,1034]),o($VL1,[2,1035]),o($VL1,[2,1036]),o($VL1,[2,1037]),o($VL1,[2,1038]),o($VL1,[2,1039]),o($VL1,[2,1040]),o($VJ,[2,7]),o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:821,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{396:[1,825],401:[1,822],402:[1,823],403:[1,824]},{2:$V1,3:826,4:$V2,5:$V3},o($VE3,[2,1111],{289:827,767:829,78:[1,828],164:[1,831],185:[1,830]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:832,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:833,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:834,4:$V2,5:$V3,132:[1,835]},{2:$V1,3:836,4:$V2,5:$V3,132:[1,837]},{2:$V1,3:838,4:$V2,5:$V3,99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:839,4:$V2,5:$V3},{154:[1,840]},o($VH3,$VP1,{350:841,156:$VQ1}),{230:[1,842]},{2:$V1,3:843,4:$V2,5:$V3},o($VK,[2,729],{74:$VI3}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:845,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD3,[2,732]),o($VJ3,[2,1143],{419:190,476:846,144:847,139:$VK3,141:$VK3,145:$VC1,420:$Vr1,424:$Vs1}),{139:[1,848],141:[1,849]},o($VL3,$VM3,{490:851,493:852,77:[1,850],137:$VS1}),o($VN3,[2,1167],{494:853,132:[1,854]}),o($VO3,[2,1171],{496:855,497:856,152:$VT1}),o($VO3,[2,747]),o($VP3,[2,739]),{2:$V1,3:857,4:$V2,5:$V3,131:[1,858]},{2:$V1,3:859,4:$V2,5:$V3},{2:$V1,3:860,4:$V2,5:$V3},o($Vt1,$VP1,{350:861,156:$VQ1}),o($Vt1,$VP1,{350:862,156:$VQ1}),o($VY1,[2,491]),o($VY1,[2,492]),{183:[1,863]},{183:[2,1142]},o($VQ3,[2,1137],{466:864,469:865,137:[1,866]}),o($VU1,[2,1136]),o($VR3,$VS3,{510:867,95:$VT3,230:[1,868],514:$VU3,515:$VV3,516:$VW3}),{76:[1,873]},{76:[1,874]},{145:$VT,450:875},{4:$VX3,7:879,76:[1,877],272:876,387:878,389:$VY3},o($VK,[2,456],{128:[1,882]}),o($VK,[2,579]),{2:$V1,3:883,4:$V2,5:$V3},{298:[1,884]},o($VH3,$VW1,{398:885,156:$VX1}),o($VK,[2,593]),{2:$V1,3:244,4:$V2,5:$V3,199:887,399:886},{2:$V1,3:244,4:$V2,5:$V3,199:887,399:888},o($VK,[2,772]),o($VJ,[2,669],{438:889,310:[1,890]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:891,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:892,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:893,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:894,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:895,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:896,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:897,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:898,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:899,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:900,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:901,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:902,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:903,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:904,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:905,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:906,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:907,4:$V2,5:$V3,77:[1,909],131:$VV,156:$VL,196:908,200:910,290:$VM,291:$VN,292:$VO,293:$VP},{2:$V1,3:911,4:$V2,5:$V3,77:[1,913],131:$VV,156:$VL,196:912,200:914,290:$VM,291:$VN,292:$VO,293:$VP},o($VZ3,[2,440],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:915,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,441],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:916,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,442],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:917,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,443],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:918,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,$V_3,{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:919,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:920,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:921,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VZ3,[2,445],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:922,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:923,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:924,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{164:[1,926],166:[1,928],328:925,334:[1,927]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:929,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:930,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:[1,931],111:934,145:$V$3,156:$VL,200:935,202:933,290:$VM,291:$VN,292:$VO,293:$VP,329:932},{99:[1,937],297:[1,938]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:939,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:940,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:941,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:942,387:878,389:$VY3},o($V04,[2,88]),o($V04,[2,89]),{78:[1,943]},{78:[1,944]},{78:[1,945]},{78:[1,946],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vt1,$Vu1,{340:207,77:$VO1,198:$Vv1}),{78:[2,1107]},{78:[2,1108]},{134:$VR,135:$VS},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:947,152:$V$,154:$V01,156:$VL,158:167,164:[1,949],179:$V11,180:$V21,181:$V31,185:[1,948],196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:950,4:$V2,5:$V3,149:$V14,180:[1,952]},o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,416],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o($V24,[2,417],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V24,[2,418],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V34,[2,419],{114:625,327:637,316:$Vj2}),o($V34,[2,420],{114:625,327:637,316:$Vj2}),o($Vz2,[2,365]),o($Vz2,[2,1113]),o($Vz2,[2,1114]),o($Vz2,[2,366]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,362]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:953,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD2,[2,620]),o($VD2,[2,621]),o($VD2,[2,622]),o($VD2,[2,623]),o($VD2,[2,625]),{40:954,79:75,89:$V7,184:99,189:$Vb},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,304:955,307:677,308:$VC2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{305:956,306:$V44,307:957,308:$VC2,310:$V54},o($V64,[2,372]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:959,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:960,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:961,387:878,389:$VY3},o($VD2,[2,626]),{74:[1,963],300:[1,962]},o($VD2,[2,642]),o($V74,[2,649]),o($V84,[2,627]),o($V84,[2,628]),o($V84,[2,629]),o($V84,[2,630]),o($V84,[2,631]),o($V84,[2,632]),o($V84,[2,633]),o($V84,[2,634]),o($V84,[2,635]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:964,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy2,{77:$VN1,116:$V94}),{74:$Vx3,300:[1,966]},o($Va4,[2,314],{77:$VN1}),o($VB1,[2,315]),{74:[1,968],426:[1,967]},o($VD2,[2,639]),o($Vb4,[2,644]),{152:[1,969]},{152:[1,970]},{152:[1,971]},{40:976,77:[1,975],79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:972,342:973,343:[1,974],344:$Vd4,419:190,420:$Vr1,424:$Vs1},o($Vt1,$Vu1,{340:981,198:$Vv1}),{77:$Ve4,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,201:980,302:$Vn1,341:982,342:983,344:$Vd4,419:190,420:$Vr1,424:$Vs1},{230:[1,986],455:985},{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:987,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{231:[2,696]},{78:[1,988]},o($VI2,[2,1093],{211:989,3:990,2:$V1,4:$V2,5:$V3}),o($VH2,[2,1092]),o($VI2,[2,183]),{2:$V1,3:991,4:$V2,5:$V3},{212:[1,992]},o($VI2,[2,187]),{2:$V1,3:993,4:$V2,5:$V3},o($VI2,[2,191]),{2:$V1,3:994,4:$V2,5:$V3},o($VI2,[2,195]),{2:$V1,3:995,4:$V2,5:$V3},o($VI2,[2,198]),{2:$V1,3:996,4:$V2,5:$V3},{2:$V1,3:997,4:$V2,5:$V3},{148:[1,998]},o($Vf4,[2,172],{82:999,183:[1,1000]}),{2:$V1,3:219,4:$V2,5:$V3,132:[1,1005],143:$VY,145:[1,1006],152:$V$,156:$VL,181:$V31,199:1001,200:1002,201:1003,202:1004,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1},{2:$V1,3:1011,4:$V2,5:$V3,109:1007,110:1008,111:1009,112:$Vg4},o($VO2,[2,1058]),o($Vh4,[2,1049],{91:1012,182:1013,183:[1,1014]}),o($VA1,[2,1048],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o([2,4,5,10,72,74,76,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,90],{77:[1,1019]}),{119:[1,1020]},o($Vl4,[2,93]),{2:$V1,3:1021,4:$V2,5:$V3},o($Vl4,[2,95]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1022,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1023,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1025,118:$VT2,122:$VU2,123:$VV2,124:$VW2,125:1024,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{77:[1,1026]},{77:[1,1027]},{77:[1,1028]},{77:[1,1029]},o($Vl4,[2,104]),o($Vl4,[2,105]),o($Vl4,[2,106]),o($Vl4,[2,107]),o($Vl4,[2,108]),o($Vl4,[2,109]),{2:$V1,3:1030,4:$V2,5:$V3},{2:$V1,3:1031,4:$V2,5:$V3,133:[1,1032]},o($Vl4,[2,113]),o($Vl4,[2,114]),o($Vl4,[2,115]),o($Vl4,[2,116]),o($Vl4,[2,117]),o($Vl4,[2,118]),{2:$V1,3:1033,4:$V2,5:$V3,77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},{145:[1,1034]},{77:[1,1035]},{145:[1,1036]},o($Vl4,[2,123]),{77:[1,1037]},{2:$V1,3:1038,4:$V2,5:$V3},{77:[1,1039]},{77:[1,1040]},{77:[1,1041]},{77:[1,1042]},{77:[1,1043],164:[1,1044]},{77:[1,1045]},{77:[1,1046]},{77:[1,1047]},{77:[1,1048]},{77:[1,1049]},{77:[1,1050]},{77:[1,1051]},{77:[1,1052]},{77:[1,1053]},{77:[2,1073]},{77:[2,1074]},{2:$V1,3:244,4:$V2,5:$V3,199:1054},{2:$V1,3:244,4:$V2,5:$V3,199:1055},{113:1056,132:$VW,296:$Vj1},o($VK,[2,596],{112:[1,1057]}),{2:$V1,3:244,4:$V2,5:$V3,199:1058},{113:1059,132:$VW,296:$Vj1},{2:$V1,3:1060,4:$V2,5:$V3},o($VK,[2,693]),o($VK,[2,68]),{2:$V1,3:236,4:$V2,5:$V3,75:1061},{77:[1,1062]},o($VK,[2,674]),o($VK,[2,586]),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1063,336:1064,337:1066},{144:1069,145:$VC1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,671]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1070,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VZ3,$V_3,{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:1071,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{113:1072,132:$VW,296:$Vj1},{2:$V1,3:266,4:$V2,5:$V3,446:1073,447:$VE1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1075,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,230:$VA3,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1,429:1074,433:$VB3},o($VK,[2,651]),{114:1077,115:$V$1,116:$V02,124:[1,1076]},o($VK,[2,663]),o($VK,[2,664]),{2:$V1,3:1079,4:$V2,5:$V3,77:$Vo4,131:$Vp4,432:1078},{114:807,115:$V$1,116:$V02,124:[1,1082],430:1083},o($VK,[2,753],{74:$VC3}),{2:$V1,3:100,4:$V2,5:$V3,504:1084},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1085,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1086,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1087,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VF3,[2,151]),o($VF3,[2,1088],{74:$Vq4}),o($Vr4,[2,273]),o($Vr4,[2,280],{114:625,327:637,3:1090,113:1092,2:$V1,4:$V2,5:$V3,76:[1,1089],99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,131:[1,1091],132:$VW,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,296:$Vj1,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VH1,[2,1089],{197:1093,765:[1,1094]}),{131:$VV,196:1095},{74:$VC3,78:[1,1096]},o($VJ,[2,11]),{148:[1,1097],190:[1,1098]},{190:[1,1099]},{190:[1,1100]},{190:[1,1101]},o($VK,[2,575],{76:[1,1103],77:[1,1102]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1104,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vz2,[2,346]),o($VE3,[2,1112]),o($VE3,[2,1109]),o($VE3,[2,1110]),{74:$Vx3,78:[1,1105]},{74:$Vx3,78:[1,1106]},{74:[1,1107]},{74:[1,1108]},{74:[1,1109]},{74:[1,1110]},o($Vz2,[2,353]),o($VK,[2,580]),{298:[1,1111]},{2:$V1,3:1112,4:$V2,5:$V3,113:1113,132:$VW,296:$Vj1},{2:$V1,3:244,4:$V2,5:$V3,199:1114},{230:[1,1115]},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,474:1116,475:576,478:577,482:582,493:579,497:581},o($VK,[2,730],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VD3,[2,1145],{477:1117,483:1118,76:$Vs4}),o($VJ3,[2,1144]),{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,144:1121,145:$VC1,152:$VT1,419:190,420:$Vr1,424:$Vs1,475:1120,493:579,497:581},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1123,482:582,493:579,497:581},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,473:1125,474:575,475:576,478:577,482:582,493:579,497:581},o($VN3,[2,1163],{491:1126,132:[1,1127]}),o($VL3,[2,1162]),o($VO3,[2,1169],{495:1128,497:1129,152:$VT1}),o($VN3,[2,1168]),o($VO3,[2,746]),o($VO3,[2,1172]),o($VL3,[2,749]),o($VL3,[2,750]),o($VO3,[2,748]),o($VP3,[2,740]),{2:$V1,3:244,4:$V2,5:$V3,199:1130},{2:$V1,3:244,4:$V2,5:$V3,199:1131},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1132,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt4,[2,1139],{467:1133,113:1134,132:$VW,296:$Vj1}),o($VQ3,[2,1138]),{2:$V1,3:1135,4:$V2,5:$V3},{335:$Vu4,338:$Vv4,339:$Vw4,511:1136},{2:$V1,3:244,4:$V2,5:$V3,199:1140},o($VR3,[2,765]),o($VR3,[2,766]),o($VR3,[2,767]),{129:[1,1141]},{266:[1,1142]},{266:[1,1143]},o($VV1,[2,688]),o($VV1,[2,689],{124:[1,1144]}),{4:$VX3,7:879,272:1145,387:878,389:$VY3},o([2,4,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,542],{5:[1,1146]}),o([2,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,539],{4:[1,1148],77:[1,1147]}),{77:[1,1149]},o($Vx4,[2,4]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1150,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,588]),o($VH3,[2,568]),{2:$V1,3:1151,4:$V2,5:$V3,113:1152,132:$VW,296:$Vj1},o($VK,[2,564],{74:$Vy4}),o($VV1,[2,566]),o($VK,[2,613],{74:$Vy4}),o($VK,[2,668]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1154,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($Vz4,[2,376],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($V34,[2,377],{114:625,327:637,316:$Vj2}),o($Vz4,[2,378],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VA4,[2,379],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,314:[1,1155],316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VA4,[2,381],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,314:[1,1156],316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,383],{114:625,327:637}),o($V24,[2,384],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V24,[2,385],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($VB4,[2,386],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o($VB4,[2,387],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o($VB4,[2,388],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,123,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,389],{114:625,327:637,115:$V$1,116:$V02,136:$V42,312:$Vg2,316:$Vj2}),o($VC4,[2,390],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,391],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,392],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,393],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($Va4,[2,394],{77:$VN1}),o($VB1,[2,395]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1157,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,397]),o($Va4,[2,398],{77:$VN1}),o($VB1,[2,399]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1158,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,401]),o($VD4,[2,402],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,403],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,404],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,405],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o([2,4,5,10,53,72,89,99,124,139,140,146,154,156,170,171,189,266,267,290,306,310,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VE4,{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,407],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,408],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,409],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,410],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,411],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),{77:[1,1159]},{77:[2,446]},{77:[2,447]},{77:[2,448]},o($VF4,[2,414],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,415],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2}),{2:$V1,3:168,4:$V2,5:$V3,40:1160,56:165,77:$VU,78:[1,1162],79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1161,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,428]),o($VB1,[2,430]),o($VB1,[2,437]),o($VB1,[2,438]),{2:$V1,3:667,4:$V2,5:$V3,77:[1,1163]},{2:$V1,3:695,4:$V2,5:$V3,77:[1,1164],111:934,145:$V$3,156:$VL,200:935,202:1166,290:$VM,291:$VN,292:$VO,293:$VP,329:1165},o($VB1,[2,435]),o($VF4,[2,432],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o($VF4,[2,433],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,434],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,436]),o($VB1,[2,306]),o($VB1,[2,307]),o($VB1,[2,308]),o($VB1,[2,421]),{74:$Vx3,78:[1,1167]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1168,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1169,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,$VG4),o($VH4,[2,286]),o($VB1,[2,282]),{78:[1,1171],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1172]},{305:1173,306:$V44,307:957,308:$VC2,310:$V54},{306:[1,1174]},o($V64,[2,371]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1175,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1176],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{76:[1,1177],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1178]},o($VD2,[2,640]),{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,300:[1,1179],302:$Vn1,419:190,420:$Vr1,422:1180,423:686,424:$Vs1},{78:[1,1181],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1182,4:$V2,5:$V3,149:$V14},o($VB1,[2,364]),o($VD2,[2,637]),{2:$V1,3:704,4:$V2,5:$V3,131:$VF2,132:$VG2,426:[1,1183],428:1184},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1185,423:686,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1186,423:686,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1187,423:686,424:$Vs1},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1188,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,458],{74:$VJ4}),{149:$Vc4,341:1190,344:$Vd4},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,100:1191,111:1193,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1192,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,466]),o($VK4,[2,469]),o($VK4,[2,470]),o($VL4,[2,474]),o($VL4,[2,475]),{2:$V1,3:244,4:$V2,5:$V3,199:1195},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1196,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,462],{74:$VJ4}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1192,419:190,420:$Vr1,424:$Vs1},{308:$VM4,456:1197,458:1198,459:1199},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1201,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{230:[2,697]},o($VI2,[2,181],{3:1202,2:$V1,4:$V2,5:$V3,76:[1,1203]}),o($VI2,[2,182]),o($VI2,[2,1094]),o($VI2,[2,184]),o($VI2,[2,186]),o($VI2,[2,188]),o($VI2,[2,192]),o($VI2,[2,196]),o($VI2,[2,199]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,118,124,128,143,145,146,148,149,152,154,156,162,168,169,181,183,187,189,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,266,267,290,297,302,306,310,335,338,339,343,344,356,368,369,373,374,396,400,401,402,403,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,514,515,516,517,602,764],[2,201]),{2:$V1,3:1204,4:$V2,5:$V3},o($VN4,[2,1045],{83:1205,92:1206,93:[1,1207],98:[1,1208]}),{2:$V1,3:219,4:$V2,5:$V3,77:[1,1210],132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,203:1209,209:1211,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($VL2,[2,164]),o($VL2,[2,165]),o($VL2,[2,166]),o($VL2,[2,167]),o($VL2,[2,168]),{2:$V1,3:667,4:$V2,5:$V3},o($Vz1,[2,83],{74:[1,1212]}),o($VO4,[2,85]),o($VO4,[2,86]),{113:1213,132:$VW,296:$Vj1},o([10,72,74,78,93,98,118,124,128,162,168,169,183,198,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vy2,{116:$V94}),o($Vh4,[2,73]),o($Vh4,[2,1050]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1214,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,126]),o($Vl4,[2,144]),o($Vl4,[2,145]),o($Vl4,[2,146]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,78:[2,1065],94:260,111:149,113:153,127:1215,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1216,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1217]},o($Vl4,[2,94]),o([2,4,5,10,72,74,76,77,78,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,96],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o([2,4,5,10,72,74,76,77,78,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,97],{114:625,327:637,99:$VZ1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1218],112:$VS2,114:736,115:$V$1,116:$V02,117:1219,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},o($VP4,[2,1061],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1221,118:$VT2,122:$VU2,123:$VV2,124:$VW2,126:1220,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1222,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1223,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1224,4:$V2,5:$V3},o($Vl4,[2,110]),o($Vl4,[2,111]),o($Vl4,[2,112]),o($Vl4,[2,119]),{2:$V1,3:1225,4:$V2,5:$V3},{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1226,336:1064,337:1066},{2:$V1,3:1227,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1228,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,125]),o($VP4,[2,1067],{155:1229}),o($VP4,[2,1069],{157:1230}),o($VP4,[2,1071],{159:1231}),o($VP4,[2,1075],{161:1232}),o($VQ4,$VR4,{163:1233,178:1234}),{77:[1,1235]},o($VP4,[2,1077],{165:1236}),o($VP4,[2,1079],{167:1237}),o($VQ4,$VR4,{178:1234,163:1238}),o($VQ4,$VR4,{178:1234,163:1239}),o($VQ4,$VR4,{178:1234,163:1240}),o($VQ4,$VR4,{178:1234,163:1241}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1242,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1243,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VS4,[2,1081],{176:1244}),o($VK,[2,606],{183:[1,1245]}),o($VK,[2,602],{183:[1,1246]}),o($VK,[2,595]),{113:1247,132:$VW,296:$Vj1},o($VK,[2,604],{183:[1,1248]}),o($VK,[2,599]),o($VK,[2,600],{112:[1,1249]}),o($Vv3,[2,69]),{40:1250,79:75,89:$V7,184:99,189:$Vb},o($VK,[2,450],{74:$VT4,128:[1,1251]}),o($VU4,[2,451]),{124:[1,1253]},{2:$V1,3:1254,4:$V2,5:$V3},o($Vt1,[2,1115]),o($Vt1,[2,1116]),o($VK,[2,618]),o($Vy3,[2,355],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VD4,$VE4,{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VV1,[2,682]),o($VV1,[2,684]),o($VK,[2,650]),o($VK,[2,652],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1255,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1079,4:$V2,5:$V3,77:$Vo4,131:$Vp4,432:1256},o($VV4,[2,659]),o($VV4,[2,660]),o($VV4,[2,661]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1257,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1258,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{114:1077,115:$V$1,116:$V02,124:[1,1259]},o($VD3,[2,755]),o($VF3,[2,148],{74:$Vq4}),o($VF3,[2,149],{74:$Vq4}),o($VF3,[2,150],{74:$Vq4}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:1260,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1261,4:$V2,5:$V3,113:1263,131:[1,1262],132:$VW,296:$Vj1},o($Vr4,[2,275]),o($Vr4,[2,277]),o($Vr4,[2,279]),o($VH1,[2,160]),o($VH1,[2,1090]),{78:[1,1264]},o($VK1,[2,758]),{2:$V1,3:1265,4:$V2,5:$V3},{2:$V1,3:1266,4:$V2,5:$V3},{2:$V1,3:1268,4:$V2,5:$V3,384:1267},{2:$V1,3:1268,4:$V2,5:$V3,384:1269},{2:$V1,3:1270,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1271,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1272,4:$V2,5:$V3},{74:$Vx3,78:[1,1273]},o($Vz2,[2,347]),o($Vz2,[2,348]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1274,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1275,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1276,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1277,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VH3,[2,504]),o($VK,$VW4,{407:1278,76:$VX4,77:[1,1279]}),o($VK,$VW4,{407:1281,76:$VX4}),{77:[1,1282]},{2:$V1,3:244,4:$V2,5:$V3,199:1283},o($VD3,[2,731]),o($VD3,[2,733]),o($VD3,[2,1146]),{143:$VF1,145:$VG1,431:1284},o($VY4,[2,1147],{419:190,479:1285,144:1286,145:$VC1,420:$Vr1,424:$Vs1}),{76:$Vs4,139:[2,1151],481:1287,483:1288},o([10,74,76,78,132,139,145,152,306,310,420,424,602,764],$VM3,{490:851,493:852,137:$VS1}),o($VD3,[2,736]),o($VD3,$VK3),{74:$VI3,78:[1,1289]},o($VO3,[2,1165],{492:1290,497:1291,152:$VT1}),o($VN3,[2,1164]),o($VO3,[2,745]),o($VO3,[2,1170]),o($VK,[2,490],{77:[1,1292]}),{76:[1,1294],77:[1,1293]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,148:[1,1295],154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VI4,$VZ4,{79:75,184:99,468:1296,40:1299,89:$V7,146:$V_4,189:$Vb,470:$V$4}),o($Vt4,[2,1140]),o($VQ3,[2,723]),{230:[1,1300]},o($V05,[2,769]),o($V05,[2,770]),o($V05,[2,771]),o($VR3,$VS3,{510:1301,95:$VT3,514:$VU3,515:$VV3,516:$VW3}),o($VR3,[2,768]),o($VK,[2,312]),o($VK,[2,313]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1302,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VV1,[2,690],{124:[1,1303]}),o($Vx4,[2,541]),{131:[1,1305],388:1304,390:[1,1306]},o($Vx4,[2,5]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1307,419:190,420:$Vr1,424:$Vs1},o($VK,[2,455],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,589]),o($VK,[2,590]),{2:$V1,3:244,4:$V2,5:$V3,199:1308},o($VK,[2,670]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1309,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1310,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1311],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1312],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:168,4:$V2,5:$V3,40:1313,56:165,77:$VU,79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1314,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1315]},{74:$Vx3,78:[1,1316]},o($VB1,[2,426]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1317,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,40:1318,56:165,77:$VU,78:[1,1320],79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1319,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,429]),o($VB1,[2,431]),o($VB1,$V15,{275:1321,276:$V25}),{78:[1,1323],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1324],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1325,4:$V2,5:$V3,180:[1,1326]},o($VD2,[2,619]),o($VB1,[2,363]),{306:[1,1327]},o($VB1,[2,370]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,306:[2,374],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1328,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:1329,387:878,389:$VY3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1330,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD2,[2,641]),o($V74,[2,648]),o($V84,[2,636]),o($VH4,$VG4),o($VD2,[2,638]),o($Vb4,[2,643]),o($Vb4,[2,645]),o($Vb4,[2,646]),o($Vb4,[2,647]),o($VI4,[2,457],{74:$VJ4}),{77:[1,1332],143:$VY,144:1333,145:$VC1,152:$V$,181:$V31,201:1334,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,463]),{74:$V35,78:[1,1335]},{74:$V45,78:[1,1337]},o([74,78,99,112,115,116,123,124,133,136,138,139,140,141,142,154,170,171,179,180,311,312,313,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333],$V55),o($V65,[2,479],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{40:1341,77:$Ve4,79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:1339,342:1340,344:$Vd4,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,461],{74:$VJ4}),o($VK,[2,717],{457:1342,458:1343,459:1344,308:$VM4,464:[1,1345]}),o($V75,[2,701]),o($V75,[2,702]),{154:[1,1347],460:[1,1346]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,308:[2,698],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VI2,[2,179]),{2:$V1,3:1348,4:$V2,5:$V3},o($VK,[2,574]),o($V85,[2,238],{84:1349,128:[1,1350]}),o($VN4,[2,1046]),{77:[1,1351]},{77:[1,1352]},o($Vf4,[2,169],{204:1353,215:1355,205:1356,216:1357,221:1360,74:$V95,206:$Va5,208:$Vb5,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5}),{2:$V1,3:219,4:$V2,5:$V3,40:711,77:$Vw1,79:75,89:$V7,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,184:99,189:$Vb,199:213,200:215,201:214,202:217,203:1369,209:1211,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($Vk5,[2,177]),{2:$V1,3:1011,4:$V2,5:$V3,110:1370,111:1009,112:$Vg4},o($VO4,[2,87]),o($Vh4,[2,147],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{78:[1,1371]},{74:$Vx3,78:[2,1066]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,78:[2,1059],94:1376,111:149,113:153,120:1372,121:1373,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,242:[1,1375],254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,98]),o($VP4,[2,1062],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1377],112:$VS2,114:736,115:$V$1,116:$V02,117:1378,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},o($VP4,[2,1063],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{78:[1,1379],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1380],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1381]},o($Vl4,[2,120]),{74:$VT4,78:[1,1382]},o($Vl4,[2,122]),{74:$Vx3,78:[1,1383]},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1384],112:$VS2,114:736,115:$V$1,116:$V02,117:1385,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1386],112:$VS2,114:736,115:$V$1,116:$V02,117:1387,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1388],112:$VS2,114:736,115:$V$1,116:$V02,117:1389,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1390],112:$VS2,114:736,115:$V$1,116:$V02,117:1391,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{74:$Vl5,78:[1,1392]},o($V65,[2,143],{419:190,3:733,114:736,144:758,158:768,160:769,117:1394,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),o($VQ4,$VR4,{178:1234,163:1395}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1396],112:$VS2,114:736,115:$V$1,116:$V02,117:1397,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1398],112:$VS2,114:736,115:$V$1,116:$V02,117:1399,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{74:$Vl5,78:[1,1400]},{74:$Vl5,78:[1,1401]},{74:$Vl5,78:[1,1402]},{74:$Vl5,78:[1,1403]},{78:[1,1404],153:1015,179:$Vi4,180:$Vj4,181:$Vk4},{74:$Vq4,78:[1,1405]},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,74:[1,1406],76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1407,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1408,4:$V2,5:$V3},{2:$V1,3:1409,4:$V2,5:$V3},o($VK,[2,597]),{2:$V1,3:1410,4:$V2,5:$V3},{113:1411,132:$VW,296:$Vj1},{78:[1,1412]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1413,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,336:1414,337:1066},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1415,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{124:[1,1416]},o($VK,[2,653],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VV4,[2,658]),{78:[1,1417],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,[2,654],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1418,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vr4,[2,272]),o($Vr4,[2,274]),o($Vr4,[2,276]),o($Vr4,[2,278]),o($VH1,[2,161]),o($VK,[2,569]),{148:[1,1419]},o($VK,[2,570]),o($VD3,[2,536],{387:878,7:879,272:1420,4:$VX3,386:[1,1421],389:$VY3}),o($VK,[2,571]),o($VK,[2,573]),{74:$Vx3,78:[1,1422]},o($VK,[2,577]),o($Vz2,[2,345]),{74:[1,1423],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1424],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1425],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1426],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,[2,581]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1427,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1428,4:$V2,5:$V3},o($VK,[2,583]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1429,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1430]},{2:$V1,3:1431,4:$V2,5:$V3},{76:$Vs4,139:[2,1149],480:1432,483:1433},o($VY4,[2,1148]),{139:[1,1434]},{139:[2,1152]},o($VD3,[2,737]),o($VO3,[2,744]),o($VO3,[2,1166]),{2:$V1,3:1268,4:$V2,5:$V3,76:[1,1437],351:1435,358:1436,384:1438},{2:$V1,3:1011,4:$V2,5:$V3,100:1439,111:1440},{40:1441,79:75,89:$V7,184:99,189:$Vb},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1442,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,722]),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1443,336:1064,337:1066},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1444,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,727]),{2:$V1,3:244,4:$V2,5:$V3,199:1445},{335:$Vu4,338:$Vv4,339:$Vw4,511:1446},o($VV1,[2,691],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1447,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:[1,1448],78:[1,1449]},o($V65,[2,543]),o($V65,[2,544]),{74:$V45,78:[1,1450]},o($VV1,[2,565]),o($Vz4,[2,380],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($Vz4,[2,382],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,396]),o($VB1,[2,400]),{78:[1,1451]},{74:$Vx3,78:[1,1452]},o($VB1,[2,422]),o($VB1,[2,424]),{78:[1,1453],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1454]},{74:$Vx3,78:[1,1455]},o($VB1,[2,427]),o($VB1,[2,327]),{77:[1,1456]},o($VB1,$V15,{275:1457,276:$V25}),o($VB1,$V15,{275:1458,276:$V25}),o($VH4,[2,284]),o($VB1,[2,281]),o($VB1,[2,369]),o($V64,[2,373],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{74:[1,1460],78:[1,1459]},{74:[1,1462],78:[1,1461],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1325,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1463,419:190,420:$Vr1,424:$Vs1},o($VL4,[2,477]),o($VL4,[2,478]),{40:1466,77:$Ve4,79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:1464,342:1465,344:$Vd4,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,111:1467},o($VL4,[2,473]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1468,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1469,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,460],{74:$VJ4}),o($VI4,[2,467]),o($VK,[2,694]),o($V75,[2,699]),o($V75,[2,700]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1470,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{170:[1,1472],309:[1,1471]},{460:[1,1473]},o($VI2,[2,180]),o($Vm5,[2,240],{85:1474,232:[1,1475]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1476,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1477,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1478,4:$V2,5:$V3},o($Vf4,[2,170],{216:1357,221:1360,215:1479,205:1480,206:$Va5,208:$Vb5,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5}),{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:1481,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($Vn5,[2,205]),o($Vn5,[2,206]),{2:$V1,3:219,4:$V2,5:$V3,77:[1,1486],143:$VY,144:1484,145:$VZ,152:$V$,156:$VL,181:$V31,199:1483,200:1487,201:1485,202:1488,217:1482,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{207:[1,1489],223:$Vo5},{207:[1,1491],223:$Vp5},o($Vq5,[2,222]),{206:[1,1495],208:[1,1494],221:1493,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($Vq5,[2,224]),{223:[1,1496]},{208:[1,1498],223:[1,1497]},{208:[1,1500],223:[1,1499]},{208:[1,1501]},{223:[1,1502]},{223:[1,1503]},{74:$V95,204:1504,205:1356,206:$Va5,208:$Vb5,215:1355,216:1357,221:1360,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($VO4,[2,84]),o($Vl4,[2,100]),{74:$Vr5,78:[1,1505]},{78:[1,1507]},o($Vs5,[2,261]),{78:[2,1060]},o($Vs5,[2,263],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,242:[1,1508],243:[1,1509],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($Vl4,[2,99]),o($VP4,[2,1064],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,101]),o($Vl4,[2,102]),o($Vl4,[2,103]),o($Vl4,[2,121]),o($Vl4,[2,124]),o($Vl4,[2,127]),o($VP4,[2,1068],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,128]),o($VP4,[2,1070],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,129]),o($VP4,[2,1072],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,130]),o($VP4,[2,1076],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,131]),o($VQ4,[2,1083],{177:1510}),o($VQ4,[2,1086],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{74:$Vl5,78:[1,1511]},o($Vl4,[2,133]),o($VP4,[2,1078],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,134]),o($VP4,[2,1080],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,135]),o($Vl4,[2,136]),o($Vl4,[2,137]),o($Vl4,[2,138]),o($Vl4,[2,139]),o($Vl4,[2,140]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1512,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VS4,[2,1082],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($VK,[2,607]),o($VK,[2,603]),o($VK,[2,605]),o($VK,[2,601]),o($Vv3,[2,71]),o($VK,[2,449],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VU4,[2,452]),o($VU4,[2,453],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1513,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VV4,[2,662]),o($VK,[2,655],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:1514,4:$V2,5:$V3},o($VD3,[2,545],{385:1515,391:1516,392:1517,366:1525,154:$Vt5,187:$Vu5,230:$Vv5,297:$Vw5,343:$Vx5,356:$Vy5,368:$Vz5,369:$VA5,373:$VB5,374:$VC5}),o($VD3,[2,535]),o($VK,[2,576],{76:[1,1529]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1530,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1531,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1532,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1533,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:$Vx3,78:[1,1534]},o($VK,[2,585]),{74:$Vr5,78:[1,1535]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1536,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o([10,74,78,139,306,310,602,764],[2,741]),{139:[1,1537]},{139:[2,1150]},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1538,482:582,493:579,497:581},{78:[1,1539]},{74:[1,1540],78:[2,506]},{40:1541,79:75,89:$V7,184:99,189:$Vb},o($V65,[2,532]),{74:$V35,78:[1,1542]},o($Vk5,$V55),o($VK,[2,1133],{412:1543,413:1544,72:$VD5}),o($VI4,$VZ4,{79:75,184:99,114:625,327:637,40:1299,468:1546,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V_4,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,470:$V$4}),o($VI4,[2,725],{74:$VT4}),o($VI4,[2,726],{74:$Vx3}),o([10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],[2,1181],{512:1547,3:1548,2:$V1,4:$V2,5:$V3,76:[1,1549]}),o($VE5,[2,1183],{513:1550,76:[1,1551]}),o($VV1,[2,692],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{131:[1,1552]},o($Vx4,[2,538]),o($Vx4,[2,540]),o($VB1,[2,412]),o($VB1,[2,413]),o($VB1,[2,439]),o($VB1,[2,423]),o($VB1,[2,425]),{118:$VF5,277:1553,278:1554,279:[1,1555]},o($VB1,[2,328]),o($VB1,[2,329]),o($VB1,[2,316]),{131:[1,1557]},o($VB1,[2,318]),{131:[1,1558]},{74:$V45,78:[1,1559]},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1560,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,465],{74:$VJ4}),o($VI4,[2,468]),o($Vk5,[2,488]),o($V65,[2,480],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VI4,[2,459],{74:$VJ4}),o($VK,[2,718],{74:$Vq4,198:[1,1561]}),{335:$VG5,338:$VH5,461:1562},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1565,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{119:[1,1567],170:[1,1568],309:[1,1566]},o($VI5,[2,259],{86:1569,118:[1,1570]}),{119:[1,1571]},o($V85,[2,239],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{95:[1,1572],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{95:[1,1573]},o($Vn5,[2,203]),o($Vn5,[2,204]),o($Vk5,[2,178]),o($Vn5,[2,237],{218:1574,230:[1,1575],231:[1,1576]}),o($VJ5,[2,208],{3:1577,2:$V1,4:$V2,5:$V3,76:[1,1578]}),o($VK5,[2,1095],{219:1579,76:[1,1580]}),{2:$V1,3:1581,4:$V2,5:$V3,76:[1,1582]},{40:1583,79:75,89:$V7,184:99,189:$Vb},o($VJ5,[2,216],{3:1584,2:$V1,4:$V2,5:$V3,76:[1,1585]}),o($VJ5,[2,219],{3:1586,2:$V1,4:$V2,5:$V3,76:[1,1587]}),{77:[1,1588]},o($Vq5,[2,234]),{77:[1,1589]},o($Vq5,[2,230]),o($Vq5,[2,223]),{223:$Vp5},{223:$Vo5},o($Vq5,[2,225]),o($Vq5,[2,226]),{223:[1,1590]},o($Vq5,[2,228]),{223:[1,1591]},{223:[1,1592]},o($Vq5,[2,232]),o($Vq5,[2,233]),{78:[1,1593],205:1480,206:$Va5,208:$Vb5,215:1479,216:1357,221:1360,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($Vl4,[2,91]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1594,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,92]),o($Vs5,[2,264]),{244:[1,1595]},o($V65,[2,142],{419:190,3:733,114:736,144:758,158:768,160:769,117:1596,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),o($Vl4,[2,132]),{74:$Vx3,78:[1,1597]},o($VU4,[2,454],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,572]),o($VD3,[2,534]),o($VD3,[2,546],{366:1525,392:1598,154:$Vt5,187:$Vu5,230:$Vv5,297:$Vw5,343:$Vx5,356:$Vy5,368:$Vz5,369:$VA5,373:$VB5,374:$VC5}),o($Vw3,[2,548]),{370:[1,1599]},{370:[1,1600]},{2:$V1,3:244,4:$V2,5:$V3,199:1601},o($Vw3,[2,554],{77:[1,1602]}),{2:$V1,3:114,4:$V2,5:$V3,77:[1,1604],113:251,131:$VV,132:$VW,143:$VY,152:$V$,156:$VL,181:$V31,196:250,200:1605,201:254,257:252,258:253,265:$VD1,274:1603,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1},o($Vw3,[2,558]),{297:[1,1606]},o($Vw3,[2,560]),o($Vw3,[2,561]),{335:[1,1607]},{77:[1,1608]},{2:$V1,3:1609,4:$V2,5:$V3},{78:[1,1610],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1611],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1612],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1613],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,$VW4,{407:1614,76:$VX4}),o($VK,[2,591]),{74:$Vr5,78:[1,1615]},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1616,482:582,493:579,497:581},o($VD3,[2,735]),o($VK,[2,493],{352:1617,354:1618,355:1619,4:$VL5,243:$VM5,343:$VN5,356:$VO5}),o($VP5,$VQ5,{3:1268,359:1624,384:1625,360:1626,361:1627,2:$V1,4:$V2,5:$V3,367:$VR5}),{78:[2,507]},{76:[1,1629]},o($VK,[2,609]),o($VK,[2,1134]),{368:[1,1631],414:[1,1630]},o($VI4,[2,728]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1632,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,762]),o($VE5,[2,1182]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1633,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VE5,[2,1184]),{78:[1,1634]},{78:[1,1635],118:$VF5,278:1636},{78:[1,1637]},{119:[1,1638]},{119:[1,1639]},{78:[1,1640]},{78:[1,1641]},o($VL4,[2,476]),o($VI4,[2,464],{74:$VJ4}),{2:$V1,3:244,4:$V2,5:$V3,143:$VF1,145:$VG1,199:1643,431:1642},o($V75,[2,703]),o($V75,[2,705]),{146:[1,1644]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1645],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{339:$VS5,462:1646},{417:[1,1649],463:[1,1648]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1650,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VT5,[2,267],{87:1651,245:[1,1652],247:[1,1653]}),{119:[1,1654]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1655,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1661,4:$V2,5:$V3},{2:$V1,3:1662,4:$V2,5:$V3},o($Vn5,[2,207]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1663,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1664,111:1440},o($VJ5,[2,209]),{2:$V1,3:1665,4:$V2,5:$V3},o($VJ5,[2,1097],{220:1666,3:1667,2:$V1,4:$V2,5:$V3}),o($VK5,[2,1096]),o($VJ5,[2,212]),{2:$V1,3:1668,4:$V2,5:$V3},{78:[1,1669]},o($VJ5,[2,217]),{2:$V1,3:1670,4:$V2,5:$V3},o($VJ5,[2,220]),{2:$V1,3:1671,4:$V2,5:$V3},{40:1672,79:75,89:$V7,184:99,189:$Vb},{40:1673,79:75,89:$V7,184:99,189:$Vb},o($Vq5,[2,227]),o($Vq5,[2,229]),o($Vq5,[2,231]),o($Vf4,[2,171]),o($Vs5,[2,262]),o($Vs5,[2,265],{242:[1,1674]}),o($VQ4,[2,1084],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,141]),o($Vw3,[2,547]),o($Vw3,[2,550]),{374:[1,1675]},o($Vw3,[2,1127],{395:1676,393:1677,77:$VX5}),{131:$VV,196:1679},o($Vw3,[2,555]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1680,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vw3,[2,557]),o($Vw3,[2,559]),{2:$V1,3:114,4:$V2,5:$V3,77:[1,1682],113:251,131:$VV,132:$VW,143:$VY,152:$V$,156:$VL,181:$V31,196:250,200:255,201:254,257:252,258:253,265:$VD1,274:1681,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1683,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,578]),o($Vz2,[2,349]),o($Vz2,[2,350]),o($Vz2,[2,351]),o($Vz2,[2,352]),o($VK,[2,582]),o($VK,[2,592]),o($VD3,[2,734]),o($VK,[2,489]),o($VK,[2,494],{355:1684,4:$VL5,243:$VM5,343:$VN5,356:$VO5}),o($VY5,[2,496]),o($VY5,[2,497]),{124:[1,1685]},{124:[1,1686]},{124:[1,1687]},{74:[1,1688],78:[2,505]},o($V65,[2,533]),o($V65,[2,508]),{187:[1,1696],193:[1,1697],362:1689,363:1690,364:1691,365:1692,366:1693,368:$Vz5,369:[1,1694],370:[1,1698],373:[1,1695]},{2:$V1,3:1699,4:$V2,5:$V3},{40:1700,79:75,89:$V7,184:99,189:$Vb},{415:[1,1701]},{416:[1,1702]},o($VK,[2,761]),o($VK,[2,763]),o($Vx4,[2,537]),o($VB1,[2,331]),{78:[1,1703]},o($VB1,[2,332]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1704,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1705,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,317]),o($VB1,[2,319]),{2:$V1,3:1706,4:$V2,5:$V3},o($VK,[2,720],{77:[1,1707]}),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1708,336:1064,337:1066},{335:$VG5,338:$VH5,461:1709},o($V75,[2,707]),{77:[1,1711],343:[1,1712],344:[1,1710]},{170:[1,1714],309:[1,1713]},{170:[1,1716],309:[1,1715]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1717],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vh4,[2,250],{88:1718,162:[1,1719],168:[1,1721],169:[1,1720]}),{131:$VV,196:1722},{131:$VV,196:1723},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1724,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vm5,[2,248],{234:1725,74:$VZ5,239:[1,1727]}),o($V_5,[2,242]),{146:[1,1728]},{77:[1,1729]},{77:[1,1730]},o($V_5,[2,247],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{78:[2,1051],96:1731,99:[1,1733],102:1732},{99:[1,1734]},o($Vn5,[2,235],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($Vn5,[2,236],{74:$V35}),o($VJ5,[2,210]),o($VJ5,[2,211]),o($VJ5,[2,1098]),o($VJ5,[2,213]),{2:$V1,3:1735,4:$V2,5:$V3,76:[1,1736]},o($VJ5,[2,218]),o($VJ5,[2,221]),{78:[1,1737]},{78:[1,1738]},o($Vs5,[2,266]),{2:$V1,3:244,4:$V2,5:$V3,199:1739},o($Vw3,[2,552]),o($Vw3,[2,1128]),{2:$V1,3:1740,4:$V2,5:$V3},{74:[1,1741]},{78:[1,1742],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vw3,[2,562]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1743,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1744],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VY5,[2,495]),{2:$V1,3:1745,4:$V2,5:$V3},{131:$VV,196:1746},{2:$V1,3:1747,4:$V2,5:$V3},o($VP5,$VQ5,{361:1627,360:1748,367:$VR5}),o($VD3,[2,510]),o($VD3,[2,511]),o($VD3,[2,512]),o($VD3,[2,513]),o($VD3,[2,514]),{370:[1,1749]},{370:[1,1750]},o($V$5,[2,1121],{382:1751,370:[1,1752]}),{2:$V1,3:1753,4:$V2,5:$V3},{2:$V1,3:1754,4:$V2,5:$V3},o($VP5,[2,516]),o($VK,[2,1131],{411:1755,413:1756,72:$VD5}),o($VK,[2,610]),o($VK,[2,611],{367:[1,1757]}),o($VB1,[2,333]),o([78,118],[2,334],{74:$VZ5}),{74:$Vr5,78:[2,335]},o($VK,[2,719]),{2:$V1,3:1011,4:$V2,5:$V3,100:1758,111:1440},o($V75,[2,706],{74:$VT4}),o($V75,[2,704]),{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1759,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1760,111:1440},{344:[1,1761]},{339:$VS5,462:1762},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1763,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{339:$VS5,462:1764},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1765,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{339:$VS5,462:1766},o($Vh4,[2,72]),{40:1767,79:75,89:$V7,164:[1,1768],184:99,189:$Vb,240:[1,1769]},{40:1770,79:75,89:$V7,184:99,189:$Vb,240:[1,1771]},{40:1772,79:75,89:$V7,184:99,189:$Vb,240:[1,1773]},o($VT5,[2,270],{246:1774,247:[1,1775]}),{248:1776,249:[2,1099],766:[1,1777]},o($VI5,[2,260],{74:$Vr5}),o($Vm5,[2,241]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,235:1778,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1779,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1780]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1781,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1782,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1783]},{78:[2,1052]},{77:[1,1784]},{77:[1,1785]},o($VJ5,[2,214]),{2:$V1,3:1786,4:$V2,5:$V3},{2:$V1,3:1787,4:$V2,5:$V3,76:[1,1788]},{2:$V1,3:1789,4:$V2,5:$V3,76:[1,1790]},o($Vw3,[2,1125],{394:1791,393:1792,77:$VX5}),{78:[1,1793]},{131:$VV,196:1794},o($Vw3,[2,556]),{78:[1,1795],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vw3,[2,517]),o($VY5,[2,498]),o($VY5,[2,499]),o($VY5,[2,500]),o($V65,[2,509]),{2:$V1,3:1797,4:$V2,5:$V3,77:[2,1117],371:1796},{77:[1,1798]},{2:$V1,3:1800,4:$V2,5:$V3,77:[2,1123],383:1799},o($V$5,[2,1122]),{77:[1,1801]},{77:[1,1802]},o($VK,[2,608]),o($VK,[2,1132]),o($VP5,$VQ5,{361:1627,360:1803,367:$VR5}),{74:$V35,78:[1,1804]},o($V75,[2,713],{74:$VJ4}),{74:$V35,78:[1,1805]},o($V75,[2,715]),o($V75,[2,708]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1806],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($V75,[2,711]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1807],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($V75,[2,709]),o($Vh4,[2,251]),{40:1808,79:75,89:$V7,184:99,189:$Vb,240:[1,1809]},{40:1810,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,253]),{40:1811,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,254]),{40:1812,79:75,89:$V7,184:99,189:$Vb},o($VT5,[2,268]),{131:$VV,196:1813},{249:[1,1814]},{249:[2,1100]},o($V_5,[2,243]),o($Vm5,[2,249],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1815,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:$VZ5,78:[1,1816]},{74:$VZ5,78:[1,1817]},o($VN4,[2,1053],{97:1818,104:1819,3:1821,2:$V1,4:$V2,5:$V3,76:$V06}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1824,103:1822,105:1823,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1825,111:1440},o($VJ5,[2,215]),o($Vn5,[2,173]),{2:$V1,3:1826,4:$V2,5:$V3},o($Vn5,[2,175]),{2:$V1,3:1827,4:$V2,5:$V3},o($Vw3,[2,551]),o($Vw3,[2,1126]),o($Vw3,[2,549]),{78:[1,1828]},o($Vw3,[2,563]),{77:[1,1829]},{77:[2,1118]},{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1830},{77:[1,1833]},{77:[2,1124]},{2:$V1,3:1011,4:$V2,5:$V3,100:1834,111:1440},{2:$V1,3:1011,4:$V2,5:$V3,100:1835,111:1440},o($VK,[2,612]),o($VK,[2,721]),{343:[1,1837],344:[1,1836]},{339:$VS5,462:1838},{335:$VG5,338:$VH5,461:1839},o($Vh4,[2,252]),{40:1840,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,255]),o($Vh4,[2,257]),o($Vh4,[2,258]),o($VT5,[2,271]),{131:[2,1101],250:1841,645:[1,1842]},{74:$VZ5,78:[1,1843]},o($V_5,[2,245]),o($V_5,[2,246]),o($VN4,[2,74]),o($VN4,[2,1054]),{2:$V1,3:1844,4:$V2,5:$V3},o($VN4,[2,78]),{74:[1,1846],78:[1,1845]},o($V65,[2,80]),o($V65,[2,81],{114:625,327:637,76:[1,1847],99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{74:$V35,78:[1,1848]},o($Vn5,[2,174]),o($Vn5,[2,176]),o($Vw3,[2,553]),{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1849},{74:$V26,78:[1,1850]},o($V65,[2,528]),o($V65,[2,529]),{2:$V1,3:1011,4:$V2,5:$V3,100:1852,111:1440},{74:$V35,78:[1,1853]},{74:$V35,78:[1,1854]},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1855,419:190,420:$Vr1,424:$Vs1},{344:[1,1856]},o($V75,[2,710]),o($V75,[2,712]),o($Vh4,[2,256]),{131:$VV,196:1857},{131:[2,1102]},o($V_5,[2,244]),o($VN4,[2,77]),{78:[2,76]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1824,105:1858,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1859,4:$V2,5:$V3},{78:[1,1860]},{74:$V26,78:[1,1861]},{374:[1,1862]},{2:$V1,3:1863,4:$V2,5:$V3,132:[1,1864]},{74:$V35,78:[1,1865]},o($VD3,[2,526]),o($VD3,[2,527]),o($V75,[2,714],{74:$VJ4}),o($V75,[2,716]),o($V36,[2,1103],{251:1866,766:[1,1867]}),o($V65,[2,79]),o($V65,[2,82]),o($VN4,[2,1055],{3:1821,101:1868,104:1869,2:$V1,4:$V2,5:$V3,76:$V06}),o($VD3,[2,518]),{2:$V1,3:244,4:$V2,5:$V3,199:1870},o($V65,[2,530]),o($V65,[2,531]),o($VD3,[2,525]),o($VT5,[2,1105],{252:1871,415:[1,1872]}),o($V36,[2,1104]),o($VN4,[2,75]),o($VN4,[2,1056]),o($V46,[2,1119],{375:1873,377:1874,77:[1,1875]}),o($VT5,[2,269]),o($VT5,[2,1106]),o($VD3,[2,521],{376:1876,378:1877,230:[1,1878]}),o($V46,[2,1120]),{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1879},o($VD3,[2,519]),{230:[1,1881],379:1880},{338:[1,1882]},{74:$V26,78:[1,1883]},o($VD3,[2,522]),{335:[1,1884]},{380:[1,1885]},o($V46,[2,520]),{380:[1,1886]},{381:[1,1887]},{381:[1,1888]},{230:[2,523]},o($VD3,[2,524])],
-defaultActions: {105:[2,6],194:[2,336],195:[2,337],196:[2,338],197:[2,339],198:[2,340],199:[2,341],200:[2,342],201:[2,343],202:[2,344],209:[2,695],591:[2,1142],653:[2,1107],654:[2,1108],710:[2,696],780:[2,1073],781:[2,1074],926:[2,446],927:[2,447],928:[2,448],987:[2,697],1288:[2,1152],1375:[2,1060],1433:[2,1150],1541:[2,507],1732:[2,1052],1777:[2,1100],1797:[2,1118],1800:[2,1124],1842:[2,1102],1845:[2,76],1887:[2,523]},
-parseError: function parseError(str, hash) {
- if (hash.recoverable) {
- this.trace(str);
- } else {
- var error = new Error(str);
- error.hash = hash;
- throw error;
- }
-},
-parse: function parse(input) {
- var self = this,
- stack = [0],
- tstack = [], // token stack
- vstack = [null], // semantic value stack
- lstack = [], // location stack
- table = this.table,
- yytext = '',
- yylineno = 0,
- yyleng = 0,
- recovering = 0,
- TERROR = 2,
- EOF = 1;
-
- var args = lstack.slice.call(arguments, 1);
-
- //this.reductionCount = this.shiftCount = 0;
-
- var lexer = Object.create(this.lexer);
- var sharedState = { yy: {} };
- // copy state
- for (var k in this.yy) {
- if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
- sharedState.yy[k] = this.yy[k];
- }
- }
-
- lexer.setInput(input, sharedState.yy);
- sharedState.yy.lexer = lexer;
- sharedState.yy.parser = this;
- if (typeof lexer.yylloc == 'undefined') {
- lexer.yylloc = {};
- }
- var yyloc = lexer.yylloc;
- lstack.push(yyloc);
-
- var ranges = lexer.options && lexer.options.ranges;
-
- if (typeof sharedState.yy.parseError === 'function') {
- this.parseError = sharedState.yy.parseError;
- } else {
- this.parseError = Object.getPrototypeOf(this).parseError;
- }
-
- function popStack (n) {
- stack.length = stack.length - 2 * n;
- vstack.length = vstack.length - n;
- lstack.length = lstack.length - n;
- }
-
-_token_stack:
- var lex = function () {
- var token;
- token = lexer.lex() || EOF;
- // if token isn't its numeric value, convert
- if (typeof token !== 'number') {
- token = self.symbols_[token] || token;
- }
- return token;
- }
-
- var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
- while (true) {
- // retreive state number from top of stack
- state = stack[stack.length - 1];
-
- // use default actions if available
- if (this.defaultActions[state]) {
- action = this.defaultActions[state];
- } else {
- if (symbol === null || typeof symbol == 'undefined') {
- symbol = lex();
- }
- // read action for current state and first input
- action = table[state] && table[state][symbol];
- }
-
-_handle_error:
- // handle parse error
- if (typeof action === 'undefined' || !action.length || !action[0]) {
- var error_rule_depth;
- var errStr = '';
-
- // Return the rule stack depth where the nearest error rule can be found.
- // Return FALSE when no error recovery rule was found.
- function locateNearestErrorRecoveryRule(state) {
- var stack_probe = stack.length - 1;
- var depth = 0;
-
- // try to recover from error
- for(;;) {
- // check for error recovery rule in this state
- if ((TERROR.toString()) in table[state]) {
- return depth;
- }
- if (state === 0 || stack_probe < 2) {
- return false; // No suitable error recovery rule available.
- }
- stack_probe -= 2; // popStack(1): [symbol, action]
- state = stack[stack_probe];
- ++depth;
- }
- }
-
- if (!recovering) {
- // first see if there's any chance at hitting an error recovery rule:
- error_rule_depth = locateNearestErrorRecoveryRule(state);
-
- // Report error
- expected = [];
- for (p in table[state]) {
- if (this.terminals_[p] && p > TERROR) {
- expected.push("'"+this.terminals_[p]+"'");
- }
- }
- if (lexer.showPosition) {
- errStr = 'Parse error on line '+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + (this.terminals_[symbol] || symbol)+ "'";
- } else {
- errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
- (symbol == EOF ? "end of input" :
- ("'"+(this.terminals_[symbol] || symbol)+"'"));
- }
- this.parseError(errStr, {
- text: lexer.match,
- token: this.terminals_[symbol] || symbol,
- line: lexer.yylineno,
- loc: yyloc,
- expected: expected,
- recoverable: (error_rule_depth !== false)
- });
- } else if (preErrorSymbol !== EOF) {
- error_rule_depth = locateNearestErrorRecoveryRule(state);
- }
-
- // just recovered from another error
- if (recovering == 3) {
- if (symbol === EOF || preErrorSymbol === EOF) {
- throw new Error(errStr || 'Parsing halted while starting to recover from another error.');
- }
-
- // discard current lookahead and grab another
- yyleng = lexer.yyleng;
- yytext = lexer.yytext;
- yylineno = lexer.yylineno;
- yyloc = lexer.yylloc;
- symbol = lex();
- }
-
- // try to recover from error
- if (error_rule_depth === false) {
- throw new Error(errStr || 'Parsing halted. No suitable error recovery rule available.');
- }
- popStack(error_rule_depth);
-
- preErrorSymbol = (symbol == TERROR ? null : symbol); // save the lookahead token
- symbol = TERROR; // insert generic error symbol as new lookahead
- state = stack[stack.length-1];
- action = table[state] && table[state][TERROR];
- recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
- }
-
- // this shouldn't happen, unless resolve defaults are off
- if (action[0] instanceof Array && action.length > 1) {
- throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
- }
-
- switch (action[0]) {
- case 1: // shift
- //this.shiftCount++;
-
- stack.push(symbol);
- vstack.push(lexer.yytext);
- lstack.push(lexer.yylloc);
- stack.push(action[1]); // push state
- symbol = null;
- if (!preErrorSymbol) { // normal execution/no error
- yyleng = lexer.yyleng;
- yytext = lexer.yytext;
- yylineno = lexer.yylineno;
- yyloc = lexer.yylloc;
- if (recovering > 0) {
- recovering--;
- }
- } else {
- // error just occurred, resume old lookahead f/ before error
- symbol = preErrorSymbol;
- preErrorSymbol = null;
- }
- break;
-
- case 2:
- // reduce
- //this.reductionCount++;
-
- len = this.productions_[action[1]][1];
-
- // perform semantic action
- yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
- // default location, uses first token for firsts, last for lasts
- yyval._$ = {
- first_line: lstack[lstack.length-(len||1)].first_line,
- last_line: lstack[lstack.length-1].last_line,
- first_column: lstack[lstack.length-(len||1)].first_column,
- last_column: lstack[lstack.length-1].last_column
- };
- if (ranges) {
- yyval._$.range = [lstack[lstack.length-(len||1)].range[0], lstack[lstack.length-1].range[1]];
- }
- r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
-
- if (typeof r !== 'undefined') {
- return r;
- }
-
- // pop off stack
- if (len) {
- stack = stack.slice(0,-1*len*2);
- vstack = vstack.slice(0, -1*len);
- lstack = lstack.slice(0, -1*len);
- }
-
- stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)
- vstack.push(yyval.$);
- lstack.push(yyval._$);
- // goto new state = table[STATE][NONTERMINAL]
- newState = table[stack[stack.length-2]][stack[stack.length-1]];
- stack.push(newState);
- break;
-
- case 3:
- // accept
- return true;
- }
-
- }
-
- return true;
-}};
-
-// from https://www.postgresql.org/docs/current/static/sql-keywords-appendix.html
-// JSON.stringify([].slice.call(document.querySelectorAll('tr')).filter(x => x.children.length == 5 && x.children[2].innerText == 'reserved').map(x => x.children[0].innerText))
-
-var nonReserved = ["A","ABSENT","ABSOLUTE","ACCORDING","ACTION","ADA","ADD","ADMIN","AFTER","ALWAYS","ASC","ASSERTION","ASSIGNMENT","ATTRIBUTE","ATTRIBUTES","BASE64","BEFORE","BERNOULLI","BLOCKED","BOM","BREADTH","C","CASCADE","CATALOG","CATALOG_NAME","CHAIN","CHARACTERISTICS","CHARACTERS","CHARACTER_SET_CATALOG","CHARACTER_SET_NAME","CHARACTER_SET_SCHEMA","CLASS_ORIGIN","COBOL","COLLATION","COLLATION_CATALOG","COLLATION_NAME","COLLATION_SCHEMA","COLUMNS","COLUMN_NAME","COMMAND_FUNCTION","COMMAND_FUNCTION_CODE","COMMITTED","CONDITION_NUMBER","CONNECTION","CONNECTION_NAME","CONSTRAINTS","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONSTRUCTOR","CONTENT","CONTINUE","CONTROL","CURSOR_NAME","DATA","DATETIME_INTERVAL_CODE","DATETIME_INTERVAL_PRECISION","DB","DEFAULTS","DEFERRABLE","DEFERRED","DEFINED","DEFINER","DEGREE","DEPTH","DERIVED","DESC","DESCRIPTOR","DIAGNOSTICS","DISPATCH","DOCUMENT","DOMAIN","DYNAMIC_FUNCTION","DYNAMIC_FUNCTION_CODE","EMPTY","ENCODING","ENFORCED","EXCLUDE","EXCLUDING","EXPRESSION","FILE","FINAL","FIRST","FLAG","FOLLOWING","FORTRAN","FOUND","FS","G","GENERAL","GENERATED","GO","GOTO","GRANTED","HEX","HIERARCHY","ID","IGNORE","IMMEDIATE","IMMEDIATELY","IMPLEMENTATION","INCLUDING","INCREMENT","INDENT","INITIALLY","INPUT","INSTANCE","INSTANTIABLE","INSTEAD","INTEGRITY","INVOKER","ISOLATION","K","KEY","KEY_MEMBER","KEY_TYPE","LAST","LENGTH","LEVEL","LIBRARY","LIMIT","LINK","LOCATION","LOCATOR","M","MAP","MAPPING","MATCHED","MAXVALUE","MESSAGE_LENGTH","MESSAGE_OCTET_LENGTH","MESSAGE_TEXT","MINVALUE","MORE","MUMPS","NAME","NAMES","NAMESPACE","NESTING","NEXT","NFC","NFD","NFKC","NFKD","NIL","NORMALIZED","NULLABLE","NULLS","NUMBER","OBJECT","OCTETS","OFF","OPTION","OPTIONS","ORDERING","ORDINALITY","OTHERS","OUTPUT","OVERRIDING","P","PAD","PARAMETER_MODE","PARAMETER_NAME","PARAMETER_ORDINAL_POSITION","PARAMETER_SPECIFIC_CATALOG","PARAMETER_SPECIFIC_NAME","PARAMETER_SPECIFIC_SCHEMA","PARTIAL","PASCAL","PASSING","PASSTHROUGH","PATH","PERMISSION","PLACING","PLI","PRECEDING","PRESERVE","PRIOR","PRIVILEGES","PUBLIC","READ","RECOVERY","RELATIVE","REPEATABLE","REQUIRING","RESPECT","RESTART","RESTORE","RESTRICT","RETURNED_CARDINALITY","RETURNED_LENGTH","RETURNED_OCTET_LENGTH","RETURNED_SQLSTATE","RETURNING","ROLE","ROUTINE","ROUTINE_CATALOG","ROUTINE_NAME","ROUTINE_SCHEMA","ROW_COUNT","SCALE","SCHEMA","SCHEMA_NAME","SCOPE_CATALOG","SCOPE_NAME","SCOPE_SCHEMA","SECTION","SECURITY","SELECTIVE","SELF","SEQUENCE","SERIALIZABLE","SERVER","SERVER_NAME","SESSION","SETS","SIMPLE","SIZE","SOURCE","SPACE","SPECIFIC_NAME","STANDALONE","STATE","STATEMENT","STRIP","STRUCTURE","STYLE","SUBCLASS_ORIGIN","T","TABLE_NAME","TEMPORARY","TIES","TOKEN","TOP_LEVEL_COUNT","TRANSACTION","TRANSACTIONS_COMMITTED","TRANSACTIONS_ROLLED_BACK","TRANSACTION_ACTIVE","TRANSFORM","TRANSFORMS","TRIGGER_CATALOG","TRIGGER_NAME","TRIGGER_SCHEMA","TYPE","UNBOUNDED","UNCOMMITTED","UNDER","UNLINK","UNNAMED","UNTYPED","URI","USAGE","USER_DEFINED_TYPE_CATALOG","USER_DEFINED_TYPE_CODE","USER_DEFINED_TYPE_NAME","USER_DEFINED_TYPE_SCHEMA","VALID","VERSION","VIEW","WHITESPACE","WORK","WRAPPER","WRITE","XMLDECLARATION","XMLSCHEMA","YES","ZONE"]
-
-parser.parseError = function(str, hash) {
- if (hash.expected && hash.expected.indexOf("'LITERAL'") > -1 && /[a-zA-Z_][a-zA-Z_0-9]*/.test(hash.token) && nonReserved.indexOf(hash.token) > -1) {
- return
- }
- throw new SyntaxError(str)
-}
-/* generated by jison-lex 0.3.4 */
-var lexer = (function(){
-var lexer = ({
-
-EOF:1,
-
-parseError:function parseError(str, hash) {
- if (this.yy.parser) {
- this.yy.parser.parseError(str, hash);
- } else {
- throw new Error(str);
- }
- },
-
-// resets the lexer, sets new input
-setInput:function (input, yy) {
- this.yy = yy || this.yy || {};
- this._input = input;
- this._more = this._backtrack = this.done = false;
- this.yylineno = this.yyleng = 0;
- this.yytext = this.matched = this.match = '';
- this.conditionStack = ['INITIAL'];
- this.yylloc = {
- first_line: 1,
- first_column: 0,
- last_line: 1,
- last_column: 0
- };
- if (this.options.ranges) {
- this.yylloc.range = [0,0];
- }
- this.offset = 0;
- return this;
- },
-
-// consumes and returns one char from the input
-input:function () {
- var ch = this._input[0];
- this.yytext += ch;
- this.yyleng++;
- this.offset++;
- this.match += ch;
- this.matched += ch;
- var lines = ch.match(/(?:\r\n?|\n).*/g);
- if (lines) {
- this.yylineno++;
- this.yylloc.last_line++;
- } else {
- this.yylloc.last_column++;
- }
- if (this.options.ranges) {
- this.yylloc.range[1]++;
- }
-
- this._input = this._input.slice(1);
- return ch;
- },
-
-// unshifts one char (or a string) into the input
-unput:function (ch) {
- var len = ch.length;
- var lines = ch.split(/(?:\r\n?|\n)/g);
-
- this._input = ch + this._input;
- this.yytext = this.yytext.substr(0, this.yytext.length - len);
- //this.yyleng -= len;
- this.offset -= len;
- var oldLines = this.match.split(/(?:\r\n?|\n)/g);
- this.match = this.match.substr(0, this.match.length - 1);
- this.matched = this.matched.substr(0, this.matched.length - 1);
-
- if (lines.length - 1) {
- this.yylineno -= lines.length - 1;
- }
- var r = this.yylloc.range;
-
- this.yylloc = {
- first_line: this.yylloc.first_line,
- last_line: this.yylineno + 1,
- first_column: this.yylloc.first_column,
- last_column: lines ?
- (lines.length === oldLines.length ? this.yylloc.first_column : 0)
- + oldLines[oldLines.length - lines.length].length - lines[0].length :
- this.yylloc.first_column - len
- };
-
- if (this.options.ranges) {
- this.yylloc.range = [r[0], r[0] + this.yyleng - len];
- }
- this.yyleng = this.yytext.length;
- return this;
- },
-
-// When called from action, caches matched text and appends it on next action
-more:function () {
- this._more = true;
- return this;
- },
-
-// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
-reject:function () {
- if (this.options.backtrack_lexer) {
- this._backtrack = true;
- } else {
- return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
- text: "",
- token: null,
- line: this.yylineno
- });
-
- }
- return this;
- },
-
-// retain first n characters of the match
-less:function (n) {
- this.unput(this.match.slice(n));
- },
-
-// displays already matched input, i.e. for error messages
-pastInput:function () {
- var past = this.matched.substr(0, this.matched.length - this.match.length);
- return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
- },
-
-// displays upcoming input, i.e. for error messages
-upcomingInput:function () {
- var next = this.match;
- if (next.length < 20) {
- next += this._input.substr(0, 20-next.length);
- }
- return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
- },
-
-// displays the character position where the lexing error occurred, i.e. for error messages
-showPosition:function () {
- var pre = this.pastInput();
- var c = new Array(pre.length + 1).join("-");
- return pre + this.upcomingInput() + "\n" + c + "^";
- },
-
-// test the lexed token: return FALSE when not a match, otherwise return token
-test_match:function (match, indexed_rule) {
- var token,
- lines,
- backup;
-
- if (this.options.backtrack_lexer) {
- // save context
- backup = {
- yylineno: this.yylineno,
- yylloc: {
- first_line: this.yylloc.first_line,
- last_line: this.last_line,
- first_column: this.yylloc.first_column,
- last_column: this.yylloc.last_column
- },
- yytext: this.yytext,
- match: this.match,
- matches: this.matches,
- matched: this.matched,
- yyleng: this.yyleng,
- offset: this.offset,
- _more: this._more,
- _input: this._input,
- yy: this.yy,
- conditionStack: this.conditionStack.slice(0),
- done: this.done
- };
- if (this.options.ranges) {
- backup.yylloc.range = this.yylloc.range.slice(0);
- }
- }
-
- lines = match[0].match(/(?:\r\n?|\n).*/g);
- if (lines) {
- this.yylineno += lines.length;
- }
- this.yylloc = {
- first_line: this.yylloc.last_line,
- last_line: this.yylineno + 1,
- first_column: this.yylloc.last_column,
- last_column: lines ?
- lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
- this.yylloc.last_column + match[0].length
- };
- this.yytext += match[0];
- this.match += match[0];
- this.matches = match;
- this.yyleng = this.yytext.length;
- if (this.options.ranges) {
- this.yylloc.range = [this.offset, this.offset += this.yyleng];
- }
- this._more = false;
- this._backtrack = false;
- this._input = this._input.slice(match[0].length);
- this.matched += match[0];
- token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
- if (this.done && this._input) {
- this.done = false;
- }
- if (token) {
- return token;
- } else if (this._backtrack) {
- // recover context
- for (var k in backup) {
- this[k] = backup[k];
- }
- return false; // rule action called reject() implying the next rule should be tested instead.
- }
- return false;
- },
-
-// return next match in input
-next:function () {
- if (this.done) {
- return this.EOF;
- }
- if (!this._input) {
- this.done = true;
- }
-
- var token,
- match,
- tempMatch,
- index;
- if (!this._more) {
- this.yytext = '';
- this.match = '';
- }
- var rules = this._currentRules();
- for (var i = 0; i < rules.length; i++) {
- tempMatch = this._input.match(this.rules[rules[i]]);
- if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
- match = tempMatch;
- index = i;
- if (this.options.backtrack_lexer) {
- token = this.test_match(tempMatch, rules[i]);
- if (token !== false) {
- return token;
- } else if (this._backtrack) {
- match = false;
- continue; // rule action called reject() implying a rule MISmatch.
- } else {
- // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
- return false;
- }
- } else if (!this.options.flex) {
- break;
- }
- }
- }
- if (match) {
- token = this.test_match(match, rules[index]);
- if (token !== false) {
- return token;
- }
- // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
- return false;
- }
- if (this._input === "") {
- return this.EOF;
- } else {
- return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
- text: "",
- token: null,
- line: this.yylineno
- });
- }
- },
-
-// return next match that has a token
-lex:function lex() {
- var r = this.next();
- if (r) {
- return r;
- } else {
- return this.lex();
- }
- },
-
-// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
-begin:function begin(condition) {
- this.conditionStack.push(condition);
- },
-
-// pop the previously active lexer condition state off the condition stack
-popState:function popState() {
- var n = this.conditionStack.length - 1;
- if (n > 0) {
- return this.conditionStack.pop();
- } else {
- return this.conditionStack[0];
- }
- },
-
-// produce the lexer rule set which is active for the currently active lexer condition state
-_currentRules:function _currentRules() {
- if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
- return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
- } else {
- return this.conditions["INITIAL"].rules;
- }
- },
-
-// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
-topState:function topState(n) {
- n = this.conditionStack.length - 1 - Math.abs(n || 0);
- if (n >= 0) {
- return this.conditionStack[n];
- } else {
- return "INITIAL";
- }
- },
-
-// alias for begin(condition)
-pushState:function pushState(condition) {
- this.begin(condition);
- },
-
-// return the number of states currently on the stack
-stateStackSize:function stateStackSize() {
- return this.conditionStack.length;
- },
-options: {"case-insensitive":true},
-performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
-var YYSTATE=YY_START;
-switch($avoiding_name_collisions) {
-case 0:return 266
-break;
-case 1:return 302
-break;
-case 2:return 420
-break;
-case 3:return 299
-break;
-case 4:return 5
-break;
-case 5:return 5
-break;
-case 6:return 296
-break;
-case 7:return 296
-break;
-case 8:return 132
-break;
-case 9:return 132
-break;
-case 10:return /* its a COMMENT */
-break;
-case 11:/* skip whitespace */
-break;
-case 12:return 316
-break;
-case 13:return 319
-break;
-case 14:yy_.yytext = 'VALUE';return 89
-break;
-case 15:yy_.yytext = 'VALUE';return 189
-break;
-case 16:yy_.yytext = 'ROW';return 189
-break;
-case 17:yy_.yytext = 'COLUMN';return 189
-break;
-case 18:yy_.yytext = 'MATRIX';return 189
-break;
-case 19:yy_.yytext = 'INDEX';return 189
-break;
-case 20:yy_.yytext = 'RECORDSET';return 189
-break;
-case 21:yy_.yytext = 'TEXT';return 189
-break;
-case 22:yy_.yytext = 'SELECT';return 189
-break;
-case 23:return 520
-break;
-case 24:return 381
-break;
-case 25:return 402
-break;
-case 26:return 515
-break;
-case 27:return 287
-break;
-case 28:return 269
-break;
-case 29:return 269
-break;
-case 30:return 164
-break;
-case 31:return 400
-break;
-case 32:return 170
-break;
-case 33:return 229
-break;
-case 34:return 166
-break;
-case 35:return 207
-break;
-case 36:return 288
-break;
-case 37:return 76
-break;
-case 38:return 418
-break;
-case 39:return 242
-break;
-case 40:return 404
-break;
-case 41:return 356
-break;
-case 42:return 284
-break;
-case 43:return 514
-break;
-case 44:return 437
-break;
-case 45:return 330
-break;
-case 46:return 441
-break;
-case 47:return 331
-break;
-case 48:return 315
-break;
-case 49:return 119
-break;
-case 50:return 112
-break;
-case 51:return 315
-break;
-case 52:return 112
-break;
-case 53:return 315
-break;
-case 54:return 112
-break;
-case 55:return 315
-break;
-case 56:return 508
-break;
-case 57:return 303
-break;
-case 58:return 271
-break;
-case 59:return 368
-break;
-case 60:return 130
-break;
-case 61:return 'CLOSE'
-break;
-case 62:return 243
-break;
-case 63:return 190
-break;
-case 64:return 190
-break;
-case 65:return 434
-break;
-case 66:return 367
-break;
-case 67:return 470
-break;
-case 68:return 440
-break;
-case 69:return 273
-break;
-case 70:return 240
-break;
-case 71:return 281
-break;
-case 72:return 267
-break;
-case 73:return 206
-break;
-case 74:return 238
-break;
-case 75:return 265
-break;
-case 76:return 'CURSOR'
-break;
-case 77:return 405
-break;
-case 78:return 291
-break;
-case 79:return 292
-break;
-case 80:return 448
-break;
-case 81:return 343
-break;
-case 82:return 338
-break;
-case 83:return 'DELETED'
-break;
-case 84:return 242
-break;
-case 85:return 406
-break;
-case 86:return 185
-break;
-case 87:return 396
-break;
-case 88:return 447
-break;
-case 89:return 135
-break;
-case 90:return 306
-break;
-case 91:return 389
-break;
-case 92:return 310
-break;
-case 93:return 314
-break;
-case 94:return 169
-break;
-case 95:return 508
-break;
-case 96:return 508
-break;
-case 97:return 298
-break;
-case 98:return 14
-break;
-case 99:return 295
-break;
-case 100:return 249
-break;
-case 101:return 285
-break;
-case 102:return 95
-break;
-case 103:return 373
-break;
-case 104:return 183
-break;
-case 105:return 227
-break;
-case 106:return 268
-break;
-case 107:return 313
-break;
-case 108:return 602
-break;
-case 109:return 472
-break;
-case 110:return 232
-break;
-case 111:return 236
-break;
-case 112:return 239
-break;
-case 113:return 156
-break;
-case 114:return 356
-break;
-case 115:return 332
-break;
-case 116:return 99
-break;
-case 117:return 193
-break;
-case 118:return 212
-break;
-case 119:return 224
-break;
-case 120:return 516
-break;
-case 121:return 339
-break;
-case 122:return 213
-break;
-case 123:return 168
-break;
-case 124:return 293
-break;
-case 125:return 198
-break;
-case 126:return 223
-break;
-case 127:return 370
-break;
-case 128:return 286
-break;
-case 129:return 'LET'
-break;
-case 130:return 225
-break;
-case 131:return 112
-break;
-case 132:return 245
-break;
-case 133:return 460
-break;
-case 134:return 191
-break;
-case 135:return 283
-break;
-case 136:return 390
-break;
-case 137:return 282
-break;
-case 138:return 452
-break;
-case 139:return 169
-break;
-case 140:return 403
-break;
-case 141:return 222
-break;
-case 142:return 645
-break;
-case 143:return 270
-break;
-case 144:return 244
-break;
-case 145:return 380
-break;
-case 146:return 154
-break;
-case 147:return 297
-break;
-case 148:return 433
-break;
-case 149:return 230
-break;
-case 150:return 415
-break;
-case 151:return 129
-break;
-case 152:return 247
-break;
-case 153:return 'OPEN'
-break;
-case 154:return 416
-break;
-case 155:return 171
-break;
-case 156:return 118
-break;
-case 157:return 208
-break;
-case 158:return 276
-break;
-case 159:return 172
-break;
-case 160:return 279
-break;
-case 161:return 765
-break;
-case 162:return 93
-break;
-case 163:return 16
-break;
-case 164:return 369
-break;
-case 165:return 442
-break;
-case 166:return 678
-break;
-case 167:return 15
-break;
-case 168:return 414
-break;
-case 169:return 194
-break;
-case 170:return 'REDUCE'
-break;
-case 171:return 374
-break;
-case 172:return 311
-break;
-case 173:return 517
-break;
-case 174:return 682
-break;
-case 175:return 107
-break;
-case 176:return 401
-break;
-case 177:return 175
-break;
-case 178:return 290
-break;
-case 179:return 443
-break;
-case 180:return 687
-break;
-case 181:return 173
-break;
-case 182:return 173
-break;
-case 183:return 226
-break;
-case 184:return 436
-break;
-case 185:return 237
-break;
-case 186:return 150
-break;
-case 187:return 766
-break;
-case 188:return 405
-break;
-case 189:return 89
-break;
-case 190:return 228
-break;
-case 191:return 146
-break;
-case 192:return 146
-break;
-case 193:return 409
-break;
-case 194:return 334
-break;
-case 195:return 417
-break;
-case 196:return 'STRATEGY'
-break;
-case 197:return 'STORE'
-break;
-case 198:return 280
-break;
-case 199:return 353
-break;
-case 200:return 353
-break;
-case 201:return 463
-break;
-case 202:return 357
-break;
-case 203:return 357
-break;
-case 204:return 192
-break;
-case 205:return 309
-break;
-case 206:return 'TIMEOUT'
-break;
-case 207:return 148
-break;
-case 208:return 195
-break;
-case 209:return 435
-break;
-case 210:return 435
-break;
-case 211:return 509
-break;
-case 212:return 294
-break;
-case 213:return 451
-break;
-case 214:return 162
-break;
-case 215:return 187
-break;
-case 216:return 98
-break;
-case 217:return 335
-break;
-case 218:return 408
-break;
-case 219:return 231
-break;
-case 220:return 149
-break;
-case 221:return 344
-break;
-case 222:return 134
-break;
-case 223:return 410
-break;
-case 224:return 308
-break;
-case 225:return 128
-break;
-case 226:return 439
-break;
-case 227:return 72
-break;
-case 228:return 435 /* Is this keyword required? */
-break;
-case 229:return 131
-break;
-case 230:return 131
-break;
-case 231:return 115
-break;
-case 232:return 137
-break;
-case 233:return 179
-break;
-case 234:return 317
-break;
-case 235:return 180
-break;
-case 236:return 133
-break;
-case 237:return 138
-break;
-case 238:return 326
-break;
-case 239:return 323
-break;
-case 240:return 325
-break;
-case 241:return 322
-break;
-case 242:return 320
-break;
-case 243:return 318
-break;
-case 244:return 319
-break;
-case 245:return 142
-break;
-case 246:return 141
-break;
-case 247:return 139
-break;
-case 248:return 321
-break;
-case 249:return 324
-break;
-case 250:return 140
-break;
-case 251:return 124
-break;
-case 252:return 324
-break;
-case 253:return 77
-break;
-case 254:return 78
-break;
-case 255:return 145
-break;
-case 256:return 424
-break;
-case 257:return 426
-break;
-case 258:return 300
-break;
-case 259:return 505
-break;
-case 260:return 507
-break;
-case 261:return 122
-break;
-case 262:return 116
-break;
-case 263:return 74
-break;
-case 264:return 333
-break;
-case 265:return 152
-break;
-case 266:return 764
-break;
-case 267:return 143
-break;
-case 268:return 181
-break;
-case 269:return 136
-break;
-case 270:return 123
-break;
-case 271:return 312
-break;
-case 272:return 4
-break;
-case 273:return 10
-break;
-case 274:return 'INVALID'
-break;
-}
-},
-rules: [/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:ARRAY\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:\|)/i,/^(?:VALUE\s+OF\s+SEARCH\b)/i,/^(?:VALUE\s+OF\s+SELECT\b)/i,/^(?:ROW\s+OF\s+SELECT\b)/i,/^(?:COLUMN\s+OF\s+SELECT\b)/i,/^(?:MATRIX\s+OF\s+SELECT\b)/i,/^(?:INDEX\s+OF\s+SELECT\b)/i,/^(?:RECORDSET\s+OF\s+SELECT\b)/i,/^(?:TEXT\s+OF\s+SELECT\b)/i,/^(?:SELECT\b)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AFTER\b)/i,/^(?:AGGR\b)/i,/^(?:AGGREGATE\b)/i,/^(?:AGGREGATOR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTO(_)?INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEFORE\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:~~\*)/i,/^(?:!~~\*)/i,/^(?:~~)/i,/^(?:!~~)/i,/^(?:ILIKE\b)/i,/^(?:NOT\s+ILIKE\b)/i,/^(?:CALL\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHECK\b)/i,/^(?:CLASS\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTENT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:CORRESPONDING\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE(S)?)/i,/^(?:DATEADD\b)/i,/^(?:DATEDIFF\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:ECHO\b)/i,/^(?:EDGE\b)/i,/^(?:END\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:ESCAPE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXEC\b)/i,/^(?:EXECUTE\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOR\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:FULL\b)/i,/^(?:FUNCTION\b)/i,/^(?:GLOB\b)/i,/^(?:GO\b)/i,/^(?:GRAPH\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INDEXED\b)/i,/^(?:INNER\b)/i,/^(?:INSTEAD\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTERVAL\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LET\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX(\s+)?(?=\())/i,/^(?:MAX(\s+)?(?=(,|\))))/i,/^(?:MIN(\s+)?(?=\())/i,/^(?:MERGE\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:ONLY\b)/i,/^(?:OF\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OPTION\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PATH\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PIVOT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:READ\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:REGEXP\b)/i,/^(?:REINDEX\b)/i,/^(?:RELATIVE\b)/i,/^(?:REMOVE\b)/i,/^(?:RENAME\b)/i,/^(?:REPEAT\b)/i,/^(?:REPLACE\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RETURN\b)/i,/^(?:RETURNS\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:ROWS\b)/i,/^(?:SCHEMA(S)?)/i,/^(?:SEARCH\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:SOURCE\b)/i,/^(?:STRATEGY\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TEMP\b)/i,/^(?:TEMPORARY\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:THEN\b)/i,/^(?:TIMEOUT\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRIGGER\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UNPIVOT\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE\b)/i,/^(?:VALUES\b)/i,/^(?:VERTEX\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:#)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:&)/i,/^(?:\|)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?::-)/i,/^(?:\?-)/i,/^(?:\.\.)/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:!)/i,/^(?:\^)/i,/^(?:~)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],
-conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274],"inclusive":true}}
-});
-return lexer;
-})();
-parser.lexer = lexer;
-function Parser () {
- this.yy = {};
-}
-Parser.prototype = parser;parser.Parser = Parser;
-return new Parser;
-})();
-
-if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
-exports.parser = alasqlparser;
-exports.Parser = alasqlparser.Parser;
-exports.parse = function () { return alasqlparser.parse.apply(alasqlparser, arguments); };
-exports.main = function commonjsMain(args) {
- if (!args[1]) {
- console.log('Usage: '+args[0]+' FILE');
- process.exit(1);
- }
- var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8");
- return exports.parser.parse(source);
-};
-if (typeof module !== 'undefined' && require.main === module) {
- exports.main(process.argv.slice(1));
-}
-}
-/**
- 12prettyflag.js - prettify
- @todo move this functionality to plugin
-*/
-
-/**
- Pretty flag - nice HTML output or standard text without any tags
- @type {boolean}
-*/
-
-alasql.prettyflag = false;
-
-/**
- Pretty output of SQL functions
- @function
- @param {string} sql SQL statement
- @param {boolean} flag value
- @return {string} HTML or text string with pretty output
-*/
-
-alasql.pretty = function(sql, flag) {
- var pf = alasql.prettyflag;
- alasql.prettyflag = !flag;
- var s = alasql.parse(sql).toString();
- alasql.prettyflag = pf;
- return s;
-};
-
-/*jshint unused:false*/
-/*
- Utilities for Alasql.js
-
- @todo Review the list of utilities
- @todo Find more effective utilities
-*/
-
-/**
- Alasql utility functions
- @type {object}
- */
-var utils = (alasql.utils = {});
-
-/**
- Convert NaN to undefined
- @function
- @param {string} s JavaScript string to be modified
- @return {string} Covered expression
-
- @example
-
- 123 => 123
- undefined => undefined
- NaN => undefined
-
- */
-function n2u(s) {
- return '(y=' + s + ',y===y?y:undefined)';
-}
-
-/**
- Return undefined if s undefined
- @param {string} s JavaScript string to be modified
- @return {string} Covered expression
-
- @example
-
- 123,a => a
- undefined,a => undefined
- NaN,a => undefined
-
- */
-function und(s, r) {
- return '(y=' + s + ',typeof y=="undefined"?undefined:' + r + ')';
-}
-
-/**
- Return always true. Stub for non-ecisting WHERE clause, because is faster then if(whenrfn) whenfn()
- @function
- @return {boolean} Always true
- */
-function returnTrue() {
- return true;
-}
-
-/**
- Return undefined. Stub for non-ecisting WHERE clause, because is faster then if(whenrfn) whenfn()
- @function
- @return {undefined} Always undefined
- */
-function returnUndefined() {}
-
-/**
- Escape string
- @function
- @param {string} s Source string
- @return {string} Escaped string
- @example
-
- Pit\er's => Pit\\er\'s
-
- */
-// based on joliss/js-string-escape
-var escapeq = (utils.escapeq = function(s) {
-
- return ('' + s).replace(/["'\\\n\r\u2028\u2029]/g, function(character) {
- // Escape all characters not included in SingleStringCharacters and
- // DoubleStringCharacters on
- // http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4
- switch (character) {
- case '"':
- case "'":
- case '\\':
- return '\\' + character;
- // Four possible LineTerminator characters need to be escaped:
- case '\n':
- return '\\n';
- case '\r':
- return '\\r';
- case '\u2028':
- return '\\u2028';
- case '\u2029':
- return '\\u2029';
- }
- });
-});
-
-/**
- Double quotes for SQL statements
- @param {string} s Source string
- @return {string} Escaped string
-
- @example
-
- Piter's => Piter''s
-
- */
-var escapeqq = (utils.undoubleq = function(s) {
- return s.replace(/(\')/g, "''");
-});
-
-/**
- Replace double quotes with single quote
- @param {string} s Source string
- @return {string} Replaced string
- @example
-
- Piter''s => Piter's
-
- */
-var doubleq = (utils.doubleq = function(s) {
- return s.replace(/(\'\')/g, "\\'");
-});
-
-/**
- Replace sigle quote to escaped single quote
- @param {string} s Source string
- @return {string} Replaced string
-
- @todo Chack this functions
-
- */
-var doubleqq = (utils.doubleqq = function(s) {
- return s.replace(/\'/g, "'");
-});
-
-/**
- Cut BOM first character for UTF-8 files (for merging two files)
- @param {string} s Source string
- @return {string} Replaced string
- */
-
-var cutbom = function(s) {
- if (s[0] === String.fromCharCode(65279)) {
- s = s.substr(1);
- }
- return s;
-};
-
-/**
- Get the global scope
- Inspired by System.global
- @return {object} The global scope
- */
-utils.global = (function() {
- if (typeof self !== 'undefined') {
- return self;
- }
- if (typeof window !== 'undefined') {
- return window;
- }
- if (typeof global !== 'undefined') {
- return global;
- }
- return Function('return this')();
-})();
-
-/**
- Find out if a function is native to the enviroment
- @param {function} Function to check
- @return {boolean} True if function is native
- */
-var isNativeFunction = (utils.isNativeFunction = function(fn) {
- return typeof fn === 'function' && !!~fn.toString().indexOf('[native code]');
-});
-
-/**
- Find out if code is running in a web worker enviroment
- @return {boolean} True if code is running in a web worker enviroment
- */
-utils.isWebWorker = (function() {
- try {
- var importScripts = utils.global.importScripts;
- return utils.isNativeFunction(importScripts);
- } catch (e) {
- return false;
- }
-})();
-
-/**
- Find out if code is running in a node enviroment
- @return {boolean} True if code is running in a node enviroment
- */
-utils.isNode = (function() {
- try {
- return utils.isNativeFunction(utils.global.process.reallyExit);
- } catch (e) {
- return false;
- }
-})();
-
-/**
- Find out if code is running in a browser enviroment
- @return {boolean} True if code is running in a browser enviroment
- */
-utils.isBrowser = (function() {
- try {
- return utils.isNativeFunction(utils.global.location.reload);
- } catch (e) {
- return false;
- }
-})();
-
-/**
- Find out if code is running in a browser with a browserify setup
- @return {boolean} True if code is running in a browser with a browserify setup
- */
-utils.isBrowserify = (function() {
- return utils.isBrowser && typeof process !== 'undefined' && process.browser;
-})();
-
-/**
- Find out if code is running in a browser with a requireJS setup
- @return {boolean} True if code is running in a browser with a requireJS setup
- */
-utils.isRequireJS = (function() {
- return (
- utils.isBrowser && typeof require === 'function' && typeof require.specified === 'function'
- );
-})();
-
-/**
- Find out if code is running with Meteor in the enviroment
- @return {boolean} True if code is running with Meteor in the enviroment
-
- @todo Find out if this is the best way to do this
- */
-utils.isMeteor = (function() {
- return typeof Meteor !== 'undefined' && Meteor.release;
-})();
-
-/**
- Find out if code is running on a Meteor client
- @return {boolean} True if code is running on a Meteor client
- */
-utils.isMeteorClient = utils.isMeteorClient = (function() {
- return utils.isMeteor && Meteor.isClient;
-})();
-
-/**
- Find out if code is running on a Meteor server
- @return {boolean} True if code is running on a Meteor server
- */
-utils.isMeteorServer = (function() {
- return utils.isMeteor && Meteor.isServer;
-})();
-
-/**
- Find out code is running in a cordovar enviroment
- @return {boolean} True if code is running in a web worker enviroment
-
- @todo Find out if this is the best way to do this
- */
-utils.isCordova = (function() {
- return typeof cordova === 'object';
-})();
-
-utils.isReactNative = (function() {
- var isReact = false;
- /*not-for-browser/*
- try {
- if (typeof require('react-native') === 'object') {
- isReact = true;
- }
- } catch (e) {
- void 0;
- }
- //*/
- return isReact;
-})();
-
-utils.hasIndexedDB = (function() {
- return !!utils.global.indexedDB;
-})();
-
-utils.isArray = function(obj) {
- return '[object Array]' === Object.prototype.toString.call(obj);
-};
-/**
- Load text file from anywhere
- @param {string|object} path File path or HTML event
- @param {boolean} asy True - async call, false - sync call
- @param {function} success Success function
- @param {function} error Error function
- @return {string} Read data
-
- @todo Define Event type
- @todo Smaller if-else structures.
- */
-var loadFile = (utils.loadFile = function(path, asy, success, error) {
- var data, fs;
- if (utils.isNode || utils.isMeteorServer) {
- /*not-for-browser/*
- fs = require('fs');
-
- // If path is empty, than read data from stdin (for Node)
- if (typeof path === 'undefined') {
- var buff = '';
- process.stdin.setEncoding('utf8');
- process.stdin.on('readable', function() {
- var chunk = process.stdin.read();
- if (chunk !== null) {
- buff += chunk.toString();
- }
- });
- process.stdin.on('end', function() {
- success(cutbom(buff));
- });
- } else {
- if (/^[a-z]+:\/\//i.test(path)) {
- var request = require('request');
- request(path, function(err, response, body) {
- if (err) {
- return error(err, null);
- }
- success(cutbom(body.toString()));
- });
- } else {
- //If async callthen call async
- if (asy) {
- fs.readFile(path, function(err, data) {
- if (err) {
- return error(err, null);
- }
- success(cutbom(data.toString()));
- });
- } else {
- // Call sync version
- try {
- data = fs.readFileSync(path);
- } catch (e) {
- return error(err, null);
- }
- success(cutbom(data.toString()));
- }
- }
- }
- } else if (utils.isReactNative) {
- // If ReactNative
- var RNFS = require('react-native-fs');
- RNFS.readFile(path, 'utf8')
- .then(function(contents) {
- success(cutbom(contents));
- })["catch"](function(err) {
- return error(err, null);
- });
- //*/
- } else if (utils.isCordova) {
- /* If Cordova */
- utils.global.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
- fileSystem.root.getFile(path, {create: false}, function(fileEntry) {
- fileEntry.file(function(file) {
- var fileReader = new FileReader();
- fileReader.onloadend = function(e) {
- success(cutbom(this.result));
- };
- fileReader.readAsText(file);
- });
- });
- });
-
- /** @todo Check eliminated code below */
-
- } else {
- /* For string */
- if (typeof path === 'string') {
- // For browser read from tag
- /*
- SELECT * FROM TXT('#one') -- read data from HTML element with id="one"
- */
- if (path.substr(0, 1) === '#' && typeof document !== 'undefined') {
- data = document.querySelector(path).textContent;
- success(data);
- } else {
- /*
- Simply read file from HTTP request, like:
- SELECT * FROM TXT('http://alasql.org/README.md');
- */
- var xhr = new XMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (xhr.readyState === 4) {
- if (xhr.status === 200) {
- if (success) {
- success(cutbom(xhr.responseText));
- }
- } else if (error) {
- return error(xhr);
- }
- // Todo: else...?
- }
- };
- xhr.open('GET', path, asy); // Async
- xhr.responseType = 'text';
- xhr.send();
- }
- } else if (path instanceof Event) {
- /*
- For browser read from files input element
-
-
- */
- /** @type {array} List of files from element */
- var files = path.target.files;
- /** type {object} */
- var reader = new FileReader();
- /** type {string} */
- var name = files[0].name;
- reader.onload = function(e) {
- var data = e.target.result;
- success(cutbom(data));
- };
- reader.readAsText(files[0]);
- }
- }
-});
-
-/**
- @function Load binary file from anywhere
- @param {string} path File path
- @param {boolean} asy True - async call, false - sync call
- @param {function} success Success function
- @param {function} error Error function
- @return 1 for Async, data - for sync version
-
- @todo merge functionality from loadFile and LoadBinaryFile
- */
-
-var loadBinaryFile = (utils.loadBinaryFile = function(path, asy, success, error) {
- var fs;
- if (utils.isNode || utils.isMeteorServer) {
- /*not-for-browser/*
- fs = require('fs');
-
- if (/^[a-z]+:\/\//i.test(path)) {
- var request = require('request');
- request({url: path, encoding: null}, function(err, response, data) {
- if (err) {
- throw err;
- }
- var arr = [];
- for (var i = 0; i < data.length; ++i) {
- arr[i] = String.fromCharCode(data[i]);
- }
- success(arr.join(''));
- });
- } else {
- if (asy) {
- fs.readFile(path, function(err, data) {
- if (err) {
- throw err;
- }
- var arr = [];
- for (var i = 0; i < data.length; ++i) {
- arr[i] = String.fromCharCode(data[i]);
- }
- success(arr.join(''));
- });
- } else {
- var data = fs.readFileSync(path);
- var arr = [];
- for (var i = 0; i < data.length; ++i) {
- arr[i] = String.fromCharCode(data[i]);
- }
- success(arr.join(''));
- }
- }
- } else if (utils.isReactNative) {
- // If ReactNative
- //var RNFS = require('react-native-fs');
- var RNFetchBlob = require('react-native-fetch-blob')["default"];
- var dirs = RNFetchBlob.fs.dirs;
- //should use readStream instead if the file is large
- RNFetchBlob.fs.readFile(path, 'base64').then(function(data) {
- //RNFetchBlob.base64.decode(data) //need more test on excel
- success(data);
- });
- //*/
- } else {
- if (typeof path === 'string') {
- // For browser
- var xhr = new XMLHttpRequest();
- xhr.open('GET', path, asy); // Async
- xhr.responseType = 'arraybuffer';
- xhr.onload = function() {
- var data = new Uint8Array(xhr.response);
- var arr = [];
- for (var i = 0; i < data.length; ++i) {
- arr[i] = String.fromCharCode(data[i]);
- }
- success(arr.join(''));
- };
- // xhr.responseType = "blob";
- xhr.send();
- } else if (path instanceof Event) {
-
- var files = path.target.files;
- var reader = new FileReader();
- var name = files[0].name;
- reader.onload = function(e) {
- var data = e.target.result;
- success(data);
- };
- reader.readAsArrayBuffer(files[0]);
- } else if (path instanceof Blob) {
- success(path);
- }
- }
-});
-
-var removeFile = (utils.removeFile = function(path, cb) {
- if (utils.isNode) {
- /*not-for-browser/*
- var fs = require('fs');
- fs.remove(path, cb);
- } else if (utils.isCordova) {
- utils.global.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
- fileSystem.root.getFile(
- path,
- {create: false},
- function(fileEntry) {
- fileEntry.remove(cb);
- cb && cb(); // jshint ignore:line
- },
- function() {
- cb && cb(); // jshint ignore:line
- }
- );
- });
- } else if (utils.isReactNative) {
- // If ReactNative
- var RNFS = require('react-native-fs');
- RNFS.unlink(path)
- .then(function() {
- cb && cb();
- })["catch"](function(err) {
- throw err;
- });
- //*/
- } else {
- throw new Error('You can remove files only in Node.js and Apache Cordova');
- }
-});
-
-// Todo: check if it makes sense to support cordova and Meteor server
-var deleteFile = (utils.deleteFile = function(path, cb) {
- /*not-for-browser/*
- if (utils.isNode) {
- var fs = require('fs');
- fs.unlink(path, cb);
- } else if (utils.isReactNative) {
- // If ReactNative
- var RNFS = require('react-native-fs');
- RNFS.unlink(path)
- .then(function() {
- cb && cb();
- })["catch"](function(err) {
- throw err;
- });
- }
- //*/
-});
-
-utils.autoExtFilename = function(filename, ext, config) {
- config = config || {};
- if (
- typeof filename !== 'string' ||
- filename.match(/^[A-z]+:\/\/|\n|\..{2,4}$/) ||
- config.autoExt === 0 ||
- config.autoExt === false
- ) {
- return filename;
- }
- return filename + '.' + ext;
-};
-
-var fileExists = (utils.fileExists = function(path, cb) {
- if (utils.isNode) {
- /*not-for-browser/*
- var fs = require('fs');
- fs.exists(path, cb);
- } else if (utils.isCordova) {
- utils.global.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
- fileSystem.root.getFile(
- path,
- {create: false},
- function(fileEntry) {
- cb(true);
- },
- function() {
- cb(false);
- }
- );
- });
- } else if (utils.isReactNative) {
- // If ReactNative
- var RNFS = require('react-native-fs');
- RNFS.exists(path)
- .then(function(yes) {
- cb && cb(yes);
- })["catch"](function(err) {
- throw err;
- });
- //*/
- } else {
- // TODO Cordova, etc.
- throw new Error('You can use exists() only in Node.js or Apach Cordova');
- }
-});
-
-/**
- Save text file from anywhere
- @param {string} path File path
- @param {array} data Data object
- @param {function} cb Callback
- @param {object=} opts
- */
-
-var saveFile = (utils.saveFile = function(path, data, cb, opts) {
- var res = 1;
- if (path === undefined) {
- //
- // Return data into result variable
- // like: alasql('SELECT * INTO TXT() FROM ?',[data]);
- //
- res = data;
- if (cb) {
- res = cb(res);
- }
- } else {
- if (utils.isNode) {
- /*not-for-browser/*
- var fs = require('fs');
- data = fs.writeFileSync(path, data);
- if (cb) {
- res = cb(res);
- }
- } else if (utils.isReactNative) {
- var RNFS = require('react-native-fs');
- RNFS.writeFile(path, data)
- .then(function(success) {
- //, 'utf8'
- if (cb) res = cb(res);
- })["catch"](function(err) {
- console.error(err.message);
- });
- } else if (utils.isCordova) {
- utils.global.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
- // alasql.utils.removeFile(path,function(){
- fileSystem.root.getFile(path, {create: true}, function(fileEntry) {
- fileEntry.createWriter(function(fileWriter) {
- fileWriter.onwriteend = function() {
- if (cb) {
- res = cb(res);
- }
- };
- fileWriter.write(data);
- });
- });
- });
- //*/
-
- // });
- // });
- // });
- } else {
- if (isIE() === 9) {
- // Solution was taken from
- // http://megatuto.com/formation-JAVASCRIPT.php?JAVASCRIPT_Example=Javascript+Save+CSV+file+in+IE+8/IE+9+without+using+window.open()+Categorie+javascript+internet-explorer-8&category=&article=7993
- // var URI = 'data:text/plain;charset=utf-8,';
-
- // Prepare data
- var ndata = data.replace(/\r\n/g, 'A;D;');
- ndata = ndata.replace(/\n/g, 'D;');
- ndata = ndata.replace(/\t/g, ' ');
- var testlink = utils.global.open('about:blank', '_blank');
- testlink.document.write(ndata); //fileData has contents for the file
- testlink.document.close();
- testlink.document.execCommand('SaveAs', false, path);
- testlink.close();
- } else {
- var opt = {
- disableAutoBom: false,
- };
- alasql.utils.extend(opt, opts);
- var blob = new Blob([data], {type: 'text/plain;charset=utf-8'});
- saveAs(blob, path, opt.disableAutoBom);
- if (cb) {
- res = cb(res);
- }
- }
- }
- }
-
- return res;
-});
-
-/**
- @function Is this IE9
- @return {boolean} True for IE9 and false for other browsers
-
- For IE9 compatibility issues
- */
-function isIE() {
- var myNav = navigator.userAgent.toLowerCase();
- return myNav.indexOf('msie') !== -1 ? parseInt(myNav.split('msie')[1]) : false;
-}
-
-/**
- @function Hash a string to signed integer
- @param {string} source string
- @return {integer} hash number
- */
-
-// FNV-1a inspired hashing
-var hash = (utils.hash = function(str) {
- var hash = 0x811c9dc5,
- i = str.length;
- while (i) {
- hash ^= str.charCodeAt(--i);
- hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
- }
- return hash;
-});
-
-/**
- Union arrays
- @function
- @param {array} a
- @param {array} b
- @return {array}
- */
-var arrayUnion = (utils.arrayUnion = function(a, b) {
- var r = b.slice(0);
- a.forEach(function(i) {
- if (r.indexOf(i) < 0) {
- r.push(i);
- }
- });
- return r;
-});
-
-/**
- Array Difference
- */
-var arrayDiff = (utils.arrayDiff = function(a, b) {
- return a.filter(function(i) {
- return b.indexOf(i) < 0;
- });
-});
-
-/**
- Arrays deep intersect (with records)
- */
-var arrayIntersect = (utils.arrayIntersect = function(a, b) {
- var r = [];
- a.forEach(function(ai) {
- var found = false;
-
- b.forEach(function(bi) {
- found = found || ai === bi;
- });
-
- if (found) {
- r.push(ai);
- }
- });
- return r;
-});
-
-/**
- Arrays deep union (with records)
- */
-var arrayUnionDeep = (utils.arrayUnionDeep = function(a, b) {
- var r = b.slice(0);
- a.forEach(function(ai) {
- var found = false;
-
- r.forEach(function(ri) {
- // found = found || equalDeep(ai, ri, true);
- found = found || deepEqual(ai, ri);
- });
-
- if (!found) {
- r.push(ai);
- }
- });
- return r;
-});
-
-/**
- Arrays deep union (with records)
- */
-var arrayExceptDeep = (utils.arrayExceptDeep = function(a, b) {
- var r = [];
- a.forEach(function(ai) {
- var found = false;
-
- b.forEach(function(bi) {
- // found = found || equalDeep(ai, bi, true);
- found = found || deepEqual(ai, bi);
- });
-
- if (!found) {
- r.push(ai);
- }
- });
- return r;
-});
-
-/**
- Arrays deep intersect (with records)
- */
-var arrayIntersectDeep = (utils.arrayIntersectDeep = function(a, b) {
- var r = [];
- a.forEach(function(ai) {
- var found = false;
-
- b.forEach(function(bi) {
- // found = found || equalDeep(ai, bi, true);
- found = found || deepEqual(ai, bi, true);
- });
-
- if (found) {
- r.push(ai);
- }
- });
- return r;
-});
-
-/**
- Deep clone objects
- */
-var cloneDeep = (utils.cloneDeep = function cloneDeep(obj) {
- if (null === obj || typeof obj !== 'object') {
- return obj;
- }
-
- if (obj instanceof Date) {
- return new Date(obj);
- }
-
- var temp = obj.constructor(); // changed
-
- for (var key in obj) {
- if (obj.hasOwnProperty(key)) {
- temp[key] = cloneDeep(obj[key]);
- }
- }
- return temp;
-});
-
-/**
- Check equality of objects
- */
-
-/**
- Compare two objects in deep
- */
-var deepEqual = (utils.deepEqual = function(x, y) {
- if (x === y) {
- return true;
- }
-
- if (typeof x === 'object' && null !== x && (typeof y === 'object' && null !== y)) {
- if (Object.keys(x).length !== Object.keys(y).length) {
- return false;
- }
- for (var prop in x) {
- if (!deepEqual(x[prop], y[prop])) {
- return false;
- }
- }
- return true;
- }
-
- return false;
-});
-/**
- Array with distinct records
- @param {array} data
- @return {array}
- */
-var distinctArray = (utils.distinctArray = function(data) {
- var uniq = {};
- // TODO: Speedup, because Object.keys is slow
- for (var i = 0, ilen = data.length; i < ilen; i++) {
- var uix;
- if (typeof data[i] === 'object') {
- uix = Object.keys(data[i])
- .sort()
- .map(function(k) {
- return k + '`' + data[i][k];
- })
- .join('`');
- } else {
- uix = data[i];
- }
- uniq[uix] = data[i];
- }
- var res = [];
- for (var key in uniq) {
- res.push(uniq[key]);
- }
- return res;
-});
-
-/**
- Extend object a with properties of b
- @function
- @param {object} a
- @param {object} b
- @return {object}
- */
-var extend = (utils.extend = function extend(a, b) {
- a = a || {};
- for (var key in b) {
- if (b.hasOwnProperty(key)) {
- a[key] = b[key];
- }
- }
- return a;
-});
-
-/**
- Flat array by first row
- */
-var flatArray = (utils.flatArray = function(a) {
-
- if (!a || 0 === a.length) {
- return [];
- }
-
- // For recordsets
- if (typeof a === 'object' && a instanceof alasql.Recordset) {
- return a.data.map(function(ai) {
- return ai[a.columns[0].columnid];
- });
- }
- // Else for other arrays
- var key = Object.keys(a[0])[0];
- if (key === undefined) {
- return [];
- }
- return a.map(function(ai) {
- return ai[key];
- });
-});
-
-/**
- Convert array of objects to array of arrays
- */
-var arrayOfArrays = (utils.arrayOfArrays = function(a) {
- return a.map(function(aa) {
- var ar = [];
- for (var key in aa) {
- ar.push(aa[key]);
- }
- return ar;
- });
-});
-
-if (!Array.isArray) {
- Array.isArray = function(arg) {
- return Object.prototype.toString.call(arg) === '[object Array]';
- };
-}
-
-/**
- Excel:convert number to Excel column, like 1 => 'A'
- @param {integer} i Column number, starting with 0
- @return {string} Column name, starting with 'A'
- */
-
-var xlsnc = (utils.xlsnc = function(i) {
- var addr = String.fromCharCode(65 + i % 26);
- if (i >= 26) {
- i = ((i / 26) | 0) - 1;
- addr = String.fromCharCode(65 + i % 26) + addr;
- if (i > 26) {
- i = ((i / 26) | 0) - 1;
- addr = String.fromCharCode(65 + i % 26) + addr;
- }
- }
- return addr;
-});
-
-/**
- Excel:conver Excel column name to number
- @param {string} s Column number, like 'A' or 'BE'
- @return {string} Column name, starting with 0
- */
-var xlscn = (utils.xlscn = function(s) {
- var n = s.charCodeAt(0) - 65;
- if (s.length > 1) {
- n = (n + 1) * 26 + s.charCodeAt(1) - 65;
-
- if (s.length > 2) {
- n = (n + 1) * 26 + s.charCodeAt(2) - 65;
- }
- }
- return n;
-});
-
-var domEmptyChildren = (utils.domEmptyChildren = function(container) {
- var len = container.childNodes.length;
- while (len--) {
- container.removeChild(container.lastChild);
- }
-});
-
-/**
- SQL LIKE emulation
- @parameter {string} pattern Search pattern
- @parameter {string} value Searched value
- @parameter {string} escape Escape character (optional)
- @return {boolean} If value LIKE pattern ESCAPE escape
- */
-
-var like = (utils.like = function(pattern, value, escape) {
- // Verify escape character
- if (!escape) escape = '';
-
- var i = 0;
- var s = '^';
-
- while (i < pattern.length) {
- var c = pattern[i],
- c1 = '';
- if (i < pattern.length - 1) c1 = pattern[i + 1];
-
- if (c === escape) {
- s += '\\' + c1;
- i++;
- } else if (c === '[' && c1 === '^') {
- s += '[^';
- i++;
- } else if (c === '[' || c === ']') {
- s += c;
- } else if (c === '%') {
- s += '.*';
- } else if (c === '_') {
- s += '.';
- } else if ('/.*+?|(){}'.indexOf(c) > -1) {
- s += '\\' + c;
- } else {
- s += c;
- }
- i++;
- }
-
- s += '$';
- // if(value == undefined) return false;
-
- return ('' + (value || '')).toUpperCase().search(RegExp(s.toUpperCase())) > -1;
-});
-
-utils.glob = function(value, pattern) {
- var i = 0;
- var s = '^';
-
- while (i < pattern.length) {
- var c = pattern[i],
- c1 = '';
- if (i < pattern.length - 1) c1 = pattern[i + 1];
-
- if (c === '[' && c1 === '^') {
- s += '[^';
- i++;
- } else if (c === '[' || c === ']') {
- s += c;
- } else if (c === '*') {
- s += '.*';
- } else if (c === '?') {
- s += '.';
- } else if ('/.*+?|(){}'.indexOf(c) > -1) {
- s += '\\' + c;
- } else {
- s += c;
- }
- i++;
- }
-
- s += '$';
- return ('' + (value || '')).toUpperCase().search(RegExp(s.toUpperCase())) > -1;
-};
-
-/**
- Get path of alasql.js
- @todo Rewrite and simplify the code. Review, is this function is required separately
- */
-utils.findAlaSQLPath = function() {
- /** type {string} Path to alasql library and plugins */
-
- if (utils.isWebWorker) {
- return '';
- /** @todo Check how to get path in worker */
- } else if (utils.isMeteorClient) {
- return '/packages/dist/';
- } else if (utils.isMeteorServer) {
- return 'assets/packages/dist/';
- } else if (utils.isNode) {
- return __dirname;
- } else if (utils.isBrowser) {
- var sc = document.getElementsByTagName('script');
-
- for (var i = 0; i < sc.length; i++) {
- if (sc[i].src.substr(-16).toLowerCase() === 'alasql-worker.js') {
- return sc[i].src.substr(0, sc[i].src.length - 16);
- } else if (sc[i].src.substr(-20).toLowerCase() === 'alasql-worker.min.js') {
- return sc[i].src.substr(0, sc[i].src.length - 20);
- } else if (sc[i].src.substr(-9).toLowerCase() === 'alasql.js') {
- return sc[i].src.substr(0, sc[i].src.length - 9);
- } else if (sc[i].src.substr(-13).toLowerCase() === 'alasql.min.js') {
- return sc[i].src.substr(0, sc[i].src.length - 13);
- }
- }
- }
- return '';
-};
-
-var getXLSX = function() {
- var XLSX = alasql["private"].externalXlsxLib;
-
- if (XLSX) {
- return XLSX;
- }
-
- if (utils.isNode || utils.isBrowserify || utils.isMeteorServer) {
- /*not-for-browser/*
- XLSX = require('xlsx') || null;
- //*/
- } else {
- XLSX = utils.global.XLSX || null;
- }
-
- if (null === XLSX) {
- throw new Error('Please include the xlsx.js library');
- }
-
- return XLSX;
-};
-
-// set AlaSQl path
-alasql.path = alasql.utils.findAlaSQLPath();
-
-/**
- Strip all comments.
- @function
- @param {string} str
- @return {string}
- Based om the https://github.com/lehni/uncomment.js/blob/master/uncomment.js
- I just replaced JavaScript's '//' to SQL's '--' and remove other stuff
-
- @todo Fixed [aaa/*bbb] for column names
- @todo Bug if -- comments in the last line
- @todo Check if it possible to model it with Jison parser
- @todo Remove unused code
- */
-
-/* global alasql */
-
-alasql.utils.uncomment = function(str) {
- // Add some padding so we can always look ahead and behind by two chars
- str = ('__' + str + '__').split('');
- var quote = false,
- quoteSign,
- // regularExpression = false,
- // characterClass = false,
- blockComment = false,
- lineComment = false;
- // preserveComment = false;
-
- for (var i = 0, l = str.length; i < l; i++) {
-
- // When checking for quote escaping, we also need to check that the
- // escape sign itself is not escaped, as otherwise '\\' would cause
- // the wrong impression of an unclosed string:
- var unescaped = str[i - 1] !== '\\' || str[i - 2] === '\\';
-
- if (quote) {
- if (str[i] === quoteSign && unescaped) {
- quote = false;
- }
-
- } else if (blockComment) {
- // Is the block comment closing?
- if (str[i] === '*' && str[i + 1] === '/') {
- // if (!preserveComment)
- str[i] = str[i + 1] = '';
- blockComment /* = preserveComment*/ = false;
- // Increase by 1 to skip closing '/', as it would be mistaken
- // for a regexp otherwise
- i++;
- } else {
- //if (!preserveComment) {
- str[i] = '';
- }
- } else if (lineComment) {
- // One-line comments end with the line-break
- if (str[i + 1] === '\n' || str[i + 1] === '\r') {
- lineComment = false;
- }
- str[i] = '';
- } else {
- if (str[i] === '"' || str[i] === "'") {
- quote = true;
- quoteSign = str[i];
- } else if (str[i] === '[' && str[i - 1] !== '@') {
- quote = true;
- quoteSign = ']';
- // } else if (str[i] === '-' && str[i + 1] === '-') {
- // str[i] = '';
- // lineComment = true;
- } else if (str[i] === '/' && str[i + 1] === '*') {
- // Do not filter out conditional comments /*@ ... */
- // and comments marked as protected /*! ... */
- // preserveComment = /[@!]/.test(str[i + 2]);
- // if (!preserveComment)
- str[i] = '';
- blockComment = true;
-
- }
- }
- }
- // Remove padding again.
- str = str.join('').slice(2, -2);
-
- return str;
-};
-
-/**
- Database class for Alasql.js
-*/
-
-// Initial parameters
-
-/**
- Jison parser
-*/
-alasql.parser = alasqlparser;
-
-alasql.parser.parseError = function(str, hash) {
- throw new Error('Have you used a reserved keyword without `escaping` it?\n' + str);
-};
-
-/**
- Jison parser
- @param {string} sql SQL statement
- @return {object} AST (Abstract Syntax Tree)
-
- @todo Create class AST
- @todo Add other parsers
-
- @example
- alasql.parse = function(sql) {
- // My own parser here
- }
- */
-alasql.parse = function(sql) {
- return alasqlparser.parse(alasql.utils.uncomment(sql));
-};
-
-/**
- List of engines of external databases
- @type {object}
- @todo Create collection type
- */
-alasql.engines = {};
-
-/**
- List of databases
- @type {object}
- */
-alasql.databases = {};
-
-/**
- Number of databases
- @type {number}
-*/
-alasql.databasenum = 0;
-
-/**
- Alasql options object
- */
-alasql.options = {};
-alasql.options.errorlog = false; // Log or throw error
-alasql.options.valueof = false; // Use valueof in orderfn
-alasql.options.dropifnotexists = false; // DROP database in any case
-alasql.options.datetimeformat = 'sql'; // How to handle DATE and DATETIME types
-// Another value is 'javascript'
-alasql.options.casesensitive = true; // Table and column names are case sensitive and converted to lower-case
-alasql.options.logtarget = 'output'; // target for log. Values: 'console', 'output', 'id' of html tag
-alasql.options.logprompt = true; // Print SQL at log
-
-alasql.options.progress = false; // Callback for async queries progress
-
-// Default modifier
-// values: RECORDSET, VALUE, ROW, COLUMN, MATRIX, TEXTSTRING, INDEX
-alasql.options.modifier = undefined;
-// How many rows to lookup to define columns
-alasql.options.columnlookup = 10;
-// Create vertex if not found
-alasql.options.autovertex = true;
-
-// Use dbo as current database (for partial T-SQL comaptibility)
-alasql.options.usedbo = true;
-
-// AUTOCOMMIT ON | OFF
-alasql.options.autocommit = true;
-
-// Use cache
-alasql.options.cache = true;
-
-// Compatibility flags
-alasql.options.tsql = true;
-
-alasql.options.mysql = true;
-
-alasql.options.postgres = true;
-
-alasql.options.oracle = true;
-
-alasql.options.sqlite = true;
-
-alasql.options.orientdb = true;
-
-// for SET NOCOUNT OFF
-alasql.options.nocount = false;
-
-// Check for NaN and convert it to undefined
-alasql.options.nan = false;
-
-alasql.options.joinstar = 'overwrite'; // Option for SELECT * FROM a,b
-
-//alasql.options.worker = false;
-
-// Variables
-alasql.vars = {};
-
-alasql.declares = {};
-
-alasql.prompthistory = [];
-
-alasql.plugins = {}; // If plugin already loaded
-
-alasql.from = {}; // FROM functions
-
-alasql.into = {}; // INTO functions
-
-alasql.fn = {};
-
-alasql.aggr = {};
-
-alasql.busy = 0;
-
-// Cache
-alasql.MAXSQLCACHESIZE = 10000;
-alasql.DEFAULTDATABASEID = 'alasql';
-
-/* WebWorker */
-alasql.lastid = 0;
-
-alasql.buffer = {};
-
-alasql["private"] = {
- externalXlsxLib: null,
-};
-
-alasql.setXLSX = function(XLSX) {
- alasql["private"].externalXlsxLib = XLSX;
-};
-
-/**
- Select current database
- @param {string} databaseid Selected database identificator
- */
-alasql.use = function(databaseid) {
- if (!databaseid) {
- databaseid = alasql.DEFAULTDATABASEID;
- }
- if (alasql.useid === databaseid) {
- return;
- }
- alasql.useid = databaseid;
- var db = alasql.databases[alasql.useid];
- alasql.tables = db.tables;
- // alasql.fn = db.fn;
- db.resetSqlCache();
- if (alasql.options.usedbo) {
- alasql.databases.dbo = db; // Operator???
- }
-};
-
-alasql.autoval = function(tablename, colname, getNext, databaseid) {
- var db = databaseid ? alasql.databases[databaseid] : alasql.databases[alasql.useid];
-
- if (!db.tables[tablename]) {
- throw new Error('Tablename not found: ' + tablename);
- }
-
- if (!db.tables[tablename].identities[colname]) {
- throw new Error('Colname not found: ' + colname);
- }
-
- if (getNext) {
- return db.tables[tablename].identities[colname].value || null;
- }
-
- return (
- db.tables[tablename].identities[colname].value -
- db.tables[tablename].identities[colname].step || null
- );
-};
-
-/**
- Run single SQL statement on current database
- */
-alasql.exec = function(sql, params, cb, scope) {
- // Avoid setting params if not needed even with callback
- if (typeof params === 'function') {
- scope = cb;
- cb = params;
- params = {};
- }
-
- delete alasql.error;
- params = params || {};
- if (alasql.options.errorlog) {
- try {
- return alasql.dexec(alasql.useid, sql, params, cb, scope);
- } catch (err) {
- alasql.error = err;
- if (cb) {
- cb(null, alasql.error);
- }
- }
- } else {
- return alasql.dexec(alasql.useid, sql, params, cb, scope);
- }
-};
-
-/**
- Run SQL statement on specific database
- */
-alasql.dexec = function(databaseid, sql, params, cb, scope) {
- var db = alasql.databases[databaseid];
- // if(db.databaseid != databaseid) console.trace('got!');
-
- var hh;
- // Create hash
- if (alasql.options.cache) {
- hh = hash(sql);
- var statement = db.sqlCache[hh];
- // If database structure was not changed since last time return cache
- if (statement && db.dbversion === statement.dbversion) {
- return statement(params, cb);
- }
- }
-
- // Create AST
- var ast = alasql.parse(sql);
- if (!ast.statements) {
- return;
- }
- if (0 === ast.statements.length) {
- return 0;
- } else if (1 === ast.statements.length) {
- if (ast.statements[0].compile) {
- // Compile and Execute
- var statement = ast.statements[0].compile(databaseid, params);
- if (!statement) {
- return;
- }
- statement.sql = sql;
- statement.dbversion = db.dbversion;
-
- if (alasql.options.cache) {
- // Secure sqlCache size
- if (db.sqlCacheSize > alasql.MAXSQLCACHESIZE) {
- db.resetSqlCache();
- }
- db.sqlCacheSize++;
- db.sqlCache[hh] = statement;
- }
- var res = (alasql.res = statement(params, cb, scope));
- return res;
- } else {
-
- alasql.precompile(ast.statements[0], alasql.useid, params);
- var res = (alasql.res = ast.statements[0].execute(databaseid, params, cb, scope));
- return res;
- }
- } else {
- // Multiple statements
- if (cb) {
- alasql.adrun(databaseid, ast, params, cb, scope);
- } else {
- return alasql.drun(databaseid, ast, params, cb, scope);
- }
- }
-};
-
-/**
- Run multiple statements and return array of results sync
- */
-alasql.drun = function(databaseid, ast, params, cb, scope) {
- var useid = alasql.useid;
-
- if (useid !== databaseid) {
- alasql.use(databaseid);
- }
-
- var res = [];
- for (var i = 0, ilen = ast.statements.length; i < ilen; i++) {
- if (ast.statements[i]) {
- if (ast.statements[i].compile) {
- var statement = ast.statements[i].compile(alasql.useid);
- res.push((alasql.res = statement(params, null, scope)));
- } else {
- alasql.precompile(ast.statements[i], alasql.useid, params);
- res.push((alasql.res = ast.statements[i].execute(alasql.useid, params)));
- }
- }
- }
- if (useid !== databaseid) {
- alasql.use(useid);
- }
-
- if (cb) {
- cb(res);
- }
-
- alasql.res = res;
-
- return res;
-};
-
-/**
- Run multiple statements and return array of results async
- */
-alasql.adrun = function(databaseid, ast, params, cb, scope) {
- var idx = 0;
- var noqueries = ast.statements.length;
- if (alasql.options.progress !== false) {
- alasql.options.progress(noqueries, idx++);
- }
-
- // alasql.busy++;
- var useid = alasql.useid;
- if (useid !== databaseid) {
- alasql.use(databaseid);
- }
- var res = [];
-
- function adrunone(data) {
- if (data !== undefined) {
- res.push(data);
- }
- var astatement = ast.statements.shift();
- if (!astatement) {
- if (useid !== databaseid) {
- alasql.use(useid);
- }
- cb(res);
- // alasql.busy--;
- // if(alasql.busy<0) alasql.busy = 0;
- } else {
- if (astatement.compile) {
- var statement = astatement.compile(alasql.useid);
- statement(params, adrunone, scope);
- if (alasql.options.progress !== false) {
- alasql.options.progress(noqueries, idx++);
- }
- } else {
- alasql.precompile(ast.statements[0], alasql.useid, params);
- astatement.execute(alasql.useid, params, adrunone);
- if (alasql.options.progress !== false) {
- alasql.options.progress(noqueries, idx++);
- }
- }
- }
- }
-
- adrunone(); /** @todo Check, why data is empty here */
-};
-
-/**
- Compile statement to JavaScript function
- @param {string} sql SQL statement
- @param {string} databaseid Database identificator
- @return {functions} Compiled statement functions
-*/
-alasql.compile = function(sql, databaseid) {
- databaseid = databaseid || alasql.useid;
-
- var ast = alasql.parse(sql); // Create AST
-
- if (1 === ast.statements.length) {
- var statement = ast.statements[0].compile(databaseid);
- statement.promise = function(params) {
- return new Promise(function(resolve, reject) {
- statement(params, function(data, err) {
- if (err) {
- reject(err);
- } else {
- resolve(data);
- }
- });
- });
- };
-
- return statement;
-
- } else {
- throw new Error('Cannot compile, because number of statements in SQL is not equal to 1');
- }
-};
-
-//
-// Promises for AlaSQL
-//
-
-if (!utils.global.Promise) {
- if (utils.isNode) {
- /*not-for-browser/*
- utils.global.Promise = require('es6-promise').Promise;
- //*/
- } else {
- /*!
- * @overview es6-promise - a tiny implementation of Promises/A+.
- * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
- * @license Licensed under MIT license
- * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE
- * @version 3.2.1
- */
- (function() {
- 'use strict';
- function t(t) {
- return 'function' == typeof t || ('object' == typeof t && null !== t);
- }
- function e(t) {
- return 'function' == typeof t;
- }
- function n(t) {
- G = t;
- }
- function r(t) {
- Q = t;
- }
- function o() {
- return function() {
- process.nextTick(a);
- };
- }
- function i() {
- return function() {
- B(a);
- };
- }
- function s() {
- var t = 0,
- e = new X(a),
- n = document.createTextNode('');
- return (
- e.observe(n, {characterData: !0}),
- function() {
- n.data = t = ++t % 2;
- }
- );
- }
- function u() {
- var t = new MessageChannel();
- return (
- (t.port1.onmessage = a),
- function() {
- t.port2.postMessage(0);
- }
- );
- }
- function c() {
- return function() {
- setTimeout(a, 1);
- };
- }
- function a() {
- for (var t = 0; J > t; t += 2) {
- var e = tt[t],
- n = tt[t + 1];
- e(n), (tt[t] = void 0), (tt[t + 1] = void 0);
- }
- J = 0;
- }
- function f() {
- try {
- var t = require,
- e = t('vertx');
- return (B = e.runOnLoop || e.runOnContext, i());
- } catch (n) {
- return c();
- }
- }
- function l(t, e) {
- var n = this,
- r = new this.constructor(p);
- void 0 === r[rt] && k(r);
- var o = n._state;
- if (o) {
- var i = arguments[o - 1];
- Q(function() {
- x(o, r, i, n._result);
- });
- } else E(n, r, t, e);
- return r;
- }
- function h(t) {
- var e = this;
- if (t && 'object' == typeof t && t.constructor === e) return t;
- var n = new e(p);
- return (g(n, t), n);
- }
- function p() {}
- function _() {
- return new TypeError('You cannot resolve a promise with itself');
- }
- function d() {
- return new TypeError('A promises callback cannot return that same promise.');
- }
- function v(t) {
- try {
- return t.then;
- } catch (e) {
- return (ut.error = e, ut);
- }
- }
- function y(t, e, n, r) {
- try {
- t.call(e, n, r);
- } catch (o) {
- return o;
- }
- }
- function m(t, e, n) {
- Q(function(t) {
- var r = !1,
- o = y(
- n,
- e,
- function(n) {
- r || ((r = !0), e !== n ? g(t, n) : S(t, n));
- },
- function(e) {
- r || ((r = !0), j(t, e));
- },
- 'Settle: ' + (t._label || ' unknown promise')
- );
- !r && o && ((r = !0), j(t, o));
- }, t);
- }
- function b(t, e) {
- e._state === it
- ? S(t, e._result)
- : e._state === st
- ? j(t, e._result)
- : E(
- e,
- void 0,
- function(e) {
- g(t, e);
- },
- function(e) {
- j(t, e);
- }
- );
- }
- function w(t, n, r) {
- n.constructor === t.constructor && r === et && constructor.resolve === nt
- ? b(t, n)
- : r === ut
- ? j(t, ut.error)
- : void 0 === r ? S(t, n) : e(r) ? m(t, n, r) : S(t, n);
- }
- function g(e, n) {
- e === n ? j(e, _()) : t(n) ? w(e, n, v(n)) : S(e, n);
- }
- function A(t) {
- t._onerror && t._onerror(t._result), T(t);
- }
- function S(t, e) {
- t._state === ot &&
- ((t._result = e), (t._state = it), 0 !== t._subscribers.length && Q(T, t));
- }
- function j(t, e) {
- t._state === ot && ((t._state = st), (t._result = e), Q(A, t));
- }
- function E(t, e, n, r) {
- var o = t._subscribers,
- i = o.length;
- (t._onerror = null),
- (o[i] = e),
- (o[i + it] = n),
- (o[i + st] = r),
- 0 === i && t._state && Q(T, t);
- }
- function T(t) {
- var e = t._subscribers,
- n = t._state;
- if (0 !== e.length) {
- for (var r, o, i = t._result, s = 0; s < e.length; s += 3)
- (r = e[s]), (o = e[s + n]), r ? x(n, r, o, i) : o(i);
- t._subscribers.length = 0;
- }
- }
- function M() {
- this.error = null;
- }
- function P(t, e) {
- try {
- return t(e);
- } catch (n) {
- return (ct.error = n, ct);
- }
- }
- function x(t, n, r, o) {
- var i,
- s,
- u,
- c,
- a = e(r);
- if (a) {
- if (
- ((i = P(r, o)),
- i === ct ? ((c = !0), (s = i.error), (i = null)) : (u = !0),
- n === i)
- )
- return void j(n, d());
- } else (i = o), (u = !0);
- n._state !== ot ||
- (a && u ? g(n, i) : c ? j(n, s) : t === it ? S(n, i) : t === st && j(n, i));
- }
- function C(t, e) {
- try {
- e(
- function(e) {
- g(t, e);
- },
- function(e) {
- j(t, e);
- }
- );
- } catch (n) {
- j(t, n);
- }
- }
- function O() {
- return at++;
- }
- function k(t) {
- (t[rt] = at++), (t._state = void 0), (t._result = void 0), (t._subscribers = []);
- }
- function Y(t) {
- return new _t(this, t).promise;
- }
- function q(t) {
- var e = this;
- return new e(
- I(t)
- ? function(n, r) {
- for (var o = t.length, i = 0; o > i; i++)
- e.resolve(t[i]).then(n, r);
- }
- : function(t, e) {
- e(new TypeError('You must pass an array to race.'));
- }
- );
- }
- function F(t) {
- var e = this,
- n = new e(p);
- return (j(n, t), n);
- }
- function D() {
- throw new TypeError(
- 'You must pass a resolver function as the first argument to the promise constructor'
- );
- }
- function K() {
- throw new TypeError(
- "Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."
- );
- }
- function L(t) {
- (this[rt] = O()),
- (this._result = this._state = void 0),
- (this._subscribers = []),
- p !== t &&
- ('function' != typeof t && D(), this instanceof L ? C(this, t) : K());
- }
- function N(t, e) {
- (this._instanceConstructor = t),
- (this.promise = new t(p)),
- this.promise[rt] || k(this.promise),
- Array.isArray(e)
- ? ((this._input = e),
- (this.length = e.length),
- (this._remaining = e.length),
- (this._result = new Array(this.length)),
- 0 === this.length
- ? S(this.promise, this._result)
- : ((this.length = this.length || 0),
- this._enumerate(),
- 0 === this._remaining && S(this.promise, this._result)))
- : j(this.promise, U());
- }
- function U() {
- return new Error('Array Methods must be provided an Array');
- }
- function W() {
- var t;
- if ('undefined' != typeof global) t = global;
- else if ('undefined' != typeof self) t = self;
- else
- try {
- t = Function('return this')();
- } catch (e) {
- throw new Error(
- 'polyfill failed because global object is unavailable in this environment'
- );
- }
- var n = t.Promise;
- (!n ||
- '[object Promise]' !== Object.prototype.toString.call(n.resolve()) ||
- n.cast) &&
- (t.Promise = pt);
- }
- var z;
- z = Array.isArray
- ? Array.isArray
- : function(t) {
- return '[object Array]' === Object.prototype.toString.call(t);
- };
- var B,
- G,
- H,
- I = z,
- J = 0,
- Q = function(t, e) {
- (tt[J] = t), (tt[J + 1] = e), (J += 2), 2 === J && (G ? G(a) : H());
- },
- R = 'undefined' != typeof window ? window : void 0,
- V = R || {},
- X = V.MutationObserver || V.WebKitMutationObserver,
- Z =
- 'undefined' == typeof self &&
- 'undefined' != typeof process &&
- '[object process]' === {}.toString.call(process),
- $ =
- 'undefined' != typeof Uint8ClampedArray &&
- 'undefined' != typeof importScripts &&
- 'undefined' != typeof MessageChannel,
- tt = new Array(1e3);
- H = Z
- ? o()
- : X ? s() : $ ? u() : void 0 === R && 'function' == typeof require ? f() : c();
- var et = l,
- nt = h,
- rt = Math.random()
- .toString(36)
- .substring(16),
- ot = void 0,
- it = 1,
- st = 2,
- ut = new M(),
- ct = new M(),
- at = 0,
- ft = Y,
- lt = q,
- ht = F,
- pt = L;
- (L.all = ft),
- (L.race = lt),
- (L.resolve = nt),
- (L.reject = ht),
- (L._setScheduler = n),
- (L._setAsap = r),
- (L._asap = Q),
- (L.prototype = {
- constructor: L,
- then: et,
- "catch": function(t) {
- return this.then(null, t);
- },
- });
- var _t = N;
- (N.prototype._enumerate = function() {
- for (var t = this.length, e = this._input, n = 0; this._state === ot && t > n; n++)
- this._eachEntry(e[n], n);
- }),
- (N.prototype._eachEntry = function(t, e) {
- var n = this._instanceConstructor,
- r = n.resolve;
- if (r === nt) {
- var o = v(t);
- if (o === et && t._state !== ot) this._settledAt(t._state, e, t._result);
- else if ('function' != typeof o) this._remaining--, (this._result[e] = t);
- else if (n === pt) {
- var i = new n(p);
- w(i, t, o), this._willSettleAt(i, e);
- } else
- this._willSettleAt(
- new n(function(e) {
- e(t);
- }),
- e
- );
- } else this._willSettleAt(r(t), e);
- }),
- (N.prototype._settledAt = function(t, e, n) {
- var r = this.promise;
- r._state === ot &&
- (this._remaining--, t === st ? j(r, n) : (this._result[e] = n)),
- 0 === this._remaining && S(r, this._result);
- }),
- (N.prototype._willSettleAt = function(t, e) {
- var n = this;
- E(
- t,
- void 0,
- function(t) {
- n._settledAt(it, e, t);
- },
- function(t) {
- n._settledAt(st, e, t);
- }
- );
- });
- var dt = W,
- vt = {Promise: pt, polyfill: dt};
- 'function' == typeof define && define.amd
- ? define(function() {
- return vt;
- })
- : 'undefined' != typeof module && module.exports
- ? (module.exports = vt)
- : 'undefined' != typeof this && (this.ES6Promise = vt),
- dt();
- }.call(this));
-
- }
-}
-
-var promiseExec = function(sql, params, counterStep, counterTotal) {
- return new utils.global.Promise(function(resolve, reject) {
- alasql(sql, params, function(data, err) {
- if (err) {
- reject(err);
- } else {
- if (counterStep && counterTotal && alasql.options.progress !== false) {
- alasql.options.progress(counterStep, counterTotal);
- }
- resolve(data);
- }
- });
- });
-};
-
-var promiseAll = function(sqlParamsArray) {
- if (sqlParamsArray.length < 1) {
- return;
- }
-
- var active, sql, params;
-
- var execArray = [];
-
- for (var i = 0; i < sqlParamsArray.length; i++) {
- active = sqlParamsArray[i];
-
- if (typeof active === 'string') {
- active = [active];
- }
-
- if (!utils.isArray(active) || active.length < 1 || 2 < active.length) {
- throw new Error('Error in .promise parameter');
- }
-
- sql = active[0];
- params = active[1] || undefined;
-
- execArray.push(promiseExec(sql, params, i, sqlParamsArray.length));
- }
-
- return utils.global.Promise.all(execArray);
-};
-
-alasql.promise = function(sql, params) {
- if (typeof Promise === 'undefined') {
- throw new Error('Please include a Promise/A+ library');
- }
-
- if (typeof sql === 'string') {
- return promiseExec(sql, params);
- }
-
- if (!utils.isArray(sql) || sql.length < 1 || typeof params !== 'undefined') {
- throw new Error('Error in .promise parameters');
- }
- return promiseAll(sql);
-};
-
-/*
-//
-// Database class for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// Main Database class
-
-/**
- @class Database
- */
-
-var Database = (alasql.Database = function(databaseid) {
- var self = this;
-
- // self.prototype = this;
-
- if (self === alasql) {
- if (databaseid) {
- // if(alasql.databases[databaseid]) {
- self = alasql.databases[databaseid];
- // } else {
- alasql.databases[databaseid] = self;
- // }
- if (!self) {
- throw new Error('Database "' + databaseid + '" not found');
- }
- } else {
- // Create new database (or get alasql?)
- self = alasql.databases.alasql;
- // For SQL Server examples, USE tempdb
- if (alasql.options.tsql) {
- alasql.databases.tempdb = alasql.databases.alasql;
- }
- // self = new Database(databaseid); // to call without new
- }
- }
- if (!databaseid) {
- databaseid = 'db' + alasql.databasenum++; // Random name
- }
-
- // Step 1
- self.databaseid = databaseid;
- alasql.databases[databaseid] = self;
- self.dbversion = 0;
-
- //Steps 2-5
- self.tables = {};
- self.views = {};
- self.triggers = {};
- self.indices = {};
-
- // Step 6: Objects storage
- self.objects = {};
- self.counter = 0;
-
- self.resetSqlCache();
- return self;
-});
-
-/**
- Reset SQL statements cache
- */
-
-Database.prototype.resetSqlCache = function() {
- this.sqlCache = {}; // Cache for compiled SQL statements
- this.sqlCacheSize = 0;
-};
-
-// Main SQL function
-
-/**
- Run SQL statement on database
- @param {string} sql SQL statement
- @param [object] params Parameters
- @param {function} cb callback
- */
-
-Database.prototype.exec = function(sql, params, cb) {
- return alasql.dexec(this.databaseid, sql, params, cb);
-};
-
-Database.prototype.autoval = function(tablename, colname, getNext) {
- return alasql.autoval(tablename, colname, getNext, this.databaseid);
-};
-
-// Aliases like MS SQL
-
-/*
-//
-// Transactio class for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-Database.prototype.transaction = function(cb) {
- var tx = new alasql.Transaction(this.databaseid);
- var res = cb(tx);
- return res;
-};
-
-// Transaction class (for WebSQL compatibility)
-
-/**
- Transaction class
- @class Transaction
- */
-
-var Transaction = (alasql.Transaction = function(databaseid) {
- this.transactionid = Date.now();
- this.databaseid = databaseid;
- this.commited = false;
- this.dbversion = alasql.databases[databaseid].dbversion;
- // this.bank = cloneDeep(alasql.databases[databaseid]);
- this.bank = JSON.stringify(alasql.databases[databaseid]);
- // TODO CLone Tables with insertfns
-
- return this;
-});
-
-// Main class
-
-// Commit
-
-/**
- Commit transaction
- */
-Transaction.prototype.commit = function() {
- this.commited = true;
- alasql.databases[this.databaseid].dbversion = Date.now();
- delete this.bank;
-};
-
-// Rollback
-/**
- Rollback transaction
- */
-Transaction.prototype.rollback = function() {
- if (!this.commited) {
- alasql.databases[this.databaseid] = JSON.parse(this.bank);
- // alasql.databases[this.databaseid].tables = this.bank;
- // alasql.databases[this.databaseid].dbversion = this.dbversion;
- delete this.bank;
- } else {
- throw new Error('Transaction already commited');
- }
-};
-
-// Transactions stub
-
-/**
- Execute SQL statement
- @param {string} sql SQL statement
- @param {object} params Parameters
- @param {function} cb Callback function
- @return result
- */
-Transaction.prototype.exec = function(sql, params, cb) {
-
- return alasql.dexec(this.databaseid, sql, params, cb);
-};
-
-Transaction.prototype.executeSQL = Transaction.prototype.exec;
-
-/*
-//
-// Table class for Alasql.js
-// Date: 14.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// Table class
-var Table = (alasql.Table = function(params) {
- // Step 1: Data array
- this.data = [];
-
- // Step 2: Columns
- this.columns = [];
- this.xcolumns = {};
-
- // Step 3: indices
- this.inddefs = {};
- this.indices = {};
- this.uniqs = {};
- this.uniqdefs = {};
-
- // Step 4: identities
- this.identities = {};
-
- // Step 5: checkfn...
- this.checks = [];
- this.checkfns = []; // For restore... to be done...
-
- // Step 6: INSERT/DELETE/UPDATE
-
- // Step 7: Triggers...
- // Create trigger hubs
- this.beforeinsert = {};
- this.afterinsert = {};
- this.insteadofinsert = {};
-
- this.beforedelete = {};
- this.afterdelete = {};
- this.insteadofdelete = {};
-
- this.beforeupdate = {};
- this.afterupdate = {};
- this.insteadofupdate = {};
-
- // Done
- extend(this, params);
-});
-
-Table.prototype.indexColumns = function() {
- var self = this;
- self.xcolumns = {};
- self.columns.forEach(function(col) {
- self.xcolumns[col.columnid] = col;
- });
-};
-
-/*
-//
-// View class for Alasql.js
-// Date: 14.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// Table class
-var View = (alasql.View = function(params) {
- // Columns
- this.columns = [];
- this.xcolumns = {};
- // Data array
- this.query = [];
-
- extend(this, params);
-});
-
-/*
-//
-// Query class for Alasql.js
-// Date: 14.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// Table class
-
-/**
- @class Query Main query class
- */
-var Query = (alasql.Query = function(params) {
- this.alasql = alasql;
-
- // Columns
- this.columns = [];
- this.xcolumns = {};
- this.selectGroup = [];
- this.groupColumns = {};
- // Data array
- extend(this, params);
-});
-
-/**
- @class Recordset data object
- */
-var Recordset = (alasql.Recordset = function(params) {
- // Data array
- extend(this, params);
-});
-
-/*
-//
-// Parser helper for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-var yy = (alasqlparser.yy = alasql.yy = {});
-
-// Utility
-yy.extend = extend;
-// Option for case sensitive
-yy.casesensitive = alasql.options.casesensitive;
-
-// Base class for all yy classes
-var Base = (yy.Base = function(params) {
- return yy.extend(this, params);
-});
-
-Base.prototype.toString = function() {};
-Base.prototype.toType = function() {};
-Base.prototype.toJS = function() {};
-
-Base.prototype.compile = returnUndefined;
-Base.prototype.exec = function() {};
-
-Base.prototype.compile = returnUndefined;
-Base.prototype.exec = function() {};
-
-/*
-//
-// Statements class for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// Statements container
-yy.Statements = function(params) {
- return yy.extend(this, params);
-};
-
-yy.Statements.prototype.toString = function() {
- return this.statements
- .map(function(st) {
- return st.toString();
- })
- .join('; ');
-};
-
-// Compile array of statements into single statement
-yy.Statements.prototype.compile = function(db) {
- var statements = this.statements.map(function(st) {
- return st.compile(db);
- });
- if (statements.length === 1) {
- return statements[0];
- } else {
- return function(params, cb) {
- var res = statements.map(function(st) {
- return st(params);
- });
- if (cb) {
- cb(res);
- }
- return res;
- };
- }
-};
-
-/* global alasql */
-/* global yy */
-/*
-//
-// SEARCH for Alasql.js
-// Date: 04.05.2015
-// (c) 2015, Andrey Gershun
-//
-*/
-
-function doSearch(databaseid, params, cb) {
- var res;
- var stope = {};
- var fromdata;
- var selectors = cloneDeep(this.selectors);
-
- function processSelector(selectors, sidx, value) {
- // var val;
-
- var val, // temp values use many places
- nest, // temp value used many places
- r, // temp value used many places
- sel = selectors[sidx];
-
- // if(!alasql.srch[sel.srchid]) {
- // throw new Error('Selector "'+sel.srchid+'" not found');
- // };
-
- var SECURITY_BREAK = 100000;
-
- if (sel.selid) {
- // TODO Process Selector
- if (sel.selid === 'PATH') {
- var queue = [{node: value, stack: []}];
- var visited = {};
- //var path = [];
- var objects = alasql.databases[alasql.useid].objects;
- while (queue.length > 0) {
- var q = queue.shift();
- var node = q.node;
- var stack = q.stack;
- var r = processSelector(sel.args, 0, node);
- if (r.length > 0) {
- if (sidx + 1 + 1 > selectors.length) {
- return stack;
- } else {
- var rv = [];
- if (stack && stack.length > 0) {
- stack.forEach(function(stv) {
- rv = rv.concat(processSelector(selectors, sidx + 1, stv));
- });
- }
- return rv;
- // return processSelector(selectors,sidx+1,stack);
- }
- } else {
- if (typeof visited[node.$id] !== 'undefined') {
- continue;
- } else {
-
- visited[node.$id] = true;
- if (node.$out && node.$out.length > 0) {
- node.$out.forEach(function(edgeid) {
- var edge = objects[edgeid];
- var stack2 = stack.concat(edge);
- stack2.push(objects[edge.$out[0]]);
- queue.push({
- node: objects[edge.$out[0]],
- stack: stack2,
- });
- });
- }
- }
- }
- }
- // Else return fail
- return [];
- }
- if (sel.selid === 'NOT') {
- var nest = processSelector(sel.args, 0, value);
-
- if (nest.length > 0) {
- return [];
- } else {
- if (sidx + 1 + 1 > selectors.length) {
- return [value];
- } else {
- return processSelector(selectors, sidx + 1, value);
- }
- }
- } else if (sel.selid === 'DISTINCT') {
- var nest;
- if (typeof sel.args === 'undefined' || sel.args.length === 0) {
- nest = distinctArray(value);
- } else {
- nest = processSelector(sel.args, 0, value);
- }
- if (nest.length === 0) {
- return [];
- } else {
- var res = distinctArray(nest);
- if (sidx + 1 + 1 > selectors.length) {
- return res;
- } else {
- return processSelector(selectors, sidx + 1, res);
- }
- }
- } else if (sel.selid === 'AND') {
- var res = true;
- sel.args.forEach(function(se) {
- res = res && processSelector(se, 0, value).length > 0;
- });
- if (!res) {
- return [];
- } else {
- if (sidx + 1 + 1 > selectors.length) {
- return [value];
- } else {
- return processSelector(selectors, sidx + 1, value);
- }
- }
- } else if (sel.selid === 'OR') {
- var res = false;
- sel.args.forEach(function(se) {
- res = res || processSelector(se, 0, value).length > 0;
- });
- if (!res) {
- return [];
- } else {
- if (sidx + 1 + 1 > selectors.length) {
- return [value];
- } else {
- return processSelector(selectors, sidx + 1, value);
- }
- }
- } else if (sel.selid === 'ALL') {
- var nest = processSelector(sel.args[0], 0, value);
- if (nest.length === 0) {
- return [];
- } else {
- if (sidx + 1 + 1 > selectors.length) {
- return nest;
- } else {
- return processSelector(selectors, sidx + 1, nest);
- }
- }
- } else if (sel.selid === 'ANY') {
- var nest = processSelector(sel.args[0], 0, value);
-
- if (nest.length === 0) {
- return [];
- } else {
- if (sidx + 1 + 1 > selectors.length) {
- return [nest[0]];
- } else {
- return processSelector(selectors, sidx + 1, [nest[0]]);
- }
- }
- } else if (sel.selid === 'UNIONALL') {
- var nest = [];
- sel.args.forEach(function(se) {
- nest = nest.concat(processSelector(se, 0, value));
- });
- if (nest.length === 0) {
- return [];
- } else {
- if (sidx + 1 + 1 > selectors.length) {
- return nest;
- } else {
- return processSelector(selectors, sidx + 1, nest);
- }
- }
- } else if (sel.selid === 'UNION') {
- var nest = [];
- sel.args.forEach(function(se) {
- nest = nest.concat(processSelector(se, 0, value));
- });
- var nest = distinctArray(nest);
- if (nest.length === 0) {
- return [];
- } else {
- if (sidx + 1 + 1 > selectors.length) {
- return nest;
- } else {
- return processSelector(selectors, sidx + 1, nest);
- }
- }
- } else if (sel.selid === 'IF') {
- var nest = processSelector(sel.args, 0, value);
-
- if (nest.length === 0) {
- return [];
- } else {
- if (sidx + 1 + 1 > selectors.length) {
- return [value];
- } else {
- return processSelector(selectors, sidx + 1, value);
- }
- }
- } else if (sel.selid === 'REPEAT') {
-
- var lvar,
- lmax,
- lmin = sel.args[0].value;
- if (!sel.args[1]) {
- lmax = lmin; // Add security break
- } else {
- lmax = sel.args[1].value;
- }
- if (sel.args[2]) {
- lvar = sel.args[2].variable;
- }
- //var lsel = sel.sels;
-
- var retval = [];
-
- if (lmin === 0) {
- if (sidx + 1 + 1 > selectors.length) {
- retval = [value];
- } else {
- if (lvar) {
- alasql.vars[lvar] = 0;
- }
- retval = retval.concat(processSelector(selectors, sidx + 1, value));
- }
- }
-
- // var nests = processSelector(sel.sels,0,value).slice();
- if (lmax > 0) {
- var nests = [{value: value, lvl: 1}];
-
- var i = 0;
- while (nests.length > 0) {
- var nest = nests[0];
-
- nests.shift();
- if (nest.lvl <= lmax) {
- if (lvar) {
- alasql.vars[lvar] = nest.lvl;
- }
-
- var nest1 = processSelector(sel.sels, 0, nest.value);
-
- nest1.forEach(function(n) {
- nests.push({value: n, lvl: nest.lvl + 1});
- });
- if (nest.lvl >= lmin) {
- if (sidx + 1 + 1 > selectors.length) {
- retval = retval.concat(nest1);
- //return nests;
- } else {
- nest1.forEach(function(n) {
- retval = retval.concat(
- processSelector(selectors, sidx + 1, n)
- );
- });
- }
- }
- }
- // Security brake
- i++;
- if (i > SECURITY_BREAK) {
- throw new Error('Security brake. Number of iterations = ' + i);
- }
- }
- }
- return retval;
- } else if (sel.selid === 'OF') {
- if (sidx + 1 + 1 > selectors.length) {
- return [value];
- } else {
- var r1 = [];
- Object.keys(value).forEach(function(keyv) {
- alasql.vars[sel.args[0].variable] = keyv;
- r1 = r1.concat(processSelector(selectors, sidx + 1, value[keyv]));
- });
- return r1;
- }
- } else if (sel.selid === 'TO') {
-
- var oldv = alasql.vars[sel.args[0]];
- var newv = [];
- if (oldv !== undefined) {
-
- newv = oldv.slice(0);
-
- } else {
- newv = [];
- }
- newv.push(value);
-
- if (sidx + 1 + 1 > selectors.length) {
- return [value];
- } else {
- alasql.vars[sel.args[0]] = newv;
- var r1 = processSelector(selectors, sidx + 1, value);
-
- alasql.vars[sel.args[0]] = oldv;
- return r1;
- }
-
- } else if (sel.selid === 'ARRAY') {
- var nest = processSelector(sel.args, 0, value);
- if (nest.length > 0) {
- val = nest;
- } else {
- return [];
- }
- if (sidx + 1 + 1 > selectors.length) {
- return [val];
- } else {
- return processSelector(selectors, sidx + 1, val);
- }
- } else if (sel.selid === 'SUM') {
- var nest = processSelector(sel.args, 0, value);
- if (nest.length > 0) {
- var val = nest.reduce(function(sum, current) {
- return sum + current;
- }, 0);
- } else {
- return [];
- }
- if (sidx + 1 + 1 > selectors.length) {
- return [val];
- } else {
- return processSelector(selectors, sidx + 1, val);
- }
- } else if (sel.selid === 'AVG') {
- nest = processSelector(sel.args, 0, value);
- if (nest.length > 0) {
- val =
- nest.reduce(function(sum, current) {
- return sum + current;
- }, 0) / nest.length;
- } else {
- return [];
- }
- if (sidx + 1 + 1 > selectors.length) {
- return [val];
- } else {
- return processSelector(selectors, sidx + 1, val);
- }
- } else if (sel.selid === 'COUNT') {
- nest = processSelector(sel.args, 0, value);
- if (nest.length > 0) {
- val = nest.length;
- } else {
- return [];
- }
- if (sidx + 1 + 1 > selectors.length) {
- return [val];
- } else {
- return processSelector(selectors, sidx + 1, val);
- }
- } else if (sel.selid === 'FIRST') {
- nest = processSelector(sel.args, 0, value);
- if (nest.length > 0) {
- val = nest[0];
- } else {
- return [];
- }
-
- if (sidx + 1 + 1 > selectors.length) {
- return [val];
- } else {
- return processSelector(selectors, sidx + 1, val);
- }
- } else if (sel.selid === 'LAST') {
- nest = processSelector(sel.args, 0, value);
- if (nest.length > 0) {
- val = nest[nest.length - 1];
- } else {
- return [];
- }
-
- if (sidx + 1 + 1 > selectors.length) {
- return [val];
- } else {
- return processSelector(selectors, sidx + 1, val);
- }
- } else if (sel.selid === 'MIN') {
- nest = processSelector(sel.args, 0, value);
- if (nest.length === 0) {
- return [];
- }
- var val = nest.reduce(function(min, current) {
- return Math.min(min, current);
- }, Infinity);
- if (sidx + 1 + 1 > selectors.length) {
- return [val];
- } else {
- return processSelector(selectors, sidx + 1, val);
- }
- } else if (sel.selid === 'MAX') {
- var nest = processSelector(sel.args, 0, value);
- if (nest.length === 0) {
- return [];
- }
- var val = nest.reduce(function(max, current) {
- return Math.max(max, current);
- }, -Infinity);
- if (sidx + 1 + 1 > selectors.length) {
- return [val];
- } else {
- return processSelector(selectors, sidx + 1, val);
- }
- } else if (sel.selid === 'PLUS') {
- var retval = [];
- // retval = retval.concat(processSelector(selectors,sidx+1,n))
- var nests = processSelector(sel.args, 0, value).slice();
- if (sidx + 1 + 1 > selectors.length) {
- retval = retval.concat(nests);
- } else {
- nests.forEach(function(n) {
- retval = retval.concat(processSelector(selectors, sidx + 1, n));
- });
- }
-
- var i = 0;
- while (nests.length > 0) {
- // nest = nests[0];
- // nests.shift();
- var nest = nests.shift();
-
- nest = processSelector(sel.args, 0, nest);
-
- nests = nests.concat(nest);
-
- if (sidx + 1 + 1 > selectors.length) {
- retval = retval.concat(nest);
- //return retval;
- } else {
- nest.forEach(function(n) {
-
- var rn = processSelector(selectors, sidx + 1, n);
-
- retval = retval.concat(rn);
- });
- }
-
- // Security brake
- i++;
- if (i > SECURITY_BREAK) {
- throw new Error('Security brake. Number of iterations = ' + i);
- }
- }
- return retval;
-
- } else if (sel.selid === 'STAR') {
- var retval = [];
- retval = processSelector(selectors, sidx + 1, value);
- var nests = processSelector(sel.args, 0, value).slice();
- if (sidx + 1 + 1 > selectors.length) {
- retval = retval.concat(nests);
- //return nests;
- } else {
- nests.forEach(function(n) {
- retval = retval.concat(processSelector(selectors, sidx + 1, n));
- });
- }
- var i = 0;
- while (nests.length > 0) {
- var nest = nests[0];
- nests.shift();
-
- nest = processSelector(sel.args, 0, nest);
-
- nests = nests.concat(nest);
-
- if (sidx + 1 + 1 <= selectors.length) {
- nest.forEach(function(n) {
- retval = retval.concat(processSelector(selectors, sidx + 1, n));
- });
- }
-
- // Security brake
- i++;
- if (i > SECURITY_BREAK) {
- throw new Error('Loop brake. Number of iterations = ' + i);
- }
- }
-
- return retval;
- } else if (sel.selid === 'QUESTION') {
- var retval = [];
- retval = retval.concat(processSelector(selectors, sidx + 1, value));
- var nest = processSelector(sel.args, 0, value);
- if (sidx + 1 + 1 <= selectors.length) {
- nest.forEach(function(n) {
- retval = retval.concat(processSelector(selectors, sidx + 1, n));
- });
- }
- return retval;
- } else if (sel.selid === 'WITH') {
- var nest = processSelector(sel.args, 0, value);
-
- if (nest.length === 0) {
- return [];
- } else {
-
- var r = {status: 1, values: nest};
- }
- } else if (sel.selid === 'ROOT') {
- if (sidx + 1 + 1 > selectors.length) {
- return [value];
- } else {
- return processSelector(selectors, sidx + 1, fromdata);
- }
- } else {
- throw new Error('Wrong selector ' + sel.selid);
- }
- } else if (sel.srchid) {
- var r = alasql.srch[sel.srchid.toUpperCase()](value, sel.args, stope, params);
-
- } else {
- throw new Error('Selector not found');
- }
-
- if (typeof r === 'undefined') {
- r = {status: 1, values: [value]};
- }
-
- var res = [];
- if (r.status === 1) {
- var arr = r.values;
-
- if (sidx + 1 + 1 > selectors.length) {
- // if(sidx+1+1 > selectors.length) {
- res = arr;
-
- } else {
- for (var i = 0; i < r.values.length; i++) {
- res = res.concat(processSelector(selectors, sidx + 1, arr[i]));
- }
- }
- }
- return res;
- }
-
- if (selectors !== undefined && selectors.length > 0) {
-
- if (
- selectors &&
- selectors[0] &&
- selectors[0].srchid === 'PROP' &&
- selectors[0].args &&
- selectors[0].args[0]
- ) {
-
- if (selectors[0].args[0].toUpperCase() === 'XML') {
- stope.mode = 'XML';
- selectors.shift();
- } else if (selectors[0].args[0].toUpperCase() === 'HTML') {
- stope.mode = 'HTML';
- selectors.shift();
- } else if (selectors[0].args[0].toUpperCase() === 'JSON') {
- stope.mode = 'JSON';
- selectors.shift();
- }
- }
- if (selectors.length > 0 && selectors[0].srchid === 'VALUE') {
- stope.value = true;
- selectors.shift();
- }
- }
-
- if (this.from instanceof yy.Column) {
- var dbid = this.from.databaseid || databaseid;
- fromdata = alasql.databases[dbid].tables[this.from.columnid].data;
- //selectors.unshift({srchid:'CHILD'});
- } else if (this.from instanceof yy.FuncValue && alasql.from[this.from.funcid.toUpperCase()]) {
- var args = this.from.args.map(function(arg) {
- var as = arg.toJS();
-
- var fn = new Function('params,alasql', 'var y;return ' + as).bind(this);
- return fn(params, alasql);
- });
-
- fromdata = alasql.from[this.from.funcid.toUpperCase()].apply(this, args);
-
- } else if (typeof this.from === 'undefined') {
- fromdata = alasql.databases[databaseid].objects;
- } else {
- var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
- fromdata = fromfn(params, alasql);
- // Check for Mogo Collections
- if (
- typeof Mongo === 'object' &&
- typeof Mongo.Collection !== 'object' &&
- fromdata instanceof Mongo.Collection
- ) {
- fromdata = fromdata.find().fetch();
- }
-
- // if(typeof fromdata == 'object' && Array.isArray(fromdata)) {
- // selectors.unshift({srchid:'CHILD'});
- // }
- }
-
- // If source data is array than first step is to run over array
- // var selidx = 0;
- // var selvalue = fromdata;
-
- if (selectors !== undefined && selectors.length > 0) {
- // Init variables for TO() selectors
-
- if (false) {
- selectors.forEach(function(selector) {
- if (selector.srchid === 'TO') {
- //* @todo move to TO selector
- alasql.vars[selector.args[0]] = [];
- // TODO - process nested selectors
- }
- });
- }
-
- res = processSelector(selectors, 0, fromdata);
- } else {
- res = fromdata;
- }
-
- if (this.into) {
- var a1, a2;
- if (typeof this.into.args[0] !== 'undefined') {
- a1 = new Function('params,alasql', 'var y;return ' + this.into.args[0].toJS())(
- params,
- alasql
- );
- }
- if (typeof this.into.args[1] !== 'undefined') {
- a2 = new Function('params,alasql', 'var y;return ' + this.into.args[1].toJS())(
- params,
- alasql
- );
- }
- res = alasql.into[this.into.funcid.toUpperCase()](a1, a2, res, [], cb);
- } else {
- if (stope.value && res.length > 0) {
- res = res[0];
- }
- if (cb) {
- res = cb(res);
- }
- }
- return res;
-}
-
-/**
- Search class
- @class
- @example
- SEARCH SUM(/a) FROM ? -- search over parameter object
-*/
-
-yy.Search = function(params) {
- return yy.extend(this, params);
-};
-
-yy.Search.prototype.toString = function() {
- var s = 'SEARCH' + ' ';
- if (this.selectors) {
- s += this.selectors.toString();
- }
- if (this.from) {
- s += 'FROM' + ' ' + this.from.toString();
- }
-
- return s;
-};
-
-yy.Search.prototype.toJS = function(context) {
-
- var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
- // var s = '';
- return s;
-};
-
-yy.Search.prototype.compile = function(databaseid) {
- var dbid = databaseid;
- var self = this;
-
- var statement = function(params, cb) {
-
- var res;
- doSearch.bind(self)(dbid, params, function(data) {
-
- res = modify(statement.query, data);
-
- if (cb) {
- res = cb(res);
- }
- });
-
- // if(cb) res = cb(res);
- return res;
- };
- statement.query = {};
- return statement;
-};
-
-// List of search functions
-alasql.srch = {};
-
-alasql.srch.PROP = function(val, args, stope) {
-
- if (stope.mode === 'XML') {
- var arr = [];
- val.children.forEach(function(v) {
- if (v.name.toUpperCase() === args[0].toUpperCase()) {
- arr.push(v);
- }
- });
- if (arr.length > 0) {
- return {status: 1, values: arr};
- } else {
- return {status: -1, values: []};
- }
- } else {
- if (
- typeof val !== 'object' ||
- val === null ||
- typeof args !== 'object' ||
- typeof val[args[0]] === 'undefined'
- ) {
- return {status: -1, values: []};
- } else {
- return {status: 1, values: [val[args[0]]]};
- }
- }
-};
-
-alasql.srch.APROP = function(val, args) {
- if (
- typeof val !== 'object' ||
- val === null ||
- typeof args !== 'object' ||
- typeof val[args[0]] === 'undefined'
- ) {
- return {status: 1, values: [undefined]};
- } else {
- return {status: 1, values: [val[args[0]]]};
- }
-};
-
-// Test expression
-alasql.srch.EQ = function(val, args, stope, params) {
- var exprs = args[0].toJS('x', '');
- var exprfn = new Function('x,alasql,params', 'return ' + exprs);
- if (val === exprfn(val, alasql, params)) {
- return {status: 1, values: [val]};
- } else {
- return {status: -1, values: []};
- }
-};
-
-// Test expression
-alasql.srch.LIKE = function(val, args, stope, params) {
- var exprs = args[0].toJS('x', '');
- var exprfn = new Function('x,alasql,params', 'return ' + exprs);
- if (
- val.toUpperCase().match(
- new RegExp(
- '^' +
- exprfn(val, alasql, params)
- .toUpperCase()
- .replace(/%/g, '.*')
- .replace(/\?|_/g, '.') +
- '$'
- ),
- 'g'
- )
- ) {
- return {status: 1, values: [val]};
- } else {
- return {status: -1, values: []};
- }
-};
-
-alasql.srch.ATTR = function(val, args, stope) {
- if (stope.mode === 'XML') {
- if (typeof args === 'undefined') {
- return {status: 1, values: [val.attributes]};
- } else {
- if (
- typeof val === 'object' &&
- typeof val.attributes === 'object' &&
- typeof val.attributes[args[0]] !== 'undefined'
- ) {
- return {status: 1, values: [val.attributes[args[0]]]};
- } else {
- return {status: -1, values: []};
- }
- }
- } else {
- throw new Error('ATTR is not using in usual mode');
- }
-};
-
-alasql.srch.CONTENT = function(val, args, stope) {
- if (stope.mode === 'XML') {
- return {status: 1, values: [val.content]};
- } else {
- throw new Error('ATTR is not using in usual mode');
- }
-};
-
-alasql.srch.SHARP = function(val, args) {
- var obj = alasql.databases[alasql.useid].objects[args[0]];
- if (typeof val !== 'undefined' && val === obj) {
- return {status: 1, values: [val]};
- } else {
- return {status: -1, values: []};
- }
-};
-
-alasql.srch.PARENT = function(/*val,args,stope*/) {
- // TODO: implement
- console.error('PARENT not implemented', arguments);
-
- return {status: -1, values: []};
-};
-
-alasql.srch.CHILD = function(val, args, stope) {
-
- if (typeof val === 'object') {
- if (Array.isArray(val)) {
- return {status: 1, values: val};
- } else {
- if (stope.mode === 'XML') {
- return {
- status: 1,
- values: Object.keys(val.children).map(function(key) {
- return val.children[key];
- }),
- };
- } else {
- return {
- status: 1,
- values: Object.keys(val).map(function(key) {
- return val[key];
- }),
- };
- }
- }
- } else {
- // If primitive value
- return {status: 1, values: []};
- }
-};
-
-// Return all keys
-alasql.srch.KEYS = function(val) {
- if (typeof val === 'object' && val !== null) {
- return {status: 1, values: Object.keys(val)};
- } else {
- // If primitive value
- return {status: 1, values: []};
- }
-};
-
-// Test expression
-alasql.srch.WHERE = function(val, args, stope, params) {
- var exprs = args[0].toJS('x', '');
- var exprfn = new Function('x,alasql,params', 'return ' + exprs);
- if (exprfn(val, alasql, params)) {
- return {status: 1, values: [val]};
- } else {
- return {status: -1, values: []};
- }
-};
-
-alasql.srch.NAME = function(val, args) {
- if (val.name === args[0]) {
- return {status: 1, values: [val]};
- } else {
- return {status: -1, values: []};
- }
-};
-
-alasql.srch.CLASS = function(val, args) {
-
- // Please avoid `===` here
- if (val.$class == args) {
- // jshint ignore:line
- return {status: 1, values: [val]};
- } else {
- return {status: -1, values: []};
- }
-};
-
-// Transform expression
-alasql.srch.VERTEX = function(val) {
- if (val.$node === 'VERTEX') {
- return {status: 1, values: [val]};
- } else {
- return {status: -1, values: []};
- }
-};
-
-// Transform expression
-alasql.srch.INSTANCEOF = function(val, args) {
- if (val instanceof alasql.fn[args[0]]) {
- return {status: 1, values: [val]};
- } else {
- return {status: -1, values: []};
- }
-};
-
-// Transform expression
-alasql.srch.EDGE = function(val) {
- if (val.$node === 'EDGE') {
- return {status: 1, values: [val]};
- } else {
- return {status: -1, values: []};
- }
-};
-
-// Transform expression
-alasql.srch.EX = function(val, args, stope, params) {
- var exprs = args[0].toJS('x', '');
- var exprfn = new Function('x,alasql,params', 'return ' + exprs);
- return {status: 1, values: [exprfn(val, alasql, params)]};
-};
-
-// Transform expression
-alasql.srch.RETURN = function(val, args, stope, params) {
- var res = {};
- if (args && args.length > 0) {
- args.forEach(function(arg) {
- var exprs = arg.toJS('x', '');
- var exprfn = new Function('x,alasql,params', 'return ' + exprs);
- if (typeof arg.as === 'undefined') {
- arg.as = arg.toString();
- }
- res[arg.as] = exprfn(val, alasql, params);
- });
- }
- return {status: 1, values: [res]};
-};
-
-// Transform expression
-alasql.srch.REF = function(val) {
- return {status: 1, values: [alasql.databases[alasql.useid].objects[val]]};
-};
-
-// Transform expression
-alasql.srch.OUT = function(val) {
- if (val.$out && val.$out.length > 0) {
- var res = val.$out.map(function(v) {
- return alasql.databases[alasql.useid].objects[v];
- });
- return {status: 1, values: res};
- } else {
- return {status: -1, values: []};
- }
-};
-
-alasql.srch.OUTOUT = function(val) {
- if (val.$out && val.$out.length > 0) {
- var res = [];
- val.$out.forEach(function(v) {
- var av = alasql.databases[alasql.useid].objects[v];
- if (av && av.$out && av.$out.length > 0) {
- av.$out.forEach(function(vv) {
- res = res.concat(alasql.databases[alasql.useid].objects[vv]);
- });
- }
- });
- return {status: 1, values: res};
- } else {
- return {status: -1, values: []};
- }
-};
-
-// Transform expression
-alasql.srch.IN = function(val) {
- if (val.$in && val.$in.length > 0) {
- var res = val.$in.map(function(v) {
- return alasql.databases[alasql.useid].objects[v];
- });
- return {status: 1, values: res};
- } else {
- return {status: -1, values: []};
- }
-};
-
-alasql.srch.ININ = function(val) {
- if (val.$in && val.$in.length > 0) {
- var res = [];
- val.$in.forEach(function(v) {
- var av = alasql.databases[alasql.useid].objects[v];
- if (av && av.$in && av.$in.length > 0) {
- av.$in.forEach(function(vv) {
- res = res.concat(alasql.databases[alasql.useid].objects[vv]);
- });
- }
- });
- return {status: 1, values: res};
- } else {
- return {status: -1, values: []};
- }
-};
-
-// Transform expression
-alasql.srch.AS = function(val, args) {
- alasql.vars[args[0]] = val;
- return {status: 1, values: [val]};
-};
-
-// Transform expression
-alasql.srch.AT = function(val, args) {
- var v = alasql.vars[args[0]];
- return {status: 1, values: [v]};
-};
-
-// Transform expression
-alasql.srch.CLONEDEEP = function(val) {
- // TODO something wrong
- var z = cloneDeep(val);
- return {status: 1, values: [z]};
-};
-
-// // Transform expression
-// alasql.srch.DELETE = function(val,args) {
-
-// };
-
-// Transform expression
-alasql.srch.SET = function(val, args, stope, params) {
-
- var s = args
- .map(function(st) {
-
- if (st.method === '@') {
- return "alasql.vars['" + st.variable + "']=" + st.expression.toJS('x', '');
- } else if (st.method === '$') {
- return "params['" + st.variable + "']=" + st.expression.toJS('x', '');
- } else {
- return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
- }
- })
- .join(';');
- var setfn = new Function('x,params,alasql', s);
-
- setfn(val, params, alasql);
-
- return {status: 1, values: [val]};
-};
-
-alasql.srch.ROW = function(val, args, stope, params) {
- var s = 'var y;return [';
-
- s += args
- .map(function(arg) {
- return arg.toJS('x', '');
- })
- .join(',');
- s += ']';
- var setfn = new Function('x,params,alasql', s);
- var rv = setfn(val, params, alasql);
-
- return {status: 1, values: [rv]};
-};
-
-alasql.srch.D3 = function(val) {
- if (val.$node !== 'VERTEX' && val.$node === 'EDGE') {
- val.source = val.$in[0];
- val.target = val.$out[0];
- }
-
- return {status: 1, values: [val]};
-};
-
-var compileSearchOrder = function(order) {
- if (order) {
-
- if (
- order &&
- order.length === 1 &&
- order[0].expression &&
- typeof order[0].expression === 'function'
- ) {
-
- var func = order[0].expression;
-
- return function(a, b) {
- var ra = func(a),
- rb = func(b);
- if (ra > rb) {
- return 1;
- }
- if (ra === rb) {
- return 0;
- }
- return -1;
- };
- }
-
- var s = '';
- var sk = '';
- order.forEach(function(ord) {
-
- // Date conversion
- var dg = '';
-
- if (ord.expression instanceof yy.NumValue) {
- ord.expression = self.columns[ord.expression.value - 1];
- }
-
- if (ord.expression instanceof yy.Column) {
- var columnid = ord.expression.columnid;
-
- if (alasql.options.valueof) {
- dg = '.valueOf()'; // TODO Check
- }
- // COLLATE NOCASE
- if (ord.nocase) {
- dg += '.toUpperCase()';
- }
-
- if (columnid === '_') {
- s +=
- 'if(a' +
- dg +
- (ord.direction === 'ASC' ? '>' : '<') +
- 'b' +
- dg +
- ')return 1;';
- s += 'if(a' + dg + '==b' + dg + '){';
- } else {
- s +=
- "if((a['" +
- columnid +
- "']||'')" +
- dg +
- (ord.direction === 'ASC' ? '>' : '<') +
- "(b['" +
- columnid +
- "']||'')" +
- dg +
- ')return 1;';
- s +=
- "if((a['" +
- columnid +
- "']||'')" +
- dg +
- "==(b['" +
- columnid +
- "']||'')" +
- dg +
- '){';
- }
- } else {
- dg = '.valueOf()';
- // COLLATE NOCASE
- if (ord.nocase) {
- dg += '.toUpperCase()';
- }
- s +=
- 'if((' +
- ord.toJS('a', '') +
- "||'')" +
- dg +
- (ord.direction === 'ASC' ? '>(' : '<(') +
- ord.toJS('b', '') +
- "||'')" +
- dg +
- ')return 1;';
- s +=
- 'if((' +
- ord.toJS('a', '') +
- "||'')" +
- dg +
- '==(' +
- ord.toJS('b', '') +
- "||'')" +
- dg +
- '){';
- }
-
- // TODO Add date comparision
- // s += 'if(a[\''+columnid+"']"+dg+(ord.direction == 'ASC'?'>':'<')+'b[\''+columnid+"']"+dg+')return 1;';
- // s += 'if(a[\''+columnid+"']"+dg+'==b[\''+columnid+"']"+dg+'){';
- // }
- sk += '}';
- });
- s += 'return 0;';
- s += sk + 'return -1';
-
- return new Function('a,b', s);
- }
-};
-
-alasql.srch.ORDERBY = function(val, args /*,stope*/) {
-
- var res = val.sort(compileSearchOrder(args));
- return {status: 1, values: res};
-};
-
-// Main query procedure
-function queryfn(query, oldscope, cb, A, B) {
- var aaa = query.sources.length;
-
- var ms;
- query.sourceslen = query.sources.length;
- var slen = query.sourceslen;
- query.query = query; // TODO Remove to prevent memory leaks
- query.A = A;
- query.B = B;
- query.cb = cb;
- query.oldscope = oldscope;
-
- // Run all subqueries before main statement
- if (query.queriesfn) {
- query.sourceslen += query.queriesfn.length;
- slen += query.queriesfn.length;
-
- query.queriesdata = [];
-
- query.queriesfn.forEach(function(q, idx) {
- // if(query.explain) ms = Date.now();
-
- // var res = flatArray(q(query.params,null,queryfn2,(-idx-1),query));
-
- // var res = flatArray(queryfn(q.query,null,queryfn2,(-idx-1),query));
-
- q.query.params = query.params;
- // query.queriesdata[idx] =
-
- // if(false) {
- // queryfn(q.query,query.oldscope,queryfn2,(-idx-1),query);
- // } else {
- queryfn2([], -idx - 1, query);
- // }
-
- // query.explaination.push({explid: query.explid++, description:'Query '+idx,ms:Date.now()-ms});
- // query.queriesdata[idx] = res;
- // return res;
- });
-
- }
-
- var scope;
- if (!oldscope) scope = {};
- else scope = cloneDeep(oldscope);
- query.scope = scope;
-
- // First - refresh data sources
-
- var result;
- query.sources.forEach(function(source, idx) {
- // source.data = query.database.tables[source.tableid].data;
-
- source.query = query;
- var rs = source.datafn(query, query.params, queryfn2, idx, alasql);
-
- if (typeof rs !== 'undefined') {
- // TODO - this is a hack: check if result is array - check all cases and
- // make it more logical
- if ((query.intofn || query.intoallfn) && Array.isArray(rs)) rs = rs.length;
- result = rs;
- }
- //
- // Ugly hack to use in query.wherefn and source.srcwherefns functions
- // constructions like this.queriesdata['test'].
- // I can elimite it with source.srcwherefn.bind(this)()
- // but it may be slow.
- //
- source.queriesdata = query.queriesdata;
- });
- if (query.sources.length == 0 || 0 === slen) result = queryfn3(query);
-
- return result;
-}
-
-function queryfn2(data, idx, query) {
-
- //console.trace();
-
- if (idx >= 0) {
- var source = query.sources[idx];
- source.data = data;
- if (typeof source.data == 'function') {
- source.getfn = source.data;
- source.dontcache = source.getfn.dontcache;
-
- // var prevsource = query.sources[h-1];
- if (
- source.joinmode == 'OUTER' ||
- source.joinmode == 'RIGHT' ||
- source.joinmode == 'ANTI'
- ) {
- source.dontcache = false;
- }
- source.data = {};
- }
- } else {
- // subqueries
-
- query.queriesdata[-idx - 1] = flatArray(data);
-
- }
-
- query.sourceslen--;
- if (query.sourceslen > 0) return;
-
- return queryfn3(query);
-}
-
-function queryfn3(query) {
- var scope = query.scope,
- jlen;
-
- // Preindexation of data sources
- // if(!oldscope) {
- preIndex(query);
- // }
-
- // query.sources.forEach(function(source) {
-
- // });
-
- // Prepare variables
- query.data = [];
- query.xgroups = {};
- query.groups = [];
-
- // Level of Joins
- var h = 0;
-
- // Start walking over data
-
- doJoin(query, scope, h);
-
- // If groupping, then filter groups with HAVING function
-
- if (query.groupfn) {
- query.data = [];
- if (0 === query.groups.length) {
- var g = {};
- if (query.selectGroup.length > 0) {
-
- query.selectGroup.forEach(function(sg) {
- if (sg.aggregatorid == 'COUNT' || sg.aggregatorid == 'SUM') {
- g[sg.nick] = 0;
- } else {
- g[sg.nick] = undefined;
- }
- });
- }
- query.groups = [g];
-
- }
-
- // ******
-
- if (query.aggrKeys.length > 0) {
- var gfns = '';
- query.aggrKeys.forEach(function(col) {
- gfns +=
- "g['" +
- col.nick +
- "']=alasql.aggr['" +
- col.funcid +
- "'](undefined,g['" +
- col.nick +
- "'],3);";
- // gfns += 'return g[\''+col.nick+'\];';
- });
-
- var gfn = new Function('g,params,alasql', 'var y;' + gfns);
- }
-
- // return "'"+colas+'\':alasql.aggr[\''+col.funcid+'\']('+colexp+',undefined,(acc={}),1),'
- // +'\'__REDUCE__'+colas+'\':acc,';
-
- // *******
-
- // debugger;
- // if(false && (query.groups.length == 1) && (Object.keys(query.groups[0]).length == 0)) {
-
- // } else {
- for (var i = 0, ilen = query.groups.length; i < ilen; i++) {
- var g = query.groups[i];
-
- if (gfn) gfn(g, query.params, alasql);
-
- if (!query.havingfn || query.havingfn(g, query.params, alasql)) {
-
- var d = query.selectgfn(g, query.params, alasql);
- query.data.push(d);
- }
- }
- // }
-
- // query.groups = query.groups.filter();
- }
- // Remove distinct values
- doDistinct(query);
-
- // UNION / UNION ALL
- if (query.unionallfn) {
- // TODO Simplify this part of program
- var ud, nd;
- if (query.corresponding) {
- if (!query.unionallfn.query.modifier) query.unionallfn.query.modifier = undefined;
- ud = query.unionallfn(query.params);
- } else {
- if (!query.unionallfn.query.modifier) query.unionallfn.query.modifier = 'RECORDSET';
- nd = query.unionallfn(query.params);
- ud = [];
- ilen = nd.data.length;
- for (var i = 0; i < ilen; i++) {
- var r = {};
- for (var j = Math.min(query.columns.length, nd.columns.length) - 1; 0 <= j; j--) {
- r[query.columns[j].columnid] = nd.data[i][nd.columns[j].columnid];
- }
- ud.push(r);
- }
- }
- query.data = query.data.concat(ud);
- } else if (query.unionfn) {
- if (query.corresponding) {
- if (!query.unionfn.query.modifier) query.unionfn.query.modifier = 'ARRAY';
- ud = query.unionfn(query.params);
- } else {
- if (!query.unionfn.query.modifier) query.unionfn.query.modifier = 'RECORDSET';
- nd = query.unionfn(query.params);
- ud = [];
- ilen = nd.data.length;
- for (var i = 0; i < ilen; i++) {
- r = {};
- jlen = Math.min(query.columns.length, nd.columns.length);
- for (var j = 0; j < jlen; j++) {
- r[query.columns[j].columnid] = nd.data[i][nd.columns[j].columnid];
- }
- ud.push(r);
- }
- }
-
- query.data = arrayUnionDeep(query.data, ud);
- } else if (query.exceptfn) {
- if (query.corresponding) {
- if (!query.exceptfn.query.modifier) query.exceptfn.query.modifier = 'ARRAY';
- var ud = query.exceptfn(query.params);
- } else {
- if (!query.exceptfn.query.modifier) query.exceptfn.query.modifier = 'RECORDSET';
- var nd = query.exceptfn(query.params);
- var ud = [];
- for (var i = 0, ilen = nd.data.length; i < ilen; i++) {
- var r = {};
- for (var j = Math.min(query.columns.length, nd.columns.length) - 1; 0 <= j; j--) {
- r[query.columns[j].columnid] = nd.data[i][nd.columns[j].columnid];
- }
- ud.push(r);
- }
- }
-
- query.data = arrayExceptDeep(query.data, ud);
- } else if (query.intersectfn) {
- if (query.corresponding) {
- if (!query.intersectfn.query.modifier) query.intersectfn.query.modifier = undefined;
- ud = query.intersectfn(query.params);
- } else {
- if (!query.intersectfn.query.modifier) query.intersectfn.query.modifier = 'RECORDSET';
- nd = query.intersectfn(query.params);
- ud = [];
- ilen = nd.data.length;
- for (i = 0; i < ilen; i++) {
- r = {};
- jlen = Math.min(query.columns.length, nd.columns.length);
- for (j = 0; j < jlen; j++) {
- r[query.columns[j].columnid] = nd.data[i][nd.columns[j].columnid];
- }
- ud.push(r);
- }
- }
-
- query.data = arrayIntersectDeep(query.data, ud);
- }
-
- // Ordering
- if (query.orderfn) {
- if (query.explain) var ms = Date.now();
- query.data = query.data.sort(query.orderfn);
- if (query.explain) {
- query.explaination.push({
- explid: query.explid++,
- description: 'QUERY BY',
- ms: Date.now() - ms,
- });
- }
- }
-
- // Reduce to limit and offset
- doLimit(query);
-
- // Remove Angular.js artifacts and other unnecessary columns
- // Issue #25
-
- // TODO: Check what artefacts rest from Angular.js
- if (typeof angular != 'undefined') {
- query.removeKeys.push('$$hashKey');
- }
-
- if (query.removeKeys.length > 0) {
- var removeKeys = query.removeKeys;
-
- // Remove from data
- jlen = removeKeys.length;
- if (jlen > 0) {
- ilen = query.data.length;
- for (i = 0; i < ilen; i++) {
- for (j = 0; j < jlen; j++) {
- delete query.data[i][removeKeys[j]];
- }
- }
- }
-
- // Remove from columns list
- if (query.columns.length > 0) {
- query.columns = query.columns.filter(function(column) {
- var found = false;
- removeKeys.forEach(function(key) {
- if (column.columnid == key) found = true;
- });
- return !found;
- });
- }
- }
-
- if (typeof query.removeLikeKeys != 'undefined' && query.removeLikeKeys.length > 0) {
- var removeLikeKeys = query.removeLikeKeys;
-
- // Remove unused columns
- // SELECT * REMOVE COLUMNS LIKE "%b"
- for (var i = 0, ilen = query.data.length; i < ilen; i++) {
- r = query.data[i];
- for (var k in r) {
- for (j = 0; j < query.removeLikeKeys.length; j++) {
- if (alasql.utils.like(query.removeLikeKeys[j], k)) {
- // if(k.match(query.removeLikeKeys[j])) {
- delete r[k];
- }
- }
- }
- }
-
- if (query.columns.length > 0) {
- query.columns = query.columns.filter(function(column) {
- var found = false;
- removeLikeKeys.forEach(function(key) {
- // if(column.columnid.match(key)) found = true;
- if (alasql.utils.like(key, column.columnid)) {
- found = true;
- }
- });
- return !found;
- });
- }
- }
-
- if (query.pivotfn) query.pivotfn();
- if (query.unpivotfn) query.unpivotfn();
-
- if (query.intoallfn) {
-
- // var res = query.intoallfn(query.columns,query.cb,query.A, query.B, alasql);
- var res = query.intoallfn(query.columns, query.cb, query.params, query.alasql);
-
- // if(query.cb) res = query.cb(res,query.A, query.B);
-
- // debugger;
- return res;
- } else if (query.intofn) {
- ilen = query.data.length;
- for (i = 0; i < ilen; i++) {
- query.intofn(query.data[i], i, query.params, query.alasql);
- }
-
- if (query.cb) query.cb(query.data.length, query.A, query.B);
- return query.data.length;
- } else {
-
- res = query.data;
- if (query.cb) res = query.cb(query.data, query.A, query.B);
- return res;
- }
-}
-
-// Limiting
-function doLimit(query) {
-
- if (query.limit) {
- var offset = 0;
- if (query.offset) {
- offset = query.offset | 0 || 0;
- offset = offset < 0 ? 0 : offset;
- }
- var limit;
- if (query.percent) {
- limit = ((query.data.length * query.limit / 100) | 0) + offset;
- } else {
- limit = (query.limit | 0) + offset;
- }
- query.data = query.data.slice(offset, limit);
- }
-}
-
-// Distinct
-function doDistinct(query) {
- if (query.distinct) {
- var uniq = {};
- // TODO: Speedup, because Object.keys is slow**
- // TODO: Problem with DISTINCT on objects
- var keys = Object.keys(query.data[0] || []);
- for (var i = 0, ilen = query.data.length; i < ilen; i++) {
- var uix = keys
- .map(function(k) {
- return query.data[i][k];
- })
- .join('`');
- uniq[uix] = query.data[i];
- }
- query.data = [];
- for (var key in uniq) {
- query.data.push(uniq[key]);
- }
- }
-}
-
-// Optimization: preliminary indexation of joins
-var preIndex = function(query) {
-
- // Loop over all sources
- // Todo: make this loop smaller and more graspable
- for (var k = 0, klen = query.sources.length; k < klen; k++) {
- var source = query.sources[k];
- delete source.ix;
- // If there is indexation rule
-
- if (k > 0 && source.optimization == 'ix' && source.onleftfn && source.onrightfn) {
- // If there is no table.indices - create it
- if (source.databaseid && alasql.databases[source.databaseid].tables[source.tableid]) {
- if (!alasql.databases[source.databaseid].tables[source.tableid].indices)
- query.database.tables[source.tableid].indices = {};
- // Check if index already exists
- var ixx =
- alasql.databases[source.databaseid].tables[source.tableid].indices[
- hash(source.onrightfns + '`' + source.srcwherefns)
- ];
- if (!alasql.databases[source.databaseid].tables[source.tableid].dirty && ixx) {
- source.ix = ixx;
- }
- }
-
- if (!source.ix) {
- source.ix = {};
- // Walking over source data
- var scope = {};
- var i = 0;
- var ilen = source.data.length;
- var dataw;
- // while(source.getfn i= query.sources.length) {
- // Todo: check if this runs once too many
-
- // Then apply where and select
-
- if (query.wherefn(scope, query.params, alasql)) {
-
- // var res = query.selectfn(scope, query.params, alasql);
-
- // If there is a GROUP BY then pipe to groupping function
- if (query.groupfn) {
- query.groupfn(scope, query.params, alasql);
- } else {
- // query.qwerty = 999;
-
- query.data.push(query.selectfn(scope, query.params, alasql));
- }
- }
- } else if (query.sources[h].applyselect) {
-
- var source = query.sources[h];
- source.applyselect(
- query.params,
- function(data) {
- if (data.length > 0) {
-
- for (var i = 0; i < data.length; i++) {
- scope[source.alias] = data[i];
- doJoin(query, scope, h + 1);
- }
- } else {
- if (source.applymode == 'OUTER') {
- scope[source.alias] = {};
- doJoin(query, scope, h + 1);
- }
- }
- },
- scope
- );
-
- } else {
- // STEP 1
-
- var source = query.sources[h];
- var nextsource = query.sources[h + 1];
-
- // if(source.joinmode == "LEFT" || source.joinmode == "INNER" || source.joinmode == "RIGHT"
- // || source.joinmode == "OUTER" || source.joinmode == "SEMI") {
- // Todo: check if this is smart
- if (true) {
- //source.joinmode != "ANTI") {
-
- var tableid = source.alias || source.tableid;
- var pass = false; // For LEFT JOIN
- var data = source.data;
- var opt = false;
-
- // Reduce data for looping if there is optimization hint
- if (!source.getfn || (source.getfn && !source.dontcache)) {
- if (
- source.joinmode != 'RIGHT' &&
- source.joinmode != 'OUTER' &&
- source.joinmode != 'ANTI' &&
- source.optimization == 'ix'
- ) {
- data = source.ix[source.onleftfn(scope, query.params, alasql)] || [];
- opt = true;
-
- }
- }
-
- // Main cycle
- var i = 0;
- if (typeof data == 'undefined') {
- throw new Error('Data source number ' + h + ' in undefined');
- }
- var ilen = data.length;
- var dataw;
-
- while (
- (dataw = data[i]) ||
- (!opt && (source.getfn && (dataw = source.getfn(i)))) ||
- i < ilen
- ) {
- if (!opt && source.getfn && !source.dontcache) data[i] = dataw;
-
- scope[tableid] = dataw;
- // Reduce with ON and USING clause
- if (
- !source.onleftfn ||
- source.onleftfn(scope, query.params, alasql) ==
- source.onrightfn(scope, query.params, alasql)
- ) {
- // For all non-standard JOINs like a-b=0
- if (source.onmiddlefn(scope, query.params, alasql)) {
- // Recursively call new join
- // if(source.joinmode == "LEFT" || source.joinmode == "INNER" || source.joinmode == "OUTER" || source.joinmode == "RIGHT" ) {
- if (source.joinmode != 'SEMI' && source.joinmode != 'ANTI') {
-
- doJoin(query, scope, h + 1);
- }
-
- // if(source.data[i].f = 200) debugger;
-
- // if(source.joinmode == "RIGHT" || source.joinmode == "ANTI" || source.joinmode == "OUTER") {
- if (source.joinmode != 'LEFT' && source.joinmode != 'INNER') {
- dataw._rightjoin = true;
- }
-
- // for LEFT JOIN
- pass = true;
- }
- }
- i++;
- }
-
- // Additional join for LEFT JOINS
- if (
- (source.joinmode == 'LEFT' ||
- source.joinmode == 'OUTER' ||
- source.joinmode == 'SEMI') &&
- !pass
- ) {
- // Clear the scope after the loop
- scope[tableid] = {};
- doJoin(query, scope, h + 1);
- }
- }
-
- // When there is no records
- // if(data.length == 0 && query.groupfn) {
- // scope[tableid] = undefined;
- // doJoin(query,scope,h+1);
- // }
-
- // STEP 2
-
- if (h + 1 < query.sources.length) {
- if (
- nextsource.joinmode == 'OUTER' ||
- nextsource.joinmode == 'RIGHT' ||
- nextsource.joinmode == 'ANTI'
- ) {
- scope[source.alias] = {};
-
- var j = 0;
- var jlen = nextsource.data.length;
- var dataw;
-
- while (
- (dataw = nextsource.data[j]) ||
- (nextsource.getfn && (dataw = nextsource.getfn(j))) ||
- j < jlen
- ) {
- if (nextsource.getfn && !nextsource.dontcache) {
- nextsource.data[j] = dataw;
- }
-
- if (dataw._rightjoin) {
- delete dataw._rightjoin;
- } else {
- // delete dataw._rightjoin;
-
- if (h == 0) {
- scope[nextsource.alias] = dataw;
- doJoin(query, scope, h + 2);
- } else {
- //scope[nextsource.alias] = dataw;
- //doJoin(query, scope, h+2);
-
- }
- }
- j++;
- }
- // debugger;
- } else {
-
- }
- } else {
-
- }
-
- scope[tableid] = undefined;
-
- }
-}
-
-function swapSources(query, h) {
- var source = query.sources[h];
- var nextsource = query.sources[h + 1];
-
- var onleftfn = source.onleftfn;
- var onleftfns = source.onleftfns;
- var onrightfn = source.onrightfn;
- var onrightfns = source.onrightfns;
- var optimization = source.optimization;
-
- source.onleftfn = nextsource.onrightfn;
- source.onleftfns = nextsource.onrightfns;
- source.onrightfn = nextsource.onleftfn;
- source.onrightfns = nextsource.onleftfns;
- source.optimization = nextsource.optimization;
-
- nextsource.onleftfn = onleftfn;
- nextsource.onleftfns = onleftfns;
- nextsource.onrightfn = onrightfn;
- nextsource.onrightfns = onrightfns;
- nextsource.optimization = optimization;
-
- query.sources[h] = nextsource;
- query.sources[h + 1] = source;
-}
-
-/*
-//
-// Select run-time part for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-//
-// Main part of SELECT procedure
-//
-
-/* global yy */
-
-yy.Select = function(params) {
- return yy.extend(this, params);
-};
-yy.Select.prototype.toString = function() {
- var s;
- s = '';
- if (this.explain) {
- s += 'EXPLAIN ';
- }
- s += 'SELECT ';
- if (this.modifier) {
- s += this.modifier + ' ';
- }
- if (this.distinct) {
- s += 'DISTINCT ';
- }
- if (this.top) {
- s += 'TOP ' + this.top.value + ' ';
- if (this.percent) {
- s += 'PERCENT ';
- }
- }
- s += this.columns
- .map(function(col) {
- var s;
- s = col.toString();
- if (typeof col.as !== 'undefined') {
- s += ' AS ' + col.as;
- }
- return s;
- })
- .join(', ');
- if (this.from) {
- s +=
- ' FROM ' +
- this.from
- .map(function(f) {
- var ss;
- ss = f.toString();
- if (f.as) {
- ss += ' AS ' + f.as;
- }
- return ss;
- })
- .join(',');
- }
- if (this.joins) {
- s += this.joins
- .map(function(jn) {
- var ss;
- ss = ' ';
- if (jn.joinmode) {
- ss += jn.joinmode + ' ';
- }
- if (jn.table) {
- ss += 'JOIN ' + jn.table.toString();
- } else if (jn.select) {
- ss += 'JOIN (' + jn.select.toString() + ')';
- } else if (jn instanceof alasql.yy.Apply) {
- ss += jn.toString();
- } else {
- throw new Error('Wrong type in JOIN mode');
- }
- if (jn.as) {
- ss += ' AS ' + jn.as;
- }
- if (jn.using) {
- ss += ' USING ' + jn.using.toString();
- }
- if (jn.on) {
- ss += ' ON ' + jn.on.toString();
- }
- return ss;
- })
- .join('');
- }
- if (this.where) {
- s += ' WHERE ' + this.where.toString();
- }
- if (this.group && this.group.length > 0) {
- s +=
- ' GROUP BY ' +
- this.group
- .map(function(grp) {
- return grp.toString();
- })
- .join(', ');
- }
- if (this.having) {
- s += ' HAVING ' + this.having.toString();
- }
- if (this.order && this.order.length > 0) {
- s +=
- ' ORDER BY ' +
- this.order
- .map(function(ord) {
- return ord.toString();
- })
- .join(', ');
- }
- if (this.limit) {
- s += ' LIMIT ' + this.limit.value;
- }
- if (this.offset) {
- s += ' OFFSET ' + this.offset.value;
- }
- if (this.union) {
- s += ' UNION ' + (this.corresponding ? 'CORRESPONDING ' : '') + this.union.toString();
- }
- if (this.unionall) {
- s +=
- ' UNION ALL ' + (this.corresponding ? 'CORRESPONDING ' : '') + this.unionall.toString();
- }
- if (this.except) {
- s += ' EXCEPT ' + (this.corresponding ? 'CORRESPONDING ' : '') + this.except.toString();
- }
- if (this.intersect) {
- s +=
- ' INTERSECT ' +
- (this.corresponding ? 'CORRESPONDING ' : '') +
- this.intersect.toString();
- }
- return s;
-};
-
-/**
- Select statement in expression
- */
-yy.Select.prototype.toJS = function(context) {
-
- // if(this.expression.reduced) return 'true';
- // return this.expression.toJS(context, tableid, defcols);
-
- // var s = 'this.queriesdata['+(this.queriesidx-1)+'][0]';
-
- var s =
- 'alasql.utils.flatArray(this.queriesfn[' +
- (this.queriesidx - 1) +
- '](this.params,null,' +
- context +
- '))[0]';
-
- return s;
-};
-
-// Compile SELECT statement
-yy.Select.prototype.compile = function(databaseid, params) {
- var db = alasql.databases[databaseid];
- // Create variable for query
- var query = new Query();
-
- // Array with columns to be removed
- query.removeKeys = [];
- query.aggrKeys = [];
-
- query.explain = this.explain; // Explain
- query.explaination = [];
- query.explid = 1;
-
- query.modifier = this.modifier;
-
- query.database = db;
- // 0. Precompile whereexists
- this.compileWhereExists(query);
-
- // 0. Precompile queries for IN, NOT IN, ANY and ALL operators
- this.compileQueries(query);
-
- query.defcols = this.compileDefCols(query, databaseid);
-
- // 1. Compile FROM clause
- query.fromfn = this.compileFrom(query);
-
- // 2. Compile JOIN clauses
- if (this.joins) {
- this.compileJoins(query);
- }
-
- // todo?: 3. Compile SELECT clause
-
- // For ROWNUM()
- query.rownums = [];
-
- this.compileSelectGroup0(query);
-
- if (this.group || query.selectGroup.length > 0) {
- query.selectgfns = this.compileSelectGroup1(query);
- } else {
- query.selectfns = this.compileSelect1(query, params);
- }
-
- // Remove columns clause
- this.compileRemoveColumns(query);
-
- // 5. Optimize WHERE and JOINS
- if (this.where) {
- this.compileWhereJoins(query);
- }
-
- // 4. Compile WHERE clause
- query.wherefn = this.compileWhere(query);
-
- // 6. Compile GROUP BY
- if (this.group || query.selectGroup.length > 0) {
- query.groupfn = this.compileGroup(query);
- }
-
- // 6. Compile HAVING
- if (this.having) {
- query.havingfn = this.compileHaving(query);
- }
-
- // 8. Compile ORDER BY clause
- if (this.order) {
- query.orderfn = this.compileOrder(query);
- }
-
- if (this.group || query.selectGroup.length > 0) {
- query.selectgfn = this.compileSelectGroup2(query);
- } else {
- query.selectfn = this.compileSelect2(query);
- }
-
- // 7. Compile DISTINCT, LIMIT and OFFSET
- query.distinct = this.distinct;
-
- // 9. Compile PIVOT clause
- if (this.pivot) query.pivotfn = this.compilePivot(query);
- if (this.unpivot) query.pivotfn = this.compileUnpivot(query);
-
- // 10. Compile TOP/LIMIT/OFFSET/FETCH cleuse
- if (this.top) {
- query.limit = this.top.value;
- } else if (this.limit) {
- query.limit = this.limit.value;
- if (this.offset) {
- query.offset = this.offset.value;
- }
- }
-
- query.percent = this.percent;
-
- // 9. Compile ordering function for UNION and UNIONALL
- query.corresponding = this.corresponding; // If CORRESPONDING flag exists
- if (this.union) {
- query.unionfn = this.union.compile(databaseid);
- if (this.union.order) {
- query.orderfn = this.union.compileOrder(query);
- } else {
- query.orderfn = null;
- }
- } else if (this.unionall) {
- query.unionallfn = this.unionall.compile(databaseid);
- if (this.unionall.order) {
- query.orderfn = this.unionall.compileOrder(query);
- } else {
- query.orderfn = null;
- }
- } else if (this.except) {
- query.exceptfn = this.except.compile(databaseid);
- if (this.except.order) {
- query.orderfn = this.except.compileOrder(query);
- } else {
- query.orderfn = null;
- }
- } else if (this.intersect) {
- query.intersectfn = this.intersect.compile(databaseid);
- if (this.intersect.order) {
- query.intersectfn = this.intersect.compileOrder(query);
- } else {
- query.orderfn = null;
- }
- }
-
- // SELECT INTO
- if (this.into) {
- if (this.into instanceof yy.Table) {
- //
- // Save into the table in database
- //
- if (
- alasql.options.autocommit &&
- alasql.databases[this.into.databaseid || databaseid].engineid
- ) {
- // For external database when AUTOCOMMIT is ONs
- query.intoallfns =
- 'return alasql.engines["' +
- alasql.databases[this.into.databaseid || databaseid].engineid +
- '"]' +
- '.intoTable("' +
- (this.into.databaseid || databaseid) +
- '","' +
- this.into.tableid +
- '",this.data, columns, cb);';
- } else {
- // Into AlaSQL tables
- query.intofns =
- "alasql.databases['" +
- (this.into.databaseid || databaseid) +
- "'].tables" +
- "['" +
- this.into.tableid +
- "'].data.push(r);";
- }
- } else if (this.into instanceof yy.VarValue) {
- //
- // Save into local variable
- // SELECT * INTO @VAR1 FROM ?
- //
- query.intoallfns =
- 'alasql.vars["' +
- this.into.variable +
- '"]=this.data;res=this.data.length;if(cb)res=cb(res);return res;';
- } else if (this.into instanceof yy.FuncValue) {
- //
- // If this is INTO() function, then call it
- // with one or two parameters
- //
- var qs = "return alasql.into['" + this.into.funcid.toUpperCase() + "'](";
- if (this.into.args && this.into.args.length > 0) {
- qs += this.into.args[0].toJS() + ',';
- if (this.into.args.length > 1) {
- qs += this.into.args[1].toJS() + ',';
- } else {
- qs += 'undefined,';
- }
- } else {
- qs += 'undefined, undefined,';
- }
- query.intoallfns = qs + 'this.data,columns,cb)';
-
- } else if (this.into instanceof yy.ParamValue) {
- //
- // Save data into parameters array
- // like alasql('SELECT * INTO ? FROM ?',[outdata,srcdata]);
- //
- query.intofns = "params['" + this.into.param + "'].push(r)";
- }
-
- if (query.intofns) {
- // Create intofn function
-
- query.intofn = new Function('r,i,params,alasql', 'var y;' + query.intofns);
- } else if (query.intoallfns) {
- // Create intoallfn function
-
- query.intoallfn = new Function('columns,cb,params,alasql', 'var y;' + query.intoallfns);
- }
- }
-
- // Now, compile all togeather into one function with query object in scope
- var statement = function(params, cb, oldscope) {
- query.params = params;
- // Note the callback function has the data and error reversed due to existing code in promiseExec which has the
- // err and data swapped. This trickles down into alasql.exec and further. Rather than risk breaking the whole thing,
- // the (data, err) standard is maintained here.
- var res1 = queryfn(query, oldscope, function(res, err) {
- if (err) {
- return cb(err, null);
- }
- if (query.rownums.length > 0) {
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- for (var j = 0, jlen = query.rownums.length; j < jlen; j++) {
- res[i][query.rownums[j]] = i + 1;
- }
- }
- }
-
- var res2 = modify(query, res);
-
- if (cb) {
- cb(res2);
- }
-
- return res2;
- });
-
- // if(typeof res1 != 'undefined') res1 = modify(query,res1);
-
- return res1;
- };
-
- // statement.dbversion = ;
-
- statement.query = query;
- return statement;
-};
-
-/**
- Modify res according modifier
- @function
- @param {object} query Query object
- @param res {object|number|string|boolean} res Data to be converted
- */
-function modify(query, res) {
- // jshint ignore:line
-
- /* If source is a primitive value then return it */
- if (
- typeof res === 'undefined' ||
- typeof res === 'number' ||
- typeof res === 'string' ||
- typeof res === 'boolean'
- ) {
- return res;
- }
-
- var modifier = query.modifier || alasql.options.modifier;
- var columns = query.columns;
- if (typeof columns === 'undefined' || columns.length == 0) {
- // Try to create columns
- if (res.length > 0) {
- var allcol = {};
- for (var i = Math.min(res.length, alasql.options.columnlookup || 10) - 1; 0 <= i; i--) {
- for (var key in res[i]) {
- allcol[key] = true;
- }
- }
-
- columns = Object.keys(allcol).map(function(columnid) {
- return {columnid: columnid};
- });
- } else {
- // Cannot recognize columns
- columns = [];
- }
- }
-
- if (modifier === 'VALUE') {
-
- if (res.length > 0) {
- var key;
- if (columns && columns.length > 0) {
- key = columns[0].columnid;
- } else {
- key = Object.keys(res[0])[0];
- }
- res = res[0][key];
- } else {
- res = undefined;
- }
- } else if (modifier === 'ROW') {
- if (res.length > 0) {
- var key;
- var a = [];
- for (var key in res[0]) {
- a.push(res[0][key]);
- }
- res = a;
- } else {
- res = undefined;
- }
- } else if (modifier === 'COLUMN') {
- var ar = [];
- if (res.length > 0) {
- var key;
- if (columns && columns.length > 0) {
- key = columns[0].columnid;
- } else {
- key = Object.keys(res[0])[0];
- }
-
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- ar.push(res[i][key]);
- }
- }
- res = ar;
- } else if (modifier === 'MATRIX') {
- // Returns square matrix of rows
- var ar = [];
- for (var i = 0; i < res.length; i++) {
- var a = [];
- var r = res[i];
- for (var j = 0; j < columns.length; j++) {
- a.push(r[columns[j].columnid]);
- }
- ar.push(a);
- }
- res = ar;
- } else if (modifier === 'INDEX') {
- var ar = {};
- var key, val;
- if (columns && columns.length > 0) {
- key = columns[0].columnid;
- val = columns[1].columnid;
- } else {
- var okeys = Object.keys(res[0]);
- key = okeys[0];
- val = okeys[1];
- }
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- ar[res[i][key]] = res[i][val];
- }
- res = ar;
- // res = arrayOfArrays(res);
- } else if (modifier === 'RECORDSET') {
- res = new alasql.Recordset({columns: columns, data: res});
- // res = arrayOfArrays(res);
- } else if (modifier === 'TEXTSTRING') {
- var key;
- if (columns && columns.length > 0) {
- key = columns[0].columnid;
- } else {
- key = Object.keys(res[0])[0];
- }
-
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- res[i] = res[i][key];
- }
- res = res.join('\n');
- // res = arrayOfArrays(res);
- }
- return res;
-}
-
-yy.Select.prototype.execute = function(databaseid, params, cb) {
- return this.compile(databaseid)(params, cb);
- // throw new Error('Insert statement is should be compiled')
-};
-
-/*
-//
-// EXISTS and other subqueries functions functions for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.ExistsValue = function(params) {
- return yy.extend(this, params);
-};
-yy.ExistsValue.prototype.toString = function() {
- return 'EXISTS(' + this.value.toString() + ')';
-};
-
-yy.ExistsValue.prototype.toType = function() {
- return 'boolean';
-};
-
-yy.ExistsValue.prototype.toJS = function(context, tableid, defcols) {
-
- return 'this.existsfn[' + this.existsidx + '](params,null,' + context + ').data.length';
-};
-
-yy.Select.prototype.compileWhereExists = function(query) {
- if (!this.exists) return;
- query.existsfn = this.exists.map(function(ex) {
- var nq = ex.compile(query.database.databaseid);
-
- // if(!nq.query.modifier) nq.query.modifier = 'RECORDSET';
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
-};
-
-yy.Select.prototype.compileQueries = function(query) {
- if (!this.queries) return;
- query.queriesfn = this.queries.map(function(q) {
- var nq = q.compile(query.database.databaseid);
-
- // if(!nq.query) nq.query = {};
- nq.query.modifier = 'RECORDSET';
- // if(!nq.query.modifier) nq.query.modifier = 'RECORDSET';
- return nq;
- });
-};
-
-//
-// Prepare subqueries and exists
-//
-alasql.precompile = function(statement, databaseid, params) {
-
- if (!statement) return;
- statement.params = params;
- if (statement.queries) {
-
- statement.queriesfn = statement.queries.map(function(q) {
- var nq = q.compile(databaseid || statement.database.databaseid);
-
- // nq.query.modifier = undefined;
- // if(!nq.query.modifier) nq.query.modifier = 'RECORDSET';
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
- if (statement.exists) {
-
- statement.existsfn = statement.exists.map(function(ex) {
- var nq = ex.compile(databaseid || statement.database.databaseid);
-
- // if(!nq.query.modifier) nq.query.modifier = 'RECORDSET';
- // if(!nq.query.modifier) nq.query.modifier = 'ARRAY';
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
-};
-
-/*
-//
-// Select compiler part for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/* global yy, alasql, Mongo, returnTrue */
-
-yy.Select.prototype.compileFrom = function(query) {
-
- var self = this;
- query.sources = [];
- // var tableid = this.from[0].tableid;
- // var as = '';
- // if(self.from[0].as) as = this.from[0].as;
-
- query.aliases = {};
- if (!self.from) return;
-
- self.from.forEach(function(tq) {
-
- var ps = '';
-
- var alias = tq.as || tq.tableid;
-
- if (tq instanceof yy.Table) {
-
- query.aliases[alias] = {
- tableid: tq.tableid,
- databaseid: tq.databaseid || query.database.databaseid,
- type: 'table',
- };
- } else if (tq instanceof yy.Select) {
- query.aliases[alias] = {type: 'subquery'};
- } else if (tq instanceof yy.Search) {
- query.aliases[alias] = {type: 'subsearch'};
- } else if (tq instanceof yy.ParamValue) {
- query.aliases[alias] = {type: 'paramvalue'};
- } else if (tq instanceof yy.FuncValue) {
- query.aliases[alias] = {type: 'funcvalue'};
- } else if (tq instanceof yy.VarValue) {
- query.aliases[alias] = {type: 'varvalue'};
- } else if (tq instanceof yy.FromData) {
- query.aliases[alias] = {type: 'fromdata'};
- } else if (tq instanceof yy.Json) {
- query.aliases[alias] = {type: 'json'};
- } else if (tq.inserted) {
- query.aliases[alias] = {type: 'inserted'};
- } else {
- throw new Error('Wrong table at FROM');
- }
-
- var source = {
- alias: alias,
- databaseid: tq.databaseid || query.database.databaseid,
- tableid: tq.tableid,
- joinmode: 'INNER',
- onmiddlefn: returnTrue,
- srcwherefns: '', // for optimization
- srcwherefn: returnTrue,
- // columns: []
- };
-
- if (tq instanceof yy.Table) {
- // Get columns from table
- source.columns = alasql.databases[source.databaseid].tables[source.tableid].columns;
-
- if (
- alasql.options.autocommit &&
- alasql.databases[source.databaseid].engineid &&
- !alasql.databases[source.databaseid].tables[source.tableid].view
- ) {
-
- // TODO -- make view for external engine
- source.datafn = function(query, params, cb, idx, alasql) {
- return alasql.engines[alasql.databases[source.databaseid].engineid].fromTable(
- source.databaseid,
- source.tableid,
- cb,
- idx,
- query
- );
- };
- } else if (alasql.databases[source.databaseid].tables[source.tableid].view) {
- source.datafn = function(query, params, cb, idx, alasql) {
- var res = alasql.databases[source.databaseid].tables[source.tableid].select(
- params
- );
- if (cb) res = cb(res, idx, query);
- return res;
- };
- } else {
-
- source.datafn = function(query, params, cb, idx, alasql) {
- /*
-
-*/
- var res = alasql.databases[source.databaseid].tables[source.tableid].data;
-
- if (cb) res = cb(res, idx, query);
-
- return res;
- // return alasql.databases[source.databaseid].tables[source.tableid].data;
- };
- }
- } else if (tq instanceof yy.Select) {
- source.subquery = tq.compile(query.database.databaseid);
- if (typeof source.subquery.query.modifier === 'undefined') {
- source.subquery.query.modifier = 'RECORDSET'; // Subqueries always return recordsets
- }
- source.columns = source.subquery.query.columns;
-
- // tq.columns;
-
- source.datafn = function(query, params, cb, idx, alasql) {
- // return source.subquery(query.params, cb, idx, query);
- var res;
- source.subquery(query.params, function(data) {
- res = data.data;
- if (cb) res = cb(res, idx, query);
- return res;
- // return data.data;
- });
-
- return res;
- };
- } else if (tq instanceof yy.Search) {
- source.subsearch = tq;
- source.columns = [];
-
- source.datafn = function(query, params, cb, idx, alasql) {
- // return source.subquery(query.params, cb, idx, query);
- var res;
- source.subsearch.execute(query.database.databaseid, query.params, function(data) {
- res = data;
- if (cb) res = cb(res, idx, query);
- return res;
- // return data.data;
- });
-
- return res;
- };
- } else if (tq instanceof yy.ParamValue) {
- ps = "var res = alasql.prepareFromData(params['" + tq.param + "']";
-
- if (tq.array) ps += ',true';
- ps += ');if(cb)res=cb(res,idx,query);return res';
- source.datafn = new Function('query,params,cb,idx,alasql', ps);
- } else if (tq.inserted) {
- ps = 'var res = alasql.prepareFromData(alasql.inserted';
- if (tq.array) ps += ',true';
- ps += ');if(cb)res=cb(res,idx,query);return res';
- source.datafn = new Function('query,params,cb,idx,alasql', ps);
- } else if (tq instanceof yy.Json) {
- ps = 'var res = alasql.prepareFromData(' + tq.toJS();
-
- if (tq.array) ps += ',true';
- ps += ');if(cb)res=cb(res,idx,query);return res';
- source.datafn = new Function('query,params,cb,idx,alasql', ps);
- } else if (tq instanceof yy.VarValue) {
- ps = "var res = alasql.prepareFromData(alasql.vars['" + tq.variable + "']";
-
- if (tq.array) ps += ',true';
- ps += ');if(cb)res=cb(res,idx,query);return res';
- source.datafn = new Function('query,params,cb,idx,alasql', ps);
- } else if (tq instanceof yy.FuncValue) {
- ps = "var res=alasql.from['" + tq.funcid.toUpperCase() + "'](";
-
- if (tq.args && tq.args.length > 0) {
- if (tq.args[0]) {
- ps += tq.args[0].toJS('query.oldscope') + ',';
- } else {
- ps += 'null,';
- }
- if (tq.args[1]) {
- ps += tq.args[1].toJS('query.oldscope') + ',';
- } else {
- ps += 'null,';
- }
- } else {
- ps += 'null,null,';
- }
- ps += 'cb,idx,query';
- ps += ');/*if(cb)res=cb(res,idx,query);*/return res';
-
- source.datafn = new Function('query, params, cb, idx, alasql', ps);
- } else if (tq instanceof yy.FromData) {
- source.datafn = function(query, params, cb, idx, alasql) {
- var res = tq.data;
- if (cb) res = cb(res, idx, query);
- return res;
- };
- } else {
- throw new Error('Wrong table at FROM');
- }
- // source.data = alasql.databases[source.databaseid].tables[source.tableid].data;
- query.sources.push(source);
- });
- // TODO Add joins
- query.defaultTableid = query.sources[0].alias;
-
-};
-
-alasql.prepareFromData = function(data, array) {
-
- var i, ilen;
- var res = data;
- if (typeof data === 'string') {
- res = data.split(/\r?\n/);
- if (array) {
- for (i = 0, ilen = res.length; i < ilen; i++) {
- res[i] = [res[i]];
- }
- }
- } else if (array) {
- res = [];
- for (i = 0, ilen = data.length; i < ilen; i++) {
- res.push([data[i]]);
- }
-
- } else if (typeof data === 'object' && !Array.isArray(data)) {
- // } else if(typeof data == 'object' && !(typeof data.length == 'undefined')) {
- if (
- typeof Mongo !== 'undefined' &&
- typeof Mongo.Collection !== 'undefined' &&
- data instanceof Mongo.Collection
- ) {
- res = data.find().fetch();
- } else {
- res = [];
- for (var key in data) {
- if (data.hasOwnProperty(key)) res.push([key, data[key]]);
- }
- }
-
- }
-
- return res;
-};
-
-/*
-//
-// Select compiler part for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// SELECT Compile functions
-
-/* global yy, alasql, returnTrue, arrayIntersect */
-
-// Compile JOIN caluese
-yy.Select.prototype.compileJoins = function(query) {
-
- // debugger;
- var self = this;
-
- this.joins.forEach(function(jn) {
- // Test CROSS-JOIN
- var tq, ps, source;
- if (jn.joinmode === 'CROSS') {
- if (jn.using || jn.on) {
- throw new Error('CROSS JOIN cannot have USING or ON clauses');
- } else {
- jn.joinmode = 'INNER';
- }
- }
-
- if (jn instanceof yy.Apply) {
-
- source = {
- alias: jn.as,
- applymode: jn.applymode,
- onmiddlefn: returnTrue,
- srcwherefns: '', // for optimization
- srcwherefn: returnTrue,
- columns: [], // TODO check this
- };
- source.applyselect = jn.select.compile(query.database.databaseid);
- source.columns = source.applyselect.query.columns;
-
- source.datafn = function(query, params, cb, idx, alasql) {
- var res;
- if (cb) res = cb(res, idx, query);
- return res;
- };
-
- query.sources.push(source);
-
- return;
- }
-
- if (jn.table) {
- tq = jn.table;
- source = {
- alias: jn.as || tq.tableid,
- databaseid: tq.databaseid || query.database.databaseid,
- tableid: tq.tableid,
- joinmode: jn.joinmode,
- onmiddlefn: returnTrue,
- srcwherefns: '', // for optimization
- srcwherefn: returnTrue,
- columns: [],
- };
- //
-
- if (!alasql.databases[source.databaseid].tables[source.tableid]) {
- throw new Error(
- "Table '" +
- source.tableid +
- "' is not exists in database '" +
- source.databaseid +
- "'"
- );
- }
-
- source.columns = alasql.databases[source.databaseid].tables[source.tableid].columns;
-
- // source.data = query.database.tables[source.tableid].data;
- if (alasql.options.autocommit && alasql.databases[source.databaseid].engineid) {
-
- source.datafn = function(query, params, cb, idx, alasql) {
-
- return alasql.engines[alasql.databases[source.databaseid].engineid].fromTable(
- source.databaseid,
- source.tableid,
- cb,
- idx,
- query
- );
- };
- } else if (alasql.databases[source.databaseid].tables[source.tableid].view) {
- source.datafn = function(query, params, cb, idx, alasql) {
- var res = alasql.databases[source.databaseid].tables[source.tableid].select(
- params
- );
- if (cb) res = cb(res, idx, query);
- return res;
- };
- } else {
- source.datafn = function(query, params, cb, idx, alasql) {
- var res = alasql.databases[source.databaseid].tables[source.tableid].data;
- if (cb) res = cb(res, idx, query);
- return res;
- };
- }
-
- // var alias = jn.as || tq.tableid;
- // if(tq) {
- query.aliases[source.alias] = {
- tableid: tq.tableid,
- databaseid: tq.databaseid || query.database.databaseid,
- };
- // }
- } else if (jn.select) {
- tq = jn.select;
- source = {
- alias: jn.as,
- // databaseid: jn.databaseid || query.database.databaseid,
- // tableid: tq.tableid,
- joinmode: jn.joinmode,
- onmiddlefn: returnTrue,
- srcwherefns: '', // for optimization
- srcwherefn: returnTrue,
- columns: [],
- };
-
- source.subquery = tq.compile(query.database.databaseid);
- if (typeof source.subquery.query.modifier === 'undefined') {
- source.subquery.query.modifier = 'RECORDSET'; // Subqueries always return recordsets
- }
- source.columns = source.subquery.query.columns;
-
- // if(jn instanceof yy.Apply) {
- source.datafn = function(query, params, cb, idx, alasql) {
- // return cb(null,idx,alasql);
- return source.subquery(query.params, null, cb, idx).data;
- };
- // } else {
- // source.datafn = function(query, params, cb, idx, alasql) {
- // return source.subquery(query.params, null, cb, idx);
- // }
- // }
- query.aliases[source.alias] = {type: 'subquery'};
- } else if (jn.param) {
- source = {
- alias: jn.as,
- // databaseid: jn.databaseid || query.database.databaseid,
- // tableid: tq.tableid,
- joinmode: jn.joinmode,
- onmiddlefn: returnTrue,
- srcwherefns: '', // for optimization
- srcwherefn: returnTrue,
- };
- // source.data = ;
- var jnparam = jn.param.param;
-
- ps = "var res=alasql.prepareFromData(params['" + jnparam + "']";
- if (jn.array) ps += ',true';
- ps += ');if(cb)res=cb(res, idx, query);return res';
-
- source.datafn = new Function('query,params,cb,idx, alasql', ps);
- query.aliases[source.alias] = {type: 'paramvalue'};
- } else if (jn.variable) {
- source = {
- alias: jn.as,
- // databaseid: jn.databaseid || query.database.databaseid,
- // tableid: tq.tableid,
- joinmode: jn.joinmode,
- onmiddlefn: returnTrue,
- srcwherefns: '', // for optimization
- srcwherefn: returnTrue,
- };
- // source.data = ;
- // var jnparam = jn.param.param;
-
- ps = "var res=alasql.prepareFromData(alasql.vars['" + jn.variable + "']";
- if (jn.array) ps += ',true';
- ps += ');if(cb)res=cb(res, idx, query);return res';
-
- source.datafn = new Function('query,params,cb,idx, alasql', ps);
- query.aliases[source.alias] = {type: 'varvalue'};
- } else if (jn.func) {
- source = {
- alias: jn.as,
- // databaseid: jn.databaseid || query.database.databaseid,
- // tableid: tq.tableid,
- joinmode: jn.joinmode,
- onmiddlefn: returnTrue,
- srcwherefns: '', // for optimization
- srcwherefn: returnTrue,
- };
- // source.data = ;
-
- var s = "var res=alasql.from['" + jn.func.funcid.toUpperCase() + "'](";
-
- var args = jn.func.args;
- if (args && args.length > 0) {
- if (args[0]) {
- s += args[0].toJS('query.oldscope') + ',';
- } else {
- s += 'null,';
- }
- if (args[1]) {
- s += args[1].toJS('query.oldscope') + ',';
- } else {
- s += 'null,';
- }
- } else {
- s += 'null,null,';
- }
- s += 'cb,idx,query';
- s += ');/*if(cb)res=cb(res,idx,query);*/return res';
-
- source.datafn = new Function('query, params, cb, idx, alasql', s);
-
- query.aliases[source.alias] = {type: 'funcvalue'};
- }
-
- var alias = source.alias;
-
- // Test NATURAL-JOIN
- if (jn.natural) {
- if (jn.using || jn.on) {
- throw new Error('NATURAL JOIN cannot have USING or ON clauses');
- } else {
- // source.joinmode == "INNER";
- if (query.sources.length > 0) {
- var prevSource = query.sources[query.sources.length - 1];
- var prevTable =
- alasql.databases[prevSource.databaseid].tables[prevSource.tableid];
- var table = alasql.databases[source.databaseid].tables[source.tableid];
-
- if (prevTable && table) {
- var c1 = prevTable.columns.map(function(col) {
- return col.columnid;
- });
- var c2 = table.columns.map(function(col) {
- return col.columnid;
- });
- jn.using = arrayIntersect(c1, c2).map(function(colid) {
- return {columnid: colid};
- });
-
- } else {
- throw new Error(
- 'In this version of Alasql NATURAL JOIN ' +
- 'works for tables with predefined columns only'
- );
- }
- }
- }
- }
-
- if (jn.using) {
- prevSource = query.sources[query.sources.length - 1];
-
- source.onleftfns = jn.using
- .map(function(col) {
-
- return (
- "p['" +
- (prevSource.alias || prevSource.tableid) +
- "']['" +
- col.columnid +
- "']"
- );
- })
- .join('+"`"+');
-
- source.onleftfn = new Function('p,params,alasql', 'var y;return ' + source.onleftfns);
-
- source.onrightfns = jn.using
- .map(function(col) {
- return "p['" + (source.alias || source.tableid) + "']['" + col.columnid + "']";
- })
- .join('+"`"+');
- source.onrightfn = new Function('p,params,alasql', 'var y;return ' + source.onrightfns);
- source.optimization = 'ix';
-
- } else if (jn.on) {
-
- if (jn.on instanceof yy.Op && jn.on.op === '=' && !jn.on.allsome) {
-
- source.optimization = 'ix';
-
- var lefts = '';
- var rights = '';
- var middles = '';
- var middlef = false;
- // Test right and left sides
- var ls = jn.on.left.toJS('p', query.defaultTableid, query.defcols);
- var rs = jn.on.right.toJS('p', query.defaultTableid, query.defcols);
-
- if (
- ls.indexOf("p['" + alias + "']") > -1 &&
- !(rs.indexOf("p['" + alias + "']") > -1)
- ) {
- if (
- (ls.match(/p\['.*?'\]/g) || []).every(function(s) {
- return s === "p['" + alias + "']";
- })
- ) {
- rights = ls;
- } else {
- middlef = true;
- }
- } else if (
- !(ls.indexOf("p['" + alias + "']") > -1) &&
- rs.indexOf("p['" + alias + "']") > -1
- ) {
- if (
- (rs.match(/p\['.*?'\]/g) || []).every(function(s) {
- return s === "p['" + alias + "']";
- })
- ) {
- lefts = ls;
- } else {
- middlef = true;
- }
- } else {
- middlef = true;
- }
-
- if (
- rs.indexOf("p['" + alias + "']") > -1 &&
- !(ls.indexOf("p['" + alias + "']") > -1)
- ) {
- if (
- (rs.match(/p\['.*?'\]/g) || []).every(function(s) {
- return s === "p['" + alias + "']";
- })
- ) {
- rights = rs;
- } else {
- middlef = true;
- }
- } else if (
- !(rs.indexOf("p['" + alias + "']") > -1) &&
- ls.indexOf("p['" + alias + "']") > -1
- ) {
- if (
- (ls.match(/p\['.*?'\]/g) || []).every(function(s) {
- return s === "p['" + alias + "']";
- })
- ) {
- lefts = rs;
- } else {
- middlef = true;
- }
- } else {
- middlef = true;
- }
-
- if (middlef) {
- // middles = jn.on.toJS('p',query.defaultTableid);
- // } else {
- rights = '';
- lefts = '';
- middles = jn.on.toJS('p', query.defaultTableid, query.defcols);
- source.optimization = 'no';
- // What to here?
- }
-
- source.onleftfns = lefts;
- source.onrightfns = rights;
- source.onmiddlefns = middles || 'true';
-
- source.onleftfn = new Function(
- 'p,params,alasql',
- 'var y;return ' + source.onleftfns
- );
- source.onrightfn = new Function(
- 'p,params,alasql',
- 'var y;return ' + source.onrightfns
- );
- source.onmiddlefn = new Function(
- 'p,params,alasql',
- 'var y;return ' + source.onmiddlefns
- );
-
- // } else if(jn.on instanceof yy.Op && jn.on.op == 'AND') {
-
- } else {
-
- source.optimization = 'no';
- // source.onleftfn = returnTrue;
- // source.onleftfns = "true";
- source.onmiddlefns = jn.on.toJS('p', query.defaultTableid, query.defcols);
- source.onmiddlefn = new Function(
- 'p,params,alasql',
- 'var y;return ' + jn.on.toJS('p', query.defaultTableid, query.defcols)
- );
- }
-
- // Optimization function
- }
-
- // source.data = alasql.databases[source.databaseid].tables[source.tableid].data;
-
- // TODO SubQueries
-
- query.sources.push(source);
- });
-
-};
-
-yy.Select.prototype.compileWhere = function(query) {
- if (this.where) {
- if (typeof this.where == 'function') {
- return this.where;
- } else {
- var s = this.where.toJS('p', query.defaultTableid, query.defcols);
- query.wherefns = s;
-
- return new Function('p,params,alasql', 'var y;return ' + s);
- }
- } else
- return function() {
- return true;
- };
-};
-
-yy.Select.prototype.compileWhereJoins = function(query) {
- return;
-
- // TODO Fix Where optimization
-
- optimizeWhereJoin(query, this.where.expression);
-
- //for sources compile wherefs
- query.sources.forEach(function(source) {
- if (source.srcwherefns) {
- source.srcwherefn = new Function(
- 'p,params,alasql',
- 'var y;return ' + source.srcwherefns
- );
- }
- if (source.wxleftfns) {
- source.wxleftfn = new Function('p,params,alasql', 'var y;return ' + source.wxleftfns);
- }
- if (source.wxrightfns) {
- source.wxrightfn = new Function('p,params,alasql', 'var y;return ' + source.wxrightfns);
- }
-
- });
-};
-
-function optimizeWhereJoin(query, ast) {
- if (!ast) return false;
- if (!(ast instanceof yy.Op)) return;
- if (ast.op != '=' && ast.op != 'AND') return;
- if (ast.allsome) return;
-
- var s = ast.toJS('p', query.defaultTableid, query.defcols);
- var fsrc = [];
- query.sources.forEach(function(source, idx) {
- // Optimization allowed only for tables only
- if (source.tableid) {
- // This is a good place to remove all unnecessary optimizations
- if (s.indexOf("p['" + source.alias + "']") > -1) fsrc.push(source);
- }
- });
-
- // if(fsrc.length < query.sources.length) return;
-
- if (fsrc.length == 0) {
-
- return;
- } else if (fsrc.length == 1) {
- if (
- !(s.match(/p\[\'.*?\'\]/g) || []).every(function(s) {
- return s == "p['" + fsrc[0].alias + "']";
- })
- ) {
- return;
- // This is means, that we have column from parent query
- // So we return without optimization
- }
-
- var src = fsrc[0]; // optmiization source
- src.srcwherefns = src.srcwherefns ? src.srcwherefns + '&&' + s : s;
-
- if (ast instanceof yy.Op && (ast.op == '=' && !ast.allsome)) {
- if (ast.left instanceof yy.Column) {
- var ls = ast.left.toJS('p', query.defaultTableid, query.defcols);
- var rs = ast.right.toJS('p', query.defaultTableid, query.defcols);
- if (rs.indexOf("p['" + fsrc[0].alias + "']") == -1) {
- fsrc[0].wxleftfns = ls;
- fsrc[0].wxrightfns = rs;
- }
- }
- if (ast.right instanceof yy.Column) {
- var ls = ast.left.toJS('p', query.defaultTableid, query.defcols);
- var rs = ast.right.toJS('p', query.defaultTableid, query.defcols);
- if (ls.indexOf("p['" + fsrc[0].alias + "']") == -1) {
- fsrc[0].wxleftfns = rs;
- fsrc[0].wxrightfns = ls;
- }
- }
- }
- ast.reduced = true; // To do not duplicate wherefn and srcwherefn
- return;
- } else {
- if ((ast.op = 'AND')) {
- optimizeWhereJoin(query, ast.left);
- optimizeWhereJoin(query, ast.right);
- }
- }
-}
-
-/*
-//
-// Select compiler part for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/**
- Compile group of statements
- */
-yy.Select.prototype.compileGroup = function(query) {
-
- if (query.sources.length > 0) {
- var tableid = query.sources[0].alias;
- } else {
- // If SELECT contains group aggregators without source tables
- var tableid = '';
- }
- var defcols = query.defcols;
-
- var allgroup = [[]];
- if (this.group) {
- allgroup = decartes(this.group, query);
- }
-
- // Prepare groups
- //var allgroup = [['a'], ['a','b'], ['a', 'b', 'c']];
-
- // Union all arrays to get a maximum
- var allgroups = [];
- allgroup.forEach(function(a) {
- allgroups = arrayUnion(allgroups, a);
- });
-
- query.allgroups = allgroups;
-
- query.ingroup = [];
-
- // Create negative array
-
- var s = '';
- // s+= query.selectfns;
- allgroup.forEach(function(agroup) {
- // Start of group function
- s += 'var g=this.xgroups[';
-
- // var gcols = this.group.map(function(col){return col.columnid}); // Group fields with r
- // Array with group columns from record
- var rg = agroup.map(function(col2) {
- var columnid = col2.split('\t')[0];
- var coljs = col2.split('\t')[1];
- // Check, if aggregator exists but GROUP BY is not exists
- if (columnid === '') {
- return '1'; // Create fictive groupping column for fictive GROUP BY
- }
- // else return "r['"+columnid+"']";
- query.ingroup.push(columnid);
-
- return coljs;
- });
-
- if (rg.length === 0) {
- rg = ["''"];
- }
-
- s += rg.join('+"`"+');
- s += '];if(!g) {this.groups.push((g=this.xgroups[';
- s += rg.join('+"`"+');
- s += '] = {';
- // s += ']=r';
- s += agroup
- .map(function(col2) {
- var columnid = col2.split('\t')[0];
- var coljs = col2.split('\t')[1];
-
- if (columnid === '') {
- return '';
- }
- return "'" + columnid + "':" + coljs + ',';
- })
- .join('');
-
- var neggroup = arrayDiff(allgroups, agroup);
-
- s += neggroup
- .map(function(col2) {
- var columnid = col2.split('\t')[0];
- // var coljs = col2.split('\t')[1]
- return "'" + columnid + "':null,";
- })
- .join('');
-
- var aft = '',
- aft2 = '';
-
- if (typeof query.groupStar !== 'undefined') {
- aft2 +=
- "for(var f in p['" +
- query.groupStar +
- "']) {g[f]=p['" +
- query.groupStar +
- "'][f];};";
- }
-
- /*
- */
- // s += self.columns.map(function(col){
-
- s += query.selectGroup
- .map(function(col) {
-
- var colexp = col.expression.toJS('p', tableid, defcols);
- var colas = col.nick;
- // if(typeof colas == 'undefined') {
- // if(col instanceof yy.Column) colas = col.columnid;
- // else colas = col.toString();
- // };
- if (col instanceof yy.AggrValue) {
- if (col.distinct) {
- aft +=
- ",g['$$_VALUES_" +
- colas +
- "']={},g['$$_VALUES_" +
- colas +
- "'][" +
- colexp +
- ']=true';
- }
- if (col.aggregatorid === 'SUM') {
- return "'" + colas + "':(" + colexp + ')||0,';
- } else if (
- col.aggregatorid === 'MIN' ||
- col.aggregatorid === 'MAX' ||
- col.aggregatorid === 'FIRST' ||
- col.aggregatorid === 'LAST'
- // || col.aggregatorid == 'AVG'
- // ) { return "'"+col.as+'\':r[\''+col.as+'\'],'; }//f.field.arguments[0].toJS();
- ) {
- return "'" + colas + "':" + colexp + ','; //f.field.arguments[0].toJS();
- } else if (col.aggregatorid === 'ARRAY') {
- return "'" + colas + "':[" + colexp + '],';
- } else if (col.aggregatorid === 'COUNT') {
- if (col.expression.columnid === '*') {
- return "'" + colas + "':1,";
- } else {
- // return "'"+colas+'\':(typeof '+colexp+' != "undefined")?1:0,';
- // } else {
- return "'" + colas + "':(typeof " + colexp + ' != "undefined")?1:0,';
- }
-
- // else if(col.aggregatorid == 'MIN') { return "'"+col.as+'\':r[\''+col.as+'\'],'; }
- // else if(col.aggregatorid == 'MAX') { return "'"+col.as+'\':r[\''+col.as+'\'],'; }
- } else if (col.aggregatorid === 'AVG') {
- query.removeKeys.push('_SUM_' + colas);
- query.removeKeys.push('_COUNT_' + colas);
-
- return (
- '' +
- "'" +
- colas +
- "':" +
- colexp +
- ",'_SUM_" +
- colas +
- "':(" +
- colexp +
- ")||0,'_COUNT_" +
- colas +
- "':(typeof " +
- colexp +
- ' != "undefined")?1:0,'
- );
- } else if (col.aggregatorid === 'AGGR') {
- aft += ",g['" + colas + "']=" + col.expression.toJS('g', -1);
- return '';
- } else if (col.aggregatorid === 'REDUCE') {
- // query.removeKeys.push('_REDUCE_'+colas);
- query.aggrKeys.push(col);
-
- // return "'"+colas+'\':alasql.aggr[\''+col.funcid+'\']('+colexp+',undefined,(acc={}),1),'
- // +'\'__REDUCE__'+colas+'\':acc,';
- return (
- "'" +
- colas +
- "':alasql.aggr['" +
- col.funcid +
- "'](" +
- colexp +
- ',undefined,1),'
- );
- }
- return '';
- }
-
- return '';
- })
- .join('');
-
- s += '}' + aft + ',g));' + aft2 + '} else {';
-
- /*
- // var neggroup = arrayDiff(allgroups,agroup);
-
- // s += neggroup.map(function(columnid){
- // return "g['"+columnid+"']=null;";
- // }).join('');
-*/
-
- // s += self.columns.map(function(col){
- s += query.selectGroup
- .map(function(col) {
- var colas = col.nick;
-
- var colexp = col.expression.toJS('p', tableid, defcols);
-
- if (col instanceof yy.AggrValue) {
- var pre = '',
- post = '';
- if (col.distinct) {
- var pre =
- 'if(typeof ' +
- colexp +
- '!="undefined" && (!g[\'$$_VALUES_' +
- colas +
- "'][" +
- colexp +
- '])) \
- {';
- var post = "g['$$_VALUES_" + colas + "'][" + colexp + ']=true;}';
- }
- if (col.aggregatorid === 'SUM') {
- return pre + "g['" + colas + "']+=(" + colexp + '||0);' + post; //f.field.arguments[0].toJS();
- } else if (col.aggregatorid === 'COUNT') {
-
- if (col.expression.columnid === '*') {
- return pre + "g['" + colas + "']++;" + post;
- } else {
- return (
- pre +
- 'if(typeof ' +
- colexp +
- '!="undefined") g[\'' +
- colas +
- "']++;" +
- post
- );
- }
- } else if (col.aggregatorid === 'ARRAY') {
- return pre + "g['" + colas + "'].push(" + colexp + ');' + post;
- } else if (col.aggregatorid === 'MIN') {
- return (
- pre +
- "g['" +
- colas +
- "']=Math.min(g['" +
- colas +
- "']," +
- colexp +
- ');' +
- post
- );
- } else if (col.aggregatorid === 'MAX') {
- return (
- pre +
- "g['" +
- colas +
- "']=Math.max(g['" +
- colas +
- "']," +
- colexp +
- ');' +
- post
- );
- } else if (col.aggregatorid === 'FIRST') {
- return '';
- } else if (col.aggregatorid === 'LAST') {
- return pre + "g['" + colas + "']=" + colexp + ';' + post;
- } else if (col.aggregatorid === 'AVG') {
- return (
- '' +
- pre +
- "g['_SUM_" +
- colas +
- "']+=(y=" +
- colexp +
- ')||0;' +
- "g['_COUNT_" +
- colas +
- '\']+=(typeof y!="undefined")?1:0;' +
- "g['" +
- colas +
- "']=g['_SUM_" +
- colas +
- "']/g['_COUNT_" +
- colas +
- "'];" +
- post
- );
- // }
- // else if(col.aggregatorid == 'AVG') { srg.push(colas+':0'); }
- } else if (col.aggregatorid === 'AGGR') {
- return (
- '' +
- pre +
- "g['" +
- colas +
- "']=" +
- col.expression.toJS('g', -1) +
- ';' +
- post
- );
- } else if (col.aggregatorid === 'REDUCE') {
- return (
- '' +
- pre +
- "g['" +
- colas +
- "']=alasql.aggr." +
- col.funcid +
- '(' +
- colexp +
- ",g['" +
- colas +
- "'],2);" +
- post
- );
- }
-
- return '';
- }
-
- return '';
- })
- .join('');
-
- // s += selectFields.map(function(f){
-
- // if(f.constructor.name == 'LiteralValue') return '';
- // if (f.field instanceof SQLParser.nodes.FunctionValue
- // && (f.field.name.toUpperCase() == 'SUM' || f.field.name.toUpperCase() == 'COUNT')) {
- // return 'group.'+f.name.value+'=+(+group.'+f.name.value+'||0)+'+f.field.arguments[0].toJS('rec','')+';'; //f.field.arguments[0].toJS();
- // return 'group.'+f.name.value+'+='+f.field.arguments[0].toJS('rec','')+';'; //f.field.arguments[0].toJS();
- // return 'group.'+f.name.value+'+=rec.'+f.name.value+';'; //f.field.arguments[0].toJS();
- // };
- // return '';
- // }).join('');
-
- // s += ' group.amt += rec.emplid;';
- // s += 'group.count++;';
- s += '}';
- });
-
- return new Function('p,params,alasql', 'var y;' + s);
-};
-
-/*
-//
-// Select compiler part for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// yy.Select.prototype.compileSources = function(query) {
-
-// };
-
-function compileSelectStar(query, alias, joinstar) {
-
- var sp = '',
- ss = [];
- // if(!alias) {
- // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
- // } else {
-
- // TODO move this out of this function
- query.ixsources = {};
- query.sources.forEach(function(source) {
- query.ixsources[source.alias] = source;
- });
-
- // Fixed
- var columns;
- if (query.ixsources[alias]) {
- var columns = query.ixsources[alias].columns;
- }
-
- // if(columns.length == 0 && query.aliases[alias].tableid) {
- // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
- // };
-
- // Check if this is a Table or other
- if (joinstar && alasql.options.joinstar == 'json') {
- sp += "r['" + alias + "']={};";
- }
-
- if (columns && columns.length > 0) {
- columns.forEach(function(tcol) {
- if (joinstar && alasql.options.joinstar == 'underscore') {
- ss.push(
- "'" +
- alias +
- '_' +
- tcol.columnid +
- "':p['" +
- alias +
- "']['" +
- tcol.columnid +
- "']"
- );
- } else if (joinstar && alasql.options.joinstar == 'json') {
- // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
- sp +=
- "r['" +
- alias +
- "']['" +
- tcol.columnid +
- "']=p['" +
- alias +
- "']['" +
- tcol.columnid +
- "'];";
- } else {
- ss.push("'" + tcol.columnid + "':p['" + alias + "']['" + tcol.columnid + "']");
- }
-
- query.selectColumns[escapeq(tcol.columnid)] = true;
-
- var coldef = {
- columnid: tcol.columnid,
- dbtypeid: tcol.dbtypeid,
- dbsize: tcol.dbsize,
- dbprecision: tcol.dbprecision,
- dbenum: tcol.dbenum,
- };
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- });
-
- } else {
-
- // if column not exist, then copy all
- sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
-
- query.dirtyColumns = true;
- }
- // }
-
- return {s: ss.join(','), sp: sp};
-}
-
-yy.Select.prototype.compileSelect1 = function(query, params) {
- var self = this;
- query.columns = [];
- query.xcolumns = {};
- query.selectColumns = {};
- query.dirtyColumns = false;
- var s = 'var r={';
- var sp = '';
- var ss = [];
-
- this.columns.forEach(function(col) {
-
- if (col instanceof yy.Column) {
- if (col.columnid === '*') {
- if (col.func) {
- sp +=
- "r=params['" +
- col.param +
- "'](p['" +
- query.sources[0].alias +
- "'],p,params,alasql);";
- } else if (col.tableid) {
- //Copy all
- var ret = compileSelectStar(query, col.tableid, false);
- if (ret.s) {
- ss = ss.concat(ret.s);
- }
- sp += ret.sp;
- } else {
-
- for (var alias in query.aliases) {
- var ret = compileSelectStar(query, alias, true); //query.aliases[alias].tableid);
- if (ret.s) {
- ss = ss.concat(ret.s);
- }
- sp += ret.sp;
- }
- // TODO Remove these lines
- // In case of no information
- // sp += 'for(var k1 in p){var w=p[k1];'+
- // 'for(k2 in w) {r[k2]=w[k2]}}'
- }
- } else {
- // If field, otherwise - expression
- var tbid = col.tableid;
-
- var dbid =
- col.databaseid || query.sources[0].databaseid || query.database.databaseid;
- if (!tbid) tbid = query.defcols[col.columnid];
- if (!tbid) tbid = query.defaultTableid;
- if (col.columnid !== '_') {
- if (
- false &&
- tbid &&
- !query.defcols['.'][col.tableid] &&
- !query.defcols[col.columnid]
- ) {
- ss.push(
- "'" +
- escapeq(col.as || col.columnid) +
- "':p['" +
- query.defaultTableid +
- "']['" +
- col.tableid +
- "']['" +
- col.columnid +
- "']"
- );
- } else {
- // workaround for multisheet xlsx export with custom COLUMNS
- var isMultisheetParam =
- params &&
- params.length > 1 &&
- Array.isArray(params[0]) &&
- params[0].length >= 1 &&
- params[0][0].hasOwnProperty('sheetid');
- if (isMultisheetParam) {
- sp =
- 'var r={};var w=p["' +
- tbid +
- '"];' +
- 'var cols=[' +
- self.columns
- .map(function(col) {
- return "'" + col.columnid + "'";
- })
- .join(',') +
- '];var colas=[' +
- self.columns
- .map(function(col) {
- return "'" + (col.as || col.columnid) + "'";
- })
- .join(',') +
- '];' +
- "for (var i=0;i 0) {
-
- var tcol = xcolumns[col.columnid];
-
- if (undefined === tcol) {
- throw new Error('Column does not exist: ' + col.columnid);
- }
-
- var coldef = {
- columnid: col.as || col.columnid,
- dbtypeid: tcol.dbtypeid,
- dbsize: tcol.dbsize,
- dbpecision: tcol.dbprecision,
- dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- } else {
- var coldef = {
- columnid: col.as || col.columnid,
- // dbtypeid:tcol.dbtypeid,
- // dbsize:tcol.dbsize,
- // dbpecision:tcol.dbprecision,
- // dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
-
- query.dirtyColumns = true;
- }
- } else {
- var coldef = {
- columnid: col.as || col.columnid,
- // dbtypeid:tcol.dbtypeid,
- // dbsize:tcol.dbsize,
- // dbpecision:tcol.dbprecision,
- // dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- // This is a subquery?
- // throw new Error('There is now such table \''+col.tableid+'\'');
- }
- }
- } else if (col instanceof yy.AggrValue) {
- if (!self.group) {
- // self.group=[new yy.Column({columnid:'q',as:'q' })];
- self.group = [''];
- }
- if (!col.as) {
- col.as = escapeq(col.toString());
- }
-
- if (
- col.aggregatorid === 'SUM' ||
- col.aggregatorid === 'MAX' ||
- col.aggregatorid === 'MIN' ||
- col.aggregatorid === 'FIRST' ||
- col.aggregatorid === 'LAST' ||
- col.aggregatorid === 'AVG' ||
- col.aggregatorid === 'ARRAY' ||
- col.aggregatorid === 'REDUCE'
- ) {
- ss.push(
- "'" +
- escapeq(col.as) +
- "':" +
- n2u(col.expression.toJS('p', query.defaultTableid, query.defcols))
- );
- } else if (col.aggregatorid === 'COUNT') {
- ss.push("'" + escapeq(col.as) + "':1");
- // Nothing
- }
- // todo: confirm that no default action must be implemented
-
- // query.selectColumns[col.aggregatorid+'('+escapeq(col.expression.toString())+')'] = thtd;
-
- var coldef = {
- columnid: col.as || col.columnid || col.toString(),
- // dbtypeid:tcol.dbtypeid,
- // dbsize:tcol.dbsize,
- // dbpecision:tcol.dbprecision,
- // dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
-
- // else if (col.aggregatorid == 'MAX') {
- // ss.push((col.as || col.columnid)+':'+col.toJS("p.",query.defaultTableid))
- // } else if (col.aggregatorid == 'MIN') {
- // ss.push((col.as || col.columnid)+':'+col.toJS("p.",query.defaultTableid))
- // }
- } else {
-
- ss.push(
- "'" +
- escapeq(col.as || col.columnid || col.toString()) +
- "':" +
- n2u(col.toJS('p', query.defaultTableid, query.defcols))
- );
- // ss.push('\''+escapeq(col.toString())+'\':'+col.toJS("p",query.defaultTableid));
- //if(col instanceof yy.Expression) {
- query.selectColumns[escapeq(col.as || col.columnid || col.toString())] = true;
-
- var coldef = {
- columnid: col.as || col.columnid || col.toString(),
- // dbtypeid:tcol.dbtypeid,
- // dbsize:tcol.dbsize,
- // dbpecision:tcol.dbprecision,
- // dbenum: tcol.dbenum,
- };
-
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- }
- });
- s += ss.join(',') + '};' + sp;
- return s;
-
-};
-yy.Select.prototype.compileSelect2 = function(query) {
- var s = query.selectfns;
- if (this.orderColumns && this.orderColumns.length > 0) {
- this.orderColumns.forEach(function(v, idx) {
- var key = '$$$' + idx;
- if (v instanceof yy.Column && query.xcolumns[v.columnid]) {
- s += "r['" + key + "']=r['" + v.columnid + "'];";
- } else {
- s += "r['" + key + "']=" + v.toJS('p', query.defaultTableid, query.defcols) + ';';
- }
- query.removeKeys.push(key);
- });
- }
-
- return new Function('p,params,alasql', 'var y;' + s + 'return r');
-};
-
-yy.Select.prototype.compileSelectGroup0 = function(query) {
- var self = this;
- self.columns.forEach(function(col, idx) {
- if (!(col instanceof yy.Column && col.columnid === '*')) {
- var colas;
- // = col.as;
- if (col instanceof yy.Column) {
- colas = escapeq(col.columnid);
- } else {
- colas = escapeq(col.toString(true));
-
- }
- for (var i = 0; i < idx; i++) {
- if (colas === self.columns[i].nick) {
- colas = self.columns[i].nick + ':' + idx;
- break;
- }
- }
- // }
- col.nick = colas;
- if (
- col.funcid &&
- (col.funcid.toUpperCase() === 'ROWNUM' || col.funcid.toUpperCase() === 'ROW_NUMBER')
- ) {
- query.rownums.push(col.as);
- }
-
- // }
- } else {
- query.groupStar = col.tableid || 'default';
- }
- });
-
- this.columns.forEach(function(col) {
- if (col.findAggregator) {
- col.findAggregator(query);
- }
- });
-
- if (this.having) {
- if (this.having.findAggregator) {
- this.having.findAggregator(query);
- }
- }
-};
-
-yy.Select.prototype.compileSelectGroup1 = function(query) {
- var self = this;
- var s = 'var r = {};';
-
- self.columns.forEach(function(col) {
-
- if (col instanceof yy.Column && col.columnid === '*') {
- // s += 'for(var k in g){r[k]=g[k]};';
- // s += 'for(var k in this.query.groupColumns){r[k]=g[this.query.groupColumns[k]]};';
-
- s += 'for(var k in g) {r[k]=g[k]};';
- return '';
-
- } else {
- // var colas = col.as;
- var colas = col.as;
- if (colas === undefined) {
- if (col instanceof yy.Column) {
- colas = escapeq(col.columnid);
- } else {
- colas = col.nick;
- }
- }
- query.groupColumns[colas] = col.nick;
-
- // if(col.as) {
- s += "r['" + colas + "']=";
- // // } else {
- // // s += 'r[\''+escapeq()+'\']=';
- // // };
- // // s += ';';
-
- s += n2u(col.toJS('g', '')) + ';';
-
- for (var i = 0; i < query.removeKeys.length; i++) {
- // THis part should be intellectual
- if (query.removeKeys[i] === colas) {
- query.removeKeys.splice(i, 1);
- break;
- }
- }
- }
- });
- // return new Function('g,params,alasql',s+'return r');
- return s;
-};
-
-yy.Select.prototype.compileSelectGroup2 = function(query) {
- var self = this;
- var s = query.selectgfns;
- self.columns.forEach(function(col) {
-
- if (query.ingroup.indexOf(col.nick) > -1) {
- s += "r['" + (col.as || col.nick) + "']=g['" + col.nick + "'];";
- }
- });
-
- if (this.orderColumns && this.orderColumns.length > 0) {
- this.orderColumns.forEach(function(v, idx) {
-
- var key = '$$$' + idx;
-
- if (v instanceof yy.Column && query.groupColumns[v.columnid]) {
- s += "r['" + key + "']=r['" + v.columnid + "'];";
- } else {
- s += "r['" + key + "']=" + v.toJS('g', '') + ';';
- }
- query.removeKeys.push(key);
- });
- }
-
- return new Function('g,params,alasql', 'var y;' + s + 'return r');
-};
-
-// SELECY * REMOVE [COLUMNS] col-list, LIKE ''
-yy.Select.prototype.compileRemoveColumns = function(query) {
- var self = this;
- if (typeof this.removecolumns !== 'undefined') {
- query.removeKeys = query.removeKeys.concat(
- this.removecolumns
- .filter(function(column) {
- return typeof column.like === 'undefined';
- })
- .map(function(column) {
- return column.columnid;
- })
- );
-
- query.removeLikeKeys = this.removecolumns
- .filter(function(column) {
- return typeof column.like !== 'undefined';
- })
- .map(function(column) {
- // return new RegExp((column.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g');
- return column.like.value;
- });
- }
-};
-
-/* global yy */
-
-yy.Select.prototype.compileHaving = function(query) {
- if (this.having) {
- var s = this.having.toJS('g', -1);
- query.havingfns = s;
-
- return new Function('g,params,alasql', 'var y;return ' + s);
- }
-
- return function() {
- return true;
- };
-};
-
-yy.Select.prototype.compileOrder = function(query) {
- var self = this;
- self.orderColumns = [];
- if (this.order) {
-
- if (
- this.order &&
- this.order.length == 1 &&
- this.order[0].expression &&
- typeof this.order[0].expression == 'function'
- ) {
-
- var func = this.order[0].expression;
-
- return function(a, b) {
- var ra = func(a),
- rb = func(b);
- if (ra > rb) return 1;
- if (ra == rb) return 0;
- return -1;
- };
- }
-
- var s = '';
- var sk = '';
- this.order.forEach(function(ord, idx) {
-
- if (ord.expression instanceof yy.NumValue) {
- var v = self.columns[ord.expression.value - 1];
- } else {
- var v = ord.expression;
- }
- self.orderColumns.push(v);
-
- var key = '$$$' + idx;
-
- // Date conversion
- var dg = '';
- //if(alasql.options.valueof)
- if (ord.expression instanceof yy.Column) {
- var columnid = ord.expression.columnid;
- if (query.xcolumns[columnid]) {
- var dbtypeid = query.xcolumns[columnid].dbtypeid;
- if (dbtypeid == 'DATE' || dbtypeid == 'DATETIME' || dbtypeid == 'DATETIME2')
- dg = '.valueOf()';
- // TODO Add other types mapping
- } else {
- if (alasql.options.valueof) dg = '.valueOf()'; // TODO Check
- }
- // dg = '.valueOf()';
- }
- // COLLATE NOCASE
- if (ord.nocase) dg += '.toUpperCase()';
- s +=
- "if((a['" +
- key +
- "']||'')" +
- dg +
- (ord.direction == 'ASC' ? '>' : '<') +
- "(b['" +
- key +
- "']||'')" +
- dg +
- ')return 1;';
- s += "if((a['" + key + "']||'')" + dg + "==(b['" + key + "']||'')" + dg + '){';
-
- /*
-if(false) {
-
- if(ord.expression instanceof yy.NumValue) {
- ord.expression = self.columns[ord.expression.value-1];
-
- ord.expression = new yy.Column({columnid:ord.expression.nick});
- };
-
- if(ord.expression instanceof yy.Column) {
- var columnid = ord.expression.columnid;
- if(query.xcolumns[columnid]) {
- var dbtypeid = query.xcolumns[columnid].dbtypeid;
- if( dbtypeid == 'DATE' || dbtypeid == 'DATETIME' || dbtypeid == 'DATETIME2') dg = '.valueOf()';
- // TODO Add other types mapping
- } else {
- if(alasql.options.valueof) dg = '.valueOf()'; // TODO Check
- }
- // COLLATE NOCASE
- if(ord.nocase) dg += '.toUpperCase()';
-
- s += 'if((a[\''+columnid+"']||'')"+dg+(ord.direction == 'ASC'?'>':'<')+'(b[\''+columnid+"']||'')"+dg+')return 1;';
- s += 'if((a[\''+columnid+"']||'')"+dg+'==(b[\''+columnid+"']||'')"+dg+'){';
-
- } else {
- dg = '.valueOf()';
- // COLLATE NOCASE
- if(ord.nocase) dg += '.toUpperCase()';
- s += 'if(('+ord.toJS('a','')+"||'')"+dg+(ord.direction == 'ASC'?'>(':'<(')+ord.toJS('b','')+"||'')"+dg+')return 1;';
- s += 'if(('+ord.toJS('a','')+"||'')"+dg+'==('+ord.toJS('b','')+"||'')"+dg+'){';
- }
-
- // TODO Add date comparision
-
-}
-*/
- sk += '}';
- });
- s += 'return 0;';
- s += sk + 'return -1';
- query.orderfns = s;
-
- return new Function('a,b', 'var y;' + s);
- }
-};
-
-// Pivot functions
-/**
- Compile Pivot functions
- @param {object} query Source query
- @return {function} Pivoting functions
-*/
-yy.Select.prototype.compilePivot = function(query) {
- var self = this;
- /** @type {string} Main pivoting column */
-
- var columnid = self.pivot.columnid;
- var exprcolid = self.pivot.expr.expression.columnid;
- var aggr = self.pivot.expr.aggregatorid;
- var inlist = self.pivot.inlist;
-
- if (inlist) {
- inlist = inlist.map(function(l) {
- return l.expr.columnid;
- });
- }
-
- // Function for PIVOT post production
- return function() {
- var query = this;
- var cols = query.columns
- .filter(function(col) {
- return col.columnid != columnid && col.columnid != exprcolid;
- })
- .map(function(col) {
- return col.columnid;
- });
-
- var newcols = [];
- var gnewcols = {};
- var gr = {};
- var ga = {};
- var data = [];
- query.data.forEach(function(d) {
- if (!inlist || inlist.indexOf(d[columnid]) > -1) {
- var gx = cols
- .map(function(colid) {
- return d[colid];
- })
- .join('`');
- var g = gr[gx];
- if (!g) {
- g = {};
- gr[gx] = g;
- data.push(g);
- cols.forEach(function(colid) {
- g[colid] = d[colid];
- });
- }
-
- if (!ga[gx]) {
- ga[gx] = {};
- }
-
- if (ga[gx][d[columnid]]) {
- ga[gx][d[columnid]]++;
- } else {
- ga[gx][d[columnid]] = 1;
- }
-
- if (!gnewcols[d[columnid]]) {
- gnewcols[d[columnid]] = true;
- newcols.push(d[columnid]);
- }
-
- if (aggr == 'SUM' || aggr == 'AVG') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = 0;
- g[d[columnid]] += d[exprcolid];
- } else if (aggr == 'COUNT') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = 0;
- g[d[columnid]]++;
- } else if (aggr == 'MIN') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = Infinity;
- if (d[exprcolid] < g[d[columnid]]) g[d[columnid]] = d[exprcolid];
- } else if (aggr == 'MAX') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = -Infinity;
- if (d[exprcolid] > g[d[columnid]]) g[d[columnid]] = d[exprcolid];
- } else if (aggr == 'FIRST') {
- if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = d[exprcolid];
- } else if (aggr == 'LAST') {
- g[d[columnid]] = d[exprcolid];
- } else if (alasql.aggr[aggr]) {
- // Custom aggregator
- alasql.aggr[aggr](g[d[columnid]], d[exprcolid]);
- } else {
- throw new Error('Wrong aggregator in PIVOT clause');
- }
- }
- });
-
- if (aggr == 'AVG') {
- for (var gx in gr) {
- var d = gr[gx];
- for (var colid in d) {
- if (cols.indexOf(colid) == -1 && colid != exprcolid) {
- d[colid] = d[colid] / ga[gx][colid];
- }
- }
- }
- }
-
- // columns
- query.data = data;
-
- if (inlist) newcols = inlist;
-
- var ncol = query.columns.filter(function(col) {
- return col.columnid == exprcolid;
- })[0];
- query.columns = query.columns.filter(function(col) {
- return !(col.columnid == columnid || col.columnid == exprcolid);
- });
- newcols.forEach(function(colid) {
- var nc = cloneDeep(ncol);
- nc.columnid = colid;
- query.columns.push(nc);
- });
- };
-};
-
-// var columnid = this.pivot.columnid;
-
-// return function(data){
-
-// if(false) {
-
-// }
-
-// if(false) {
-
-// }
-// };
-
-/**
- Compile UNPIVOT clause
- @param {object} query Query object
- @return {function} Function for unpivoting
-*/
-yy.Select.prototype.compileUnpivot = function(query) {
- var self = this;
- var tocolumnid = self.unpivot.tocolumnid;
- var forcolumnid = self.unpivot.forcolumnid;
- var inlist = self.unpivot.inlist.map(function(l) {
- return l.columnid;
- });
-
- return function() {
- var data = [];
-
- var xcols = query.columns
- .map(function(col) {
- return col.columnid;
- })
- .filter(function(colid) {
- return inlist.indexOf(colid) == -1 && colid != forcolumnid && colid != tocolumnid;
- });
-
- query.data.forEach(function(d) {
- inlist.forEach(function(colid) {
- var nd = {};
- xcols.forEach(function(xcolid) {
- nd[xcolid] = d[xcolid];
- });
- nd[forcolumnid] = colid;
- nd[tocolumnid] = d[colid];
- data.push(nd);
- });
- });
-
- query.data = data;
-
- // });
- };
-};
-
-/*
-//
-// ROLLUP(), CUBE(), GROUPING SETS() for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/**
- Calculate ROLLUP() combination
- */
-
-var rollup = function(a, query) {
- var rr = [];
- var mask = 0;
- var glen = a.length;
- for (var g = 0; g < glen + 1; g++) {
- var ss = [];
- for (var i = 0; i < glen; i++) {
- if (a[i] instanceof yy.Column) {
- a[i].nick = escapeq(a[i].columnid);
-
- query.groupColumns[escapeq(a[i].columnid)] = a[i].nick;
- var aaa = a[i].nick + '\t' + a[i].toJS('p', query.sources[0].alias, query.defcols);
- } else {
- query.groupColumns[escapeq(a[i].toString())] = escapeq(a[i].toString());
- var aaa =
- escapeq(a[i].toString()) +
- '\t' +
- a[i].toJS('p', query.sources[0].alias, query.defcols);
- }
-
- if (mask & (1 << i)) ss.push(aaa);
- }
- rr.push(ss);
- mask = (mask << 1) + 1;
- }
- return rr;
-};
-
-/**
- Calculate CUBE()
- */
-var cube = function(a, query) {
- var rr = [];
- var glen = a.length;
- var glenCube = 1 << glen;
- for (var g = 0; g < glenCube; g++) {
- var ss = [];
- for (var i = 0; i < glen; i++) {
- if (g & (1 << i))
- //ss.push(a[i]);
- //ss = cartes(ss,decartes(a[i]));
-
- // var aaa = a[i].toString()+'\t'
- // +a[i].toJS('p',query.sources[0].alias,query.defcols);
-
- ss = ss.concat(decartes(a[i], query));
- //
- }
- rr.push(ss);
- }
- return rr;
-};
-
-/**
- GROUPING SETS()
- */
-var groupingsets = function(a, query) {
- return a.reduce(function(acc, d) {
- acc = acc.concat(decartes(d, query));
- return acc;
- }, []);
-};
-
-/**
- Cartesian production
- */
-var cartes = function(a1, a2) {
- var rrr = [];
- for (var i1 = 0; i1 < a1.length; i1++) {
- for (var i2 = 0; i2 < a2.length; i2++) {
- rrr.push(a1[i1].concat(a2[i2]));
- }
- }
- return rrr;
-};
-
-/**
- Prepare groups function
- */
-function decartes(gv, query) {
-
- if (Array.isArray(gv)) {
- var res = [[]];
- for (var t = 0; t < gv.length; t++) {
- if (gv[t] instanceof yy.Column) {
-
- gv[t].nick = escapeq(gv[t].columnid);
- query.groupColumns[gv[t].nick] = gv[t].nick;
- res = res.map(function(r) {
- return r.concat(
- gv[t].nick + '\t' + gv[t].toJS('p', query.sources[0].alias, query.defcols)
- );
- });
- // res = res.map(function(r){return r.concat(gv[t].columnid)});
- } else if (gv[t] instanceof yy.FuncValue) {
- query.groupColumns[escapeq(gv[t].toString())] = escapeq(gv[t].toString());
- res = res.map(function(r) {
- return r.concat(
- escapeq(gv[t].toString()) +
- '\t' +
- gv[t].toJS('p', query.sources[0].alias, query.defcols)
- );
- });
- // to be defined
- } else if (gv[t] instanceof yy.GroupExpression) {
- if (gv[t].type == 'ROLLUP') res = cartes(res, rollup(gv[t].group, query));
- else if (gv[t].type == 'CUBE') res = cartes(res, cube(gv[t].group, query));
- else if (gv[t].type == 'GROUPING SETS')
- res = cartes(res, groupingsets(gv[t].group, query));
- else throw new Error('Unknown grouping function');
- } else if (gv[t] === '') {
-
- res = [['1\t1']];
- } else {
- // if(gv[t])
-
- res = res.map(function(r) {
- query.groupColumns[escapeq(gv[t].toString())] = escapeq(gv[t].toString());
- return r.concat(
- escapeq(gv[t].toString()) +
- '\t' +
- gv[t].toJS('p', query.sources[0].alias, query.defcols)
- );
- });
- // res = res.concat(gv[t]);
- }
-
- }
- return res;
- } else if (gv instanceof yy.FuncValue) {
-
- query.groupColumns[escapeq(gv.toString())] = escapeq(gv.toString());
- return [gv.toString() + '\t' + gv.toJS('p', query.sources[0].alias, query.defcols)];
- } else if (gv instanceof yy.Column) {
- gv.nick = escapeq(gv.columnid);
- query.groupColumns[gv.nick] = gv.nick;
- return [gv.nick + '\t' + gv.toJS('p', query.sources[0].alias, query.defcols)]; // Is this ever happened?
- // } else if(gv instanceof yy.Expression) {
- // return [gv.columnid]; // Is this ever happened?
- } else {
- query.groupColumns[escapeq(gv.toString())] = escapeq(gv.toString());
- return [
- escapeq(gv.toString()) + '\t' + gv.toJS('p', query.sources[0].alias, query.defcols),
- ];
- // throw new Error('Single argument in the group without array');
- }
-
-}
-
-/*
-//
-// Select run-time part for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Select.prototype.compileDefCols = function(query, databaseid) {
-
- var defcols = {'.': {}};
- if (this.from) {
- this.from.forEach(function(fr) {
- defcols['.'][fr.as || fr.tableid] = true;
- if (fr instanceof yy.Table) {
- var alias = fr.as || fr.tableid;
-
- var table = alasql.databases[fr.databaseid || databaseid].tables[fr.tableid];
-
- if (undefined === table) {
- throw new Error('Table does not exist: ' + fr.tableid);
- }
-
- if (table.columns) {
- table.columns.forEach(function(col) {
- if (defcols[col.columnid]) {
- defcols[col.columnid] = '-'; // Ambigous
- } else {
- defcols[col.columnid] = alias;
- }
- });
- }
- } else if (fr instanceof yy.Select) {
- } else if (fr instanceof yy.Search) {
- } else if (fr instanceof yy.ParamValue) {
- } else if (fr instanceof yy.VarValue) {
- } else if (fr instanceof yy.FuncValue) {
- } else if (fr instanceof yy.FromData) {
- } else if (fr instanceof yy.Json) {
- } else if (fr.inserted) {
- } else {
-
- throw new Error('Unknown type of FROM clause');
- }
- });
- }
-
- if (this.joins) {
- this.joins.forEach(function(jn) {
- defcols['.'][jn.as || jn.table.tableid] = true;
-
- if (jn.table) {
- var alias = jn.table.tableid;
- if (jn.as) alias = jn.as;
- var alias = jn.as || jn.table.tableid;
- var table =
- alasql.databases[jn.table.databaseid || databaseid].tables[jn.table.tableid];
-
- if (table.columns) {
- table.columns.forEach(function(col) {
- if (defcols[col.columnid]) {
- defcols[col.columnid] = '-'; // Ambigous
- } else {
- defcols[col.columnid] = alias;
- }
- });
- }
- } else if (jn.select) {
- } else if (jn.param) {
- } else if (jn.func) {
- } else {
- throw new Error('Unknown type of FROM clause');
- }
- });
- }
- // for(var k in defcols) {
- // if(defcols[k] == '-') defcols[k] = undefined;
- // }
-
- return defcols;
-};
-
-/*
-//
-// UNION for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// SELECT UNION statement
-
-yy.Union = function(params) {
- return yy.extend(this, params);
-};
-yy.Union.prototype.toString = function() {
- return 'UNION';
-};
-
-yy.Union.prototype.compile = function(tableid) {
- return null;
-};
-
-/*
-//
-// CROSS AND OUTER APPLY for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Apply = function(params) {
- return yy.extend(this, params);
-};
-
-yy.Apply.prototype.toString = function() {
- var s = this.applymode + ' APPLY (' + this.select.toString() + ')';
-
- if (this.as) s += ' AS ' + this.as;
-
- return s;
-};
-
-/*
-//
-// CROSS AND OUTER APPLY for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Over = function(params) {
- return yy.extend(this, params);
-};
-yy.Over.prototype.toString = function() {
- var s = 'OVER (';
- if (this.partition) {
- s += 'PARTITION BY ' + this.partition.toString();
- if (this.order) s += ' ';
- }
- if (this.order) {
- s += 'ORDER BY ' + this.order.toString();
- }
- s += ')';
- return s;
-};
-
-/*
-//
-// Expressions for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/**
- Expression statement ( = 2*2; )
- @class
- @param {object} params Initial parameters
-*/
-yy.ExpressionStatement = function(params) {
- return yy.extend(this, params);
-};
-
-/**
- Convert AST to string
- @this ExpressionStatement
- @return {string}
-*/
-yy.ExpressionStatement.prototype.toString = function() {
- return this.expression.toString();
-};
-/**
- Execute statement
- @param {string} databaseid Database identificatro
- @param {object} params Statement parameters
- @param {statement-callback} cb Callback
- @return {object} Result value
-*/
-yy.ExpressionStatement.prototype.execute = function(databaseid, params, cb) {
- if (this.expression) {
-
- alasql.precompile(this, databaseid, params); // Precompile queries
- var exprfn = new Function(
- 'params,alasql,p',
- 'var y;return ' + this.expression.toJS('({})', '', null)
- ).bind(this);
- var res = exprfn(params, alasql);
- if (cb) {
- res = cb(res);
- }
- return res;
- }
-};
-
-/**
- Expression class
- @class
- @param {object} params Initial parameters
-*/
-
-yy.Expression = function(params) {
- return yy.extend(this, params);
-};
-
-/**
- Convert AST to string
- @this ExpressionStatement
- @return {string}
-*/
-yy.Expression.prototype.toString = function(dontas) {
- var s = this.expression.toString(dontas);
- if (this.order) {
- s += ' ' + this.order.toString();
- }
- if (this.nocase) {
- s += ' COLLATE NOCASE';
- }
- if (this.direction) {
- s += ' ' + this.direction;
- }
- return s;
-};
-
-/**
- Find aggregator in AST subtree
- @this ExpressionStatement
- @param {object} query Query object
-*/
-yy.Expression.prototype.findAggregator = function(query) {
- if (this.expression.findAggregator) {
- this.expression.findAggregator(query);
- }
-};
-
-/**
- Convert AST to JavaScript expression
- @this ExpressionStatement
- @param {string} context Context string, e.g. 'p','g', or 'x'
- @param {string} tableid Default table name
- @param {object} defcols Default columns dictionary
- @return {string} JavaScript expression
-*/
-
-yy.Expression.prototype.toJS = function(context, tableid, defcols) {
-
- if (this.expression.reduced) {
- return 'true';
- }
- return this.expression.toJS(context, tableid, defcols);
-};
-
-/**
- Compile AST to JavaScript expression
- @this ExpressionStatement
- @param {string} context Context string, e.g. 'p','g', or 'x'
- @param {string} tableid Default table name
- @param {object} defcols Default columns dictionary
- @return {string} JavaScript expression
-*/
-
-yy.Expression.prototype.compile = function(context, tableid, defcols) {
-
- if (this.reduced) {
- return returnTrue();
- }
- return new Function('p', 'var y;return ' + this.toJS(context, tableid, defcols));
-};
-
-/**
- JavaScript class
- @class
-*/
-yy.JavaScript = function(params) {
- return yy.extend(this, params);
-};
-yy.JavaScript.prototype.toString = function() {
- var s = '``' + this.value + '``';
- return s;
-};
-
-yy.JavaScript.prototype.toJS = function(/* context, tableid, defcols*/) {
-
- return '(' + this.value + ')';
-};
-yy.JavaScript.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
- var expr = new Function('params,alasql,p', this.value);
- expr(params, alasql);
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-/**
- Literal class
- @class
- @example
- MyVar, [My vairable], `MySQL variable`
-*/
-
-yy.Literal = function(params) {
- return yy.extend(this, params);
-};
-yy.Literal.prototype.toString = function(dontas) {
- var s = this.value;
- if (this.value1) {
- s = this.value1 + '.' + s;
- }
- if (this.alias && !dontas) s += ' AS ' + this.alias;
- // else s = tableid+'.'+s;
- return s;
-};
-
-/**
- Join class
- @class
-*/
-
-yy.Join = function(params) {
- return yy.extend(this, params);
-};
-yy.Join.prototype.toString = function() {
- var s = ' ';
- if (this.joinmode) {
- s += this.joinmode + ' ';
- }
- s += 'JOIN ' + this.table.toString();
- return s;
-};
-
-// }
-
-/**
- Table class
- @class
-*/
-
-yy.Table = function(params) {
- return yy.extend(this, params);
-};
-yy.Table.prototype.toString = function() {
- var s = this.tableid;
- // if(this.joinmode)
- if (this.databaseid) {
- s = this.databaseid + '.' + s;
- }
- return s;
-};
-
-/**
- View class
- @class
-*/
-
-yy.View = function(params) {
- return yy.extend(this, params);
-};
-yy.View.prototype.toString = function() {
- var s = this.viewid;
- // if(this.joinmode)
- if (this.databaseid) {
- s = this.databaseid + '.' + s;
- }
- return s;
-};
-
-/**
- Binary operation class
- @class
-*/
-yy.Op = function(params) {
- return yy.extend(this, params);
-};
-yy.Op.prototype.toString = function() {
- if (this.op === 'IN' || this.op === 'NOT IN') {
- return this.left.toString() + ' ' + this.op + ' (' + this.right.toString() + ')';
- }
- if (this.allsome) {
- return (
- this.left.toString() +
- ' ' +
- this.op +
- ' ' +
- this.allsome +
- ' (' +
- this.right.toString() +
- ')'
- );
- }
- if (this.op === '->' || this.op === '!') {
- var s = this.left.toString() + this.op;
-
- if (typeof this.right !== 'string' && typeof this.right !== 'number') {
- s += '(';
- }
-
- s += this.right.toString();
-
- if (typeof this.right !== 'string' && typeof this.right !== 'number') {
- s += ')';
- }
-
- return s;
- }
- return (
- this.left.toString() +
- ' ' +
- this.op +
- ' ' +
- (this.allsome ? this.allsome + ' ' : '') +
- this.right.toString()
- );
-};
-
-yy.Op.prototype.findAggregator = function(query) {
-
- if (this.left && this.left.findAggregator) {
- this.left.findAggregator(query);
- }
- // Do not go in > ALL
- if (this.right && this.right.findAggregator && !this.allsome) {
- this.right.findAggregator(query);
- }
-};
-
-yy.Op.prototype.toType = function(tableid) {
- if (['-', '*', '/', '%', '^'].indexOf(this.op) > -1) {
- return 'number';
- }
- if (['||'].indexOf(this.op) > -1) {
- return 'string';
- }
- if (this.op === '+') {
- if (this.left.toType(tableid) === 'string' || this.right.toType(tableid) === 'string') {
- return 'string';
- }
- if (this.left.toType(tableid) === 'number' || this.right.toType(tableid) === 'number') {
- return 'number';
- }
- }
-
- if (
- [
- 'AND',
- 'OR',
- 'NOT',
- '=',
- '==',
- '===',
- '!=',
- '!==',
- '!===',
- '>',
- '>=',
- '<',
- '<=',
- 'IN',
- 'NOT IN',
- 'LIKE',
- 'NOT LIKE',
- 'REGEXP',
- 'GLOB',
- ].indexOf(this.op) > -1
- ) {
- return 'boolean';
- }
-
- if (
- this.op === 'BETWEEN' ||
- this.op === 'NOT BETWEEN' ||
- this.op === 'IS NULL' ||
- this.op === 'IS NOT NULL'
- ) {
- return 'boolean';
- }
-
- if (this.allsome) {
- return 'boolean';
- }
-
- if (!this.op) {
- return this.left.toType();
- }
-
- return 'unknown';
-};
-
-yy.Op.prototype.toJS = function(context, tableid, defcols) {
-
- var s;
- var refs = [];
- var op = this.op;
- var _this = this;
- //var leftJS = function(){return _this.left.toJS(context,tableid, defcols)};
- //var rightJS = function(){return _this.right.toJS(context,tableid, defcols)};
- var accessedLeft = false,
- accessedRight = false;
- var ref = function(expr) {
- if (expr.toJS) {
- expr = expr.toJS(context, tableid, defcols);
- }
- var i = refs.push(expr) - 1;
- return 'y[' + i + ']';
- };
- var leftJS = function() {
- return ref(_this.left);
- };
- var rightJS = function() {
- return ref(_this.right);
- };
-
- if (this.op === '=') {
- op = '===';
- } else if (this.op === '<>') {
- op = '!=';
- } else if (this.op === 'OR') {
- op = '||';
- }
-
- // Arrow operator
- if (this.op === '->') {
- // Expression to prevent error if object is empty (#344)
- var ljs = '(' + leftJS() + '||{})';
-
- if (typeof this.right === 'string') {
- s = ljs + '["' + this.right + '"]';
- } else if (typeof this.right === 'number') {
- s = ljs + '[' + this.right + ']';
- } else if (this.right instanceof yy.FuncValue) {
- var ss = [];
- if (!(!this.right.args || 0 === this.right.args.length)) {
- var ss = this.right.args.map(ref);
- }
- s = '' + ljs + "['" + this.right.funcid + "'](" + ss.join(',') + ')';
- } else {
- s = '' + ljs + '[' + rightJS() + ']';
- }
- }
-
- if (this.op === '!') {
- if (typeof this.right === 'string') {
- s =
- '' +
- 'alasql.databases[alasql.useid].objects[' +
- leftJS() +
- ']["' +
- this.right +
- '"]';
- }
- // TODO - add other cases
- }
-
- if (this.op === 'IS') {
- s =
- '' +
- '(' +
- '(' +
- leftJS() +
- '==null)' + // Cant be ===
- ' === ' +
- '(' +
- rightJS() +
- '==null)' + // Cant be ===
- ')';
- }
-
- if (this.op === '==') {
- s = '' + 'alasql.utils.deepEqual(' + leftJS() + ',' + rightJS() + ')';
- }
-
- if (this.op === '===' || this.op === '!===') {
- s =
- '' +
- '(' +
- (this.op === '!===' ? '!' : '') +
- '(' +
- '(' +
- leftJS() +
- ').valueOf()' +
- '===' +
- '(' +
- rightJS() +
- ').valueOf()' +
- ')' +
- ')';
- }
-
- if (this.op === '!==') {
- s = '' + '(!alasql.utils.deepEqual(' + leftJS() + ',' + rightJS() + '))';
- }
- if (this.op === '||') {
- s = '' + "(''+(" + leftJS() + "||'')+(" + rightJS() + '||""))';
- }
- if (this.op === 'LIKE' || this.op === 'NOT LIKE') {
- var s =
- '(' +
- (this.op === 'NOT LIKE' ? '!' : '') +
- 'alasql.utils.like(' +
- rightJS() +
- ',' +
- leftJS();
- if (this.escape) {
- s += ',' + ref(this.escape);
- }
- s += '))';
- }
- if (this.op === 'REGEXP') {
- s = 'alasql.stdfn.REGEXP_LIKE(' + leftJS() + ',' + rightJS() + ')';
- }
- if (this.op === 'GLOB') {
- s = 'alasql.utils.glob(' + leftJS() + ',' + rightJS() + ')';
- }
-
- if (this.op === 'BETWEEN' || this.op === 'NOT BETWEEN') {
- var left = leftJS();
- s =
- '' +
- '(' +
- (this.op === 'NOT BETWEEN' ? '!' : '') +
- '(' +
- '(' +
- ref(this.right1) +
- '<=' +
- left +
- ') && (' +
- left +
- '<=' +
- ref(this.right2) +
- ')' +
- ')' +
- ')';
-
- }
-
- if (this.op === 'IN') {
- if (this.right instanceof yy.Select) {
- s = '(';
- // s += 'this.query.queriesdata['+this.queriesidx+']';
- // s += 'alasql.utils.flatArray(this.query.queriesfn['+(this.queriesidx)+'](params,null,context))';
- s +=
- 'alasql.utils.flatArray(this.queriesfn[' +
- this.queriesidx +
- '](params,null,' +
- context +
- '))';
- s += '.indexOf(';
- s += leftJS() + ')>-1)';
- } else if (Array.isArray(this.right)) {
- // if(this.right.length == 0) return 'false';
- s = '([' + this.right.map(ref).join(',') + '].indexOf(' + leftJS() + ')>-1)';
-
- } else {
- s = '(' + rightJS() + '.indexOf(' + leftJS() + ')>-1)';
-
- // } else {
- // throw new Error('Wrong IN operator without SELECT part');
- }
- }
-
- if (this.op === 'NOT IN') {
- if (this.right instanceof yy.Select) {
- s = '(';
- //this.query.queriesdata['+this.queriesidx+']
- // s += 'alasql.utils.flatArray(this.query.queriesfn['+(this.queriesidx)+'](params,null,p))';
- s += 'alasql.utils.flatArray(this.queriesfn[' + this.queriesidx + '](params,null,p))';
- s += '.indexOf(';
- s += leftJS() + ')<0)';
- } else if (Array.isArray(this.right)) {
- // if(this.right.length == 0) return 'true';
- s = '([' + this.right.map(ref).join(',') + '].indexOf(';
- s += leftJS() + ')<0)';
- } else {
- s = '(' + rightJS() + '.indexOf(';
- s += leftJS() + ')==-1)';
-
- // throw new Error('Wrong NOT IN operator without SELECT part');
- }
- }
-
- if (this.allsome === 'ALL') {
- var s;
- if (this.right instanceof yy.Select) {
- // var s = 'this.query.queriesdata['+this.queriesidx+']';
- s =
- 'alasql.utils.flatArray(this.query.queriesfn[' +
- this.queriesidx +
- '](params,null,p))';
-
- s += '.every(function(b){return (';
- s += leftJS() + ')' + op + 'b})';
- } else if (Array.isArray(this.right)) {
- s =
- '' +
- (this.right.length == 1
- ? ref(this.right[0])
- : '[' + this.right.map(ref).join(',') + ']');
- s += '.every(function(b){return (';
- s += leftJS() + ')' + op + 'b})';
- } else {
- throw new Error('NOT IN operator without SELECT');
- }
- }
-
- if (this.allsome === 'SOME' || this.allsome === 'ANY') {
- var s;
- if (this.right instanceof yy.Select) {
- // var s = 'this.query.queriesdata['+this.queriesidx+']';
- s =
- 'alasql.utils.flatArray(this.query.queriesfn[' +
- this.queriesidx +
- '](params,null,p))';
- s += '.some(function(b){return (';
- s += leftJS() + ')' + op + 'b})';
- } else if (Array.isArray(this.right)) {
- s =
- '' +
- (this.right.length == 1
- ? ref(this.right[0])
- : '[' + this.right.map(ref).join(',') + ']');
- s += '.some(function(b){return (';
- s += leftJS() + ')' + op + 'b})';
- } else {
- throw new Error('SOME/ANY operator without SELECT');
- }
- }
-
- // Special case for AND optimization (if reduced)
- if (this.op === 'AND') {
- if (this.left.reduced) {
- if (this.right.reduced) {
- return 'true';
- } else {
- s = rightJS();
- }
- } else if (this.right.reduced) {
- s = leftJS();
- }
-
- // Otherwise process as regular operation (see below)
- op = '&&';
- }
-
- // if(this.op === '^') {
- // // return 'Math.pow('
- // // + leftJS()
- // // + ','
- // // + rightJS()
- // // + ')';
- // }
-
- // Change names
-
- var expr = s || '(' + leftJS() + op + rightJS() + ')';
-
- var declareRefs = 'y=[(' + refs.join('), (') + ')]';
-
- if (op === '&&' || op === '||' || op === 'IS' || op === 'IS NULL' || op === 'IS NOT NULL') {
- return '(' + declareRefs + ', ' + expr + ')';
- }
-
- return (
- '(' + declareRefs + ', ' + 'y.some(function(e){return e == null}) ? void 0 : ' + expr + ')'
- );
-};
-
-yy.VarValue = function(params) {
- return yy.extend(this, params);
-};
-yy.VarValue.prototype.toString = function() {
- return '@' + this.variable;
-};
-
-yy.VarValue.prototype.toType = function() {
- return 'unknown';
-};
-
-yy.VarValue.prototype.toJS = function() {
- return "alasql.vars['" + this.variable + "']";
-};
-
-yy.NumValue = function(params) {
- return yy.extend(this, params);
-};
-yy.NumValue.prototype.toString = function() {
- return this.value.toString();
-};
-
-yy.NumValue.prototype.toType = function() {
- return 'number';
-};
-
-yy.NumValue.prototype.toJS = function() {
- return '' + this.value;
-};
-
-yy.StringValue = function(params) {
- return yy.extend(this, params);
-};
-yy.StringValue.prototype.toString = function() {
- return "'" + this.value.toString() + "'";
-};
-
-yy.StringValue.prototype.toType = function() {
- return 'string';
-};
-
-yy.StringValue.prototype.toJS = function() {
-
- // return "'"+doubleqq(this.value)+"'";
- return "'" + escapeq(this.value) + "'";
-};
-
-yy.DomainValueValue = function(params) {
- return yy.extend(this, params);
-};
-yy.DomainValueValue.prototype.toString = function() {
- return 'VALUE';
-};
-
-yy.DomainValueValue.prototype.toType = function() {
- return 'object';
-};
-
-yy.DomainValueValue.prototype.toJS = function(context, tableid, defcols) {
-
- // return "'"+doubleqq(this.value)+"'";
- return context;
-};
-
-yy.ArrayValue = function(params) {
- return yy.extend(this, params);
-};
-yy.ArrayValue.prototype.toString = function() {
- return 'ARRAY[]';
-};
-
-yy.ArrayValue.prototype.toType = function() {
- return 'object';
-};
-
-yy.ArrayValue.prototype.toJS = function(context, tableid, defcols) {
-
- // return "'"+doubleqq(this.value)+"'";
- return (
- '[(' +
- this.value
- .map(function(el) {
- return el.toJS(context, tableid, defcols);
- })
- .join('), (') +
- ')]'
- );
-};
-
-yy.LogicValue = function(params) {
- return yy.extend(this, params);
-};
-yy.LogicValue.prototype.toString = function() {
- return this.value ? 'TRUE' : 'FALSE';
-};
-
-yy.LogicValue.prototype.toType = function() {
- return 'boolean';
-};
-
-yy.LogicValue.prototype.toJS = function() {
- return this.value ? 'true' : 'false';
-};
-
-yy.NullValue = function(params) {
- return yy.extend(this, params);
-};
-yy.NullValue.prototype.toString = function() {
- return 'NULL';
-};
-yy.NullValue.prototype.toJS = function() {
- return 'undefined';
- // return 'undefined';
-};
-
-yy.ParamValue = function(params) {
- return yy.extend(this, params);
-};
-yy.ParamValue.prototype.toString = function() {
- return '$' + this.param;
-};
-yy.ParamValue.prototype.toJS = function() {
- if (typeof this.param === 'string') {
- return "params['" + this.param + "']";
- }
-
- return 'params[' + this.param + ']';
-};
-
-yy.UniOp = function(params) {
- return yy.extend(this, params);
-};
-yy.UniOp.prototype.toString = function() {
- var s;
- s = void 0;
- if (this.op === '~') {
- s = this.op + this.right.toString();
- }
- if (this.op === '-') {
- s = this.op + this.right.toString();
- }
- if (this.op === '+') {
- s = this.op + this.right.toString();
- }
- if (this.op === '#') {
- s = this.op + this.right.toString();
- }
- if (this.op === 'NOT') {
- s = this.op + '(' + this.right.toString() + ')';
- }
- if (this.op === null) {
- s = '(' + this.right.toString() + ')';
- }
- if (!s) {
- s = '(' + this.right.toString() + ')';
- }
- return s;
-};
-
-yy.UniOp.prototype.findAggregator = function(query) {
- if (this.right.findAggregator) {
- this.right.findAggregator(query);
- }
-};
-
-yy.UniOp.prototype.toType = function() {
- if (this.op === '-') {
- return 'number';
- }
-
- if (this.op === '+') {
- return 'number';
- }
-
- if (this.op === 'NOT') {
- return 'boolean';
- }
-
- // Todo: implement default case
-};
-
-yy.UniOp.prototype.toJS = function(context, tableid, defcols) {
- if (this.op === '~') {
- return '(~(' + this.right.toJS(context, tableid, defcols) + '))';
- }
-
- if (this.op === '-') {
- return '(-(' + this.right.toJS(context, tableid, defcols) + '))';
- }
-
- if (this.op === '+') {
- return '(' + this.right.toJS(context, tableid, defcols) + ')';
- }
-
- if (this.op === 'NOT') {
- return '!(' + this.right.toJS(context, tableid, defcols) + ')';
- }
-
- if (this.op === '#') {
- if (this.right instanceof yy.Column) {
- return "(alasql.databases[alasql.useid].objects['" + this.right.columnid + "'])";
- } else {
- return (
- '(alasql.databases[alasql.useid].objects[' +
- this.right.toJS(context, tableid, defcols) +
- '])'
- );
- }
- }
-
- // Please avoid === here
- if (this.op == null) {
- // jshint ignore:line
- return '(' + this.right.toJS(context, tableid, defcols) + ')';
- }
-
- // Todo: implement default case.
-};
-
-yy.Column = function(params) {
- return yy.extend(this, params);
-};
-yy.Column.prototype.toString = function(dontas) {
- var s;
- if (this.columnid == +this.columnid) {
- // jshint ignore:line
- s = '[' + this.columnid + ']';
- } else {
- s = this.columnid;
- }
- if (this.tableid) {
- if (+this.columnid === this.columnid) {
- s = this.tableid + s;
- } else {
- s = this.tableid + '.' + s;
- }
- if (this.databaseid) {
- s = this.databaseid + '.' + s;
- }
- }
- if (this.alias && !dontas) s += ' AS ' + this.alias;
- return s;
-};
-
-yy.Column.prototype.toJS = function(context, tableid, defcols) {
-
- var s = '';
- if (!this.tableid && tableid === '' && !defcols) {
- if (this.columnid !== '_') {
- s = context + "['" + this.columnid + "']";
- } else {
- if (context === 'g') {
- s = "g['_']";
- } else {
- s = context;
- }
- }
- } else {
- if (context === 'g') {
- // if(this.columnid == '_') {
- // } else {
- s = "g['" + this.nick + "']";
- // }
- } else if (this.tableid) {
- if (this.columnid !== '_') {
- // if() {
- // s = context+'[\''+tableid + '\'][\''+this.tableid+'\'][\''+this.columnid+'\']';
- // } else {
- s = context + "['" + this.tableid + "']['" + this.columnid + "']";
- // }
- } else {
- if (context === 'g') {
- s = "g['_']";
- } else {
- s = context + "['" + this.tableid + "']";
- }
- }
- } else if (defcols) {
- var tbid = defcols[this.columnid];
- if (tbid === '-') {
- throw new Error(
- 'Cannot resolve column "' +
- this.columnid +
- '" because it exists in two source tables'
- );
- } else if (tbid) {
- if (this.columnid !== '_') {
- s = context + "['" + tbid + "']['" + this.columnid + "']";
- } else {
- s = context + "['" + tbid + "']";
- }
-
- } else {
- if (this.columnid !== '_') {
- // if(defcols['.'][this.tableid]) {
-
- // s = context+'[\''+tableid + '\'][\''+this.tableid + '\'][\''+this.columnid+'\']';
- // } else {
- s = context + "['" + (this.tableid || tableid) + "']['" + this.columnid + "']";
- // }
- } else {
- s = context + "['" + (this.tableid || tableid) + "']";
- }
- }
- } else if (tableid === -1) {
- // if(this.columnid != '') {
- s = context + "['" + this.columnid + "']";
- // } else {
- // s = context;
- // }
- } else {
- if (this.columnid !== '_') {
- s = context + "['" + (this.tableid || tableid) + "']['" + this.columnid + "']";
- } else {
- s = context + "['" + (this.tableid || tableid) + "']";
- }
- }
- }
-
- // console.trace(new Error());
-
- return s;
-};
-
-yy.AggrValue = function(params) {
- return yy.extend(this, params);
-};
-yy.AggrValue.prototype.toString = function(dontas) {
- var s = '';
- if (this.aggregatorid === 'REDUCE') {
- s += this.funcid + '(';
- } else {
- s += this.aggregatorid + '(';
- }
-
- if (this.distinct) {
- s += 'DISTINCT ';
- }
-
- if (this.expression) {
- s += this.expression.toString();
- }
-
- s += ')';
-
- if (this.over) {
- s += ' ' + this.over.toString();
- }
-
- if (this.alias && !dontas) s += ' AS ' + this.alias;
- // if(this.alias) s += ' AS '+this.alias;
- return s;
-};
-
-yy.AggrValue.prototype.findAggregator = function(query) {
-
- // var colas = this.as || this.toString();
-
- var colas = escapeq(this.toString()) + ':' + query.selectGroup.length;
-
- // if(!query.selectColumns[colas]) {
- // }
-
- var found = false;
-
- if (!found) {
- if (!this.nick) {
- this.nick = colas;
- var found = false;
- for (var i = 0; i < query.removeKeys.length; i++) {
- if (query.removeKeys[i] === colas) {
- found = true;
- break;
- }
- }
- if (!found) {
- query.removeKeys.push(colas);
- }
- }
- query.selectGroup.push(this);
- }
-
- // this.reduced = true;
- return;
-};
-
-yy.AggrValue.prototype.toType = function() {
- if (
- ['SUM', 'COUNT', 'AVG', 'MIN', 'MAX', 'AGGR', 'VAR', 'STDDEV'].indexOf(this.aggregatorid) >
- -1
- ) {
- return 'number';
- }
-
- if (['ARRAY'].indexOf(this.aggregatorid) > -1) {
- return 'array';
- }
-
- if (['FIRST', 'LAST'].indexOf(this.aggregatorid) > -1) {
- return this.expression.toType();
- }
-
- // todo: implement default;
-};
-
-yy.AggrValue.prototype.toJS = function(/*context, tableid, defcols*/) {
-
- var colas = this.nick;
- if (colas === undefined) {
- colas = this.toString();
- }
- return "g['" + colas + "']";
-};
-
-yy.OrderExpression = function(params) {
- return yy.extend(this, params);
-};
-yy.OrderExpression.prototype.toString = yy.Expression.prototype.toString;
-
-yy.GroupExpression = function(params) {
- return yy.extend(this, params);
-};
-yy.GroupExpression.prototype.toString = function() {
- return this.type + '(' + this.group.toString() + ')';
-};
-
-// Alasql Linq library
-
-yy.FromData = function(params) {
- return yy.extend(this, params);
-};
-yy.FromData.prototype.toString = function() {
- if (this.data) return 'DATA(' + ((Math.random() * 10e15) | 0) + ')';
- else return '?';
-};
-yy.FromData.prototype.toJS = function() {
-
-};
-
-yy.Select.prototype.exec = function(params, cb) {
- if (this.preparams) params = this.preparams.concat(params);
-
- var databaseid = alasql.useid;
- db = alasql.databases[databaseid];
- var sql = this.toString();
- var hh = hash(sql);
-
- var statement = this.compile(databaseid);
- if (!statement) return;
- statement.sql = sql;
- statement.dbversion = db.dbversion;
-
- // Secure sqlCache size
- if (db.sqlCacheSize > alasql.MAXSQLCACHESIZE) {
- db.resetSqlCache();
- }
- db.sqlCacheSize++;
- db.sqlCache[hh] = statement;
- var res = (alasql.res = statement(params, cb));
- return res;
-};
-
-yy.Select.prototype.Select = function() {
- var self = this;
- var agrs = [];
- if (arguments.length > 1) {
- args = Array.prototype.slice.call(arguments);
- } else if (arguments.length == 1) {
- if (Array.isArray(arguments[0])) {
- args = arguments[0];
- } else {
- args = [arguments[0]];
- }
- } else {
- throw new Error('Wrong number of arguments of Select() function');
- }
-
- self.columns = [];
-
- args.forEach(function(arg) {
- if (typeof arg == 'string') {
- self.columns.push(new yy.Column({columnid: arg}));
- } else if (typeof arg == 'function') {
- var pari = 0;
- if (self.preparams) {
- pari = self.preparams.length;
- } else {
- self.preparams = [];
- }
- self.preparams.push(arg);
- self.columns.push(new yy.Column({columnid: '*', func: arg, param: pari}));
- } else {
- // Unknown type
- }
- });
-
- return self;
-};
-
-yy.Select.prototype.From = function(tableid) {
- var self = this;
- if (!self.from) self.from = [];
- if (Array.isArray(tableid)) {
- var pari = 0;
- if (self.preparams) {
- pari = self.preparams.length;
- } else {
- self.preparams = [];
- }
- self.preparams.push(tableid);
- self.from.push(new yy.ParamValue({param: pari}));
- } else if (typeof tableid == 'string') {
- self.from.push(new yy.Table({tableid: tableid}));
- } else {
- throw new Error('Unknown arguments in From() function');
- }
- return self;
-};
-
-yy.Select.prototype.OrderBy = function() {
- var self = this;
- var agrs = [];
-
- self.order = [];
-
- if (arguments.length == 0) {
- // self.order.push(new yy.OrderExpression({expression: new yy.Column({columnid:"_"}), direction:'ASC'}));
- args = ['_'];
- } else if (arguments.length > 1) {
- args = Array.prototype.slice.call(arguments);
- } else if (arguments.length == 1) {
- if (Array.isArray(arguments[0])) {
- args = arguments[0];
- } else {
- args = [arguments[0]];
- }
- } else {
- throw new Error('Wrong number of arguments of Select() function');
- }
-
- if (args.length > 0) {
- args.forEach(function(arg) {
- var expr = new yy.Column({columnid: arg});
- if (typeof arg == 'function') {
- expr = arg;
- }
- self.order.push(new yy.OrderExpression({expression: expr, direction: 'ASC'}));
- });
- }
- return self;
-};
-
-yy.Select.prototype.Top = function(topnum) {
- var self = this;
- self.top = new yy.NumValue({value: topnum});
- return self;
-};
-
-yy.Select.prototype.GroupBy = function() {
- var self = this;
- var agrs = [];
-
- if (arguments.length > 1) {
- args = Array.prototype.slice.call(arguments);
- } else if (arguments.length == 1) {
- if (Array.isArray(arguments[0])) {
- args = arguments[0];
- } else {
- args = [arguments[0]];
- }
- } else {
- throw new Error('Wrong number of arguments of Select() function');
- }
-
- self.group = [];
-
- args.forEach(function(arg) {
- var expr = new yy.Column({columnid: arg});
- self.group.push(expr);
- });
-
- return self;
-};
-
-yy.Select.prototype.Where = function(expr) {
- var self = this;
- if (typeof expr == 'function') {
- self.where = expr;
- }
- return self;
-};
-
-/*
-//
-// Functions for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.FuncValue = function(params) {
- return yy.extend(this, params);
-};
-yy.FuncValue.prototype.toString = function(dontas) {
- var s = '';
-
- if (alasql.fn[this.funcid]) s += this.funcid;
- else if (alasql.aggr[this.funcid]) s += this.funcid;
- else if (alasql.stdlib[this.funcid.toUpperCase()] || alasql.stdfn[this.funcid.toUpperCase()])
- s += this.funcid.toUpperCase();
-
- s += '(';
- if (this.args && this.args.length > 0) {
- s += this.args
- .map(function(arg) {
- return arg.toString();
- })
- .join(',');
- }
- s += ')';
- if (this.as && !dontas) s += ' AS ' + this.as.toString();
- // if(this.alias) s += ' AS '+this.alias;
- return s;
-};
-
-yy.FuncValue.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
- alasql.precompile(this, databaseid, params); // Precompile queries
-
- var expr = new Function('params,alasql', 'var y;return ' + this.toJS('', '', null));
- expr(params, alasql);
- if (cb) res = cb(res);
- return res;
-};
-
-yy.FuncValue.prototype.findAggregator = function(query) {
- if (this.args && this.args.length > 0) {
- this.args.forEach(function(arg) {
- if (arg.findAggregator) arg.findAggregator(query);
- });
- }
-};
-
-yy.FuncValue.prototype.toJS = function(context, tableid, defcols) {
- var s = '';
- var funcid = this.funcid;
- // IF this is standard compile functions
- if (!alasql.fn[funcid] && alasql.stdlib[funcid.toUpperCase()]) {
- if (this.args && this.args.length > 0) {
- s += alasql.stdlib[funcid.toUpperCase()].apply(
- this,
- this.args.map(function(arg) {
- return arg.toJS(context, tableid);
- })
- );
- } else {
- s += alasql.stdlib[funcid.toUpperCase()]();
- }
- } else if (!alasql.fn[funcid] && alasql.stdfn[funcid.toUpperCase()]) {
- if (this.newid) s += 'new ';
- s += 'alasql.stdfn.' + this.funcid.toUpperCase() + '(';
- // if(this.args) s += this.args.toJS(context, tableid);
- if (this.args && this.args.length > 0) {
- s += this.args
- .map(function(arg) {
- return arg.toJS(context, tableid, defcols);
- })
- .join(',');
- }
- s += ')';
- } else {
- // This is user-defined run-time function
- // TODO arguments!!!
- // var s = '';
- if (this.newid) s += 'new ';
- s += 'alasql.fn.' + this.funcid + '(';
- // if(this.args) s += this.args.toJS(context, tableid);
- if (this.args && this.args.length > 0) {
- s += this.args
- .map(function(arg) {
- return arg.toJS(context, tableid, defcols);
- })
- .join(',');
- }
- s += ')';
- }
-
- // if(this.alias) s += ' AS '+this.alias;
- return s;
-};
-
-var stdlib = (alasql.stdlib = {});
-var stdfn = (alasql.stdfn = {});
-
-stdlib.ABS = function(a) {
- return 'Math.abs(' + a + ')';
-};
-stdlib.CLONEDEEP = function(a) {
- return 'alasql.utils.cloneDeep(' + a + ')';
-};
-
-stdfn.CONCAT = function() {
- return Array.prototype.slice.call(arguments).join('');
-};
-stdlib.EXP = function(a) {
- return 'Math.pow(Math.E,' + a + ')';
-};
-
-stdlib.IIF = function(a, b, c) {
- if (arguments.length == 3) {
- return '((' + a + ')?(' + b + '):(' + c + '))';
- } else {
- throw new Error('Number of arguments of IFF is not equals to 3');
- }
-};
-stdlib.IFNULL = function(a, b) {
- return '(' + a + '||' + b + ')';
-};
-stdlib.INSTR = function(s, p) {
- return '((' + s + ').indexOf(' + p + ')+1)';
-};
-
-//stdlib.LEN = stdlib.LENGTH = function(s) {return '('+s+'+"").length';};
-
-stdlib.LEN = stdlib.LENGTH = function(s) {
- return und(s, 'y.length');
-};
-//stdlib.LENGTH = function(s) {return '('+s+').length'};
-
-stdlib.LOWER = stdlib.LCASE = function(s) {
- return und(s, 'String(y).toLowerCase()');
-};
-//stdlib.LCASE = function(s) {return '('+s+').toLowerCase()';}
-
-// Returns a character expression after it removes leading blanks.
-// see https://docs.microsoft.com/en-us/sql/t-sql/functions/ltrim-transact-sql
-stdlib.LTRIM = function(s) {
- return und(s, 'y.replace(/^[ ]+/,"")');
-};
-
-// Returns a character string after truncating all trailing spaces.
-// see https://docs.microsoft.com/en-us/sql/t-sql/functions/rtrim-transact-sql
-stdlib.RTRIM = function(s) {
- return und(s, 'y.replace(/[ ]+$/,"")');
-};
-
-stdlib.MAX = stdlib.GREATEST = function() {
- return 'Math.max(' + Array.prototype.join.call(arguments, ',') + ')';
-};
-
-stdlib.MIN = stdlib.LEAST = function() {
- return 'Math.min(' + Array.prototype.join.call(arguments, ',') + ')';
-};
-
-stdlib.SUBSTRING = stdlib.SUBSTR = stdlib.MID = function(a, b, c) {
- if (arguments.length == 2) return und(a, 'y.substr(' + b + '-1)');
- else if (arguments.length == 3) return und(a, 'y.substr(' + b + '-1,' + c + ')');
-};
-
-stdfn.REGEXP_LIKE = function(a, b, c) {
-
- return (a || '').search(RegExp(b, c)) > -1;
-};
-
-// Here we uses undefined instead of null
-stdlib.ISNULL = stdlib.NULLIF = function(a, b) {
- return '(' + a + '==' + b + '?undefined:' + a + ')';
-};
-
-stdlib.POWER = function(a, b) {
- return 'Math.pow(' + a + ',' + b + ')';
-};
-
-stdlib.RANDOM = function(r) {
- if (arguments.length == 0) {
- return 'Math.random()';
- } else {
- return '(Math.random()*(' + r + ')|0)';
- }
-};
-stdlib.ROUND = function(s, d) {
- if (arguments.length == 2) {
- return 'Math.round((' + s + ')*Math.pow(10,(' + d + ')))/Math.pow(10,(' + d + '))';
- } else {
- return 'Math.round(' + s + ')';
- }
-};
-stdlib.CEIL = stdlib.CEILING = function(s) {
- return 'Math.ceil(' + s + ')';
-};
-stdlib.FLOOR = function(s) {
- return 'Math.floor(' + s + ')';
-};
-
-stdlib.ROWNUM = function() {
- return '1';
-};
-stdlib.ROW_NUMBER = function() {
- return '1';
-};
-
-stdlib.SQRT = function(s) {
- return 'Math.sqrt(' + s + ')';
-};
-
-stdlib.TRIM = function(s) {
- return und(s, 'y.trim()');
-};
-
-stdlib.UPPER = stdlib.UCASE = function(s) {
- return und(s, 'String(y).toUpperCase()');
-};
-
-// Concatination of strings
-stdfn.CONCAT_WS = function() {
- var args = Array.prototype.slice.call(arguments);
- return args.slice(1, args.length).join(args[0]);
-};
-
-//stdlib.UCASE = function(s) {return '('+s+').toUpperCase()';}
-//REPLACE
-// RTRIM
-// SUBSTR
-// TRIM
-//REPLACE
-// RTRIM
-// SUBSTR
-// TRIM
-
-// Aggregator for joining strings
-alasql.aggr.GROUP_CONCAT = function(v, s, stage) {
- if (stage === 1) {
- return '' + v;
- } else if (stage === 2) {
- s += ',' + v;
- return s;
- }
- return s;
-};
-
-alasql.aggr.MEDIAN = function(v, s, stage) {
- if (stage === 2) {
- if (v !== null) {
- s.push(v);
- }
- return s;
- } else if (stage === 1) {
- if (v === null) {
- return [];
- }
- return [v];
- } else {
- if (!s.length) {
- return s;
- }
-
- var r = s.sort();
- var p = (r.length + 1) / 2;
- if (Number.isInteger(p)) {
- return r[p - 1];
- }
-
- return (r[Math.floor(p - 1)] + r[Math.ceil(p - 1)]) / 2;
- }
-};
-
-alasql.aggr.QUART = function(v, s, stage, nth) {
- //Quartile (first quartile per default or input param)
- if (stage === 2) {
- if (v !== null) {
- s.push(v);
- }
- return s;
- } else if (stage === 1) {
- if (v === null) {
- return [];
- }
- return [v];
- } else {
- if (!s.length) {
- return s;
- }
-
- nth = !nth ? 1 : nth;
- var r = s.sort();
- var p = nth * (r.length + 1) / 4;
- if (Number.isInteger(p)) {
- return r[p - 1]; //Integer value
- }
- return r[Math.floor(p)]; //Math.ceil -1 or Math.floor
- }
-};
-
-alasql.aggr.QUART2 = function(v, s, stage) {
- //Second Quartile
- return alasql.aggr.QUART(v, s, stage, 2);
-};
-alasql.aggr.QUART3 = function(v, s, stage) {
- //Third Quartile
- return alasql.aggr.QUART(v, s, stage, 3);
-};
-
-// Standard deviation
-alasql.aggr.VAR = function(v, s, stage) {
- if (stage === 1) {
- if (v === null) {
- return {arr: [], sum: 0};
- }
- return {arr: [v], sum: v};
- } else if (stage === 2) {
- if (v === null) {
- return s;
- }
- s.arr.push(v);
- s.sum += v;
- return s;
- } else {
- var N = s.arr.length;
- var avg = s.sum / N;
- var std = 0;
- for (var i = 0; i < N; i++) {
- std += (s.arr[i] - avg) * (s.arr[i] - avg);
- }
- std = std / (N - 1);
- return std;
- }
-};
-
-alasql.aggr.STDEV = function(v, s, stage) {
- if (stage === 1 || stage === 2) {
- return alasql.aggr.VAR(v, s, stage);
- } else {
- return Math.sqrt(alasql.aggr.VAR(v, s, stage));
- }
-};
-
-// Standard deviation
-// alasql.aggr.VARP = function(v,s,acc){
-
-// };
-
-alasql.aggr.VARP = function(v, s, stage) {
- if (stage == 1) {
- return {arr: [v], sum: v};
- } else if (stage == 2) {
- s.arr.push(v);
- s.sum += v;
- return s;
- } else {
- var N = s.arr.length;
- var avg = s.sum / N;
- var std = 0;
- for (var i = 0; i < N; i++) {
- std += (s.arr[i] - avg) * (s.arr[i] - avg);
- }
- std = std / N;
- return std;
- }
-};
-
-alasql.aggr.STD = alasql.aggr.STDDEV = alasql.aggr.STDEVP = function(v, s, stage) {
- if (stage == 1 || stage == 2) {
- return alasql.aggr.VARP(v, s, stage);
- } else {
- return Math.sqrt(alasql.aggr.VARP(v, s, stage));
- }
-};
-
-alasql._aggrOriginal = alasql.aggr;
-alasql.aggr = {};
-Object.keys(alasql._aggrOriginal).forEach(function(k) {
- alasql.aggr[k] = function(v, s, stage) {
- if (stage === 3 && typeof s === 'undefined') return undefined;
- return alasql._aggrOriginal[k].apply(null, arguments);
- };
-});
-
-// String functions
-stdfn.REPLACE = function(target, pattern, replacement) {
- return (target || '').split(pattern).join(replacement);
-};
-
-// This array is required for fast GUID generation
-var lut = [];
-for (var i = 0; i < 256; i++) {
- lut[i] = (i < 16 ? '0' : '') + i.toString(16);
-}
-
-stdfn.NEWID = stdfn.UUID = stdfn.GEN_RANDOM_UUID = function() {
- var d0 = (Math.random() * 0xffffffff) | 0;
- var d1 = (Math.random() * 0xffffffff) | 0;
- var d2 = (Math.random() * 0xffffffff) | 0;
- var d3 = (Math.random() * 0xffffffff) | 0;
- return (
- lut[d0 & 0xff] +
- lut[(d0 >> 8) & 0xff] +
- lut[(d0 >> 16) & 0xff] +
- lut[(d0 >> 24) & 0xff] +
- '-' +
- lut[d1 & 0xff] +
- lut[(d1 >> 8) & 0xff] +
- '-' +
- lut[((d1 >> 16) & 0x0f) | 0x40] +
- lut[(d1 >> 24) & 0xff] +
- '-' +
- lut[(d2 & 0x3f) | 0x80] +
- lut[(d2 >> 8) & 0xff] +
- '-' +
- lut[(d2 >> 16) & 0xff] +
- lut[(d2 >> 24) & 0xff] +
- lut[d3 & 0xff] +
- lut[(d3 >> 8) & 0xff] +
- lut[(d3 >> 16) & 0xff] +
- lut[(d3 >> 24) & 0xff]
- );
-};
-
-/*
-//
-// CASE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.CaseValue = function(params) {
- return yy.extend(this, params);
-};
-yy.CaseValue.prototype.toString = function() {
- var s = 'CASE ';
- if (this.expression) s += this.expression.toString();
- if (this.whens) {
- s += this.whens
- .map(function(w) {
- return ' WHEN ' + w.when.toString() + ' THEN ' + w.then.toString();
- })
- .join();
- }
- s += ' END';
- return s;
-};
-
-yy.CaseValue.prototype.findAggregator = function(query) {
-
- if (this.expression && this.expression.findAggregator) this.expression.findAggregator(query);
- if (this.whens && this.whens.length > 0) {
- this.whens.forEach(function(w) {
- if (w.when.findAggregator) w.when.findAggregator(query);
- if (w.then.findAggregator) w.then.findAggregator(query);
- });
- }
- if (this.elses && this.elses.findAggregator) this.elses.findAggregator(query);
-};
-
-yy.CaseValue.prototype.toJS = function(context, tableid, defcols) {
- var s = '((function(' + context + ',params,alasql){var y,r;';
- if (this.expression) {
- // this.expression.toJS(context, tableid)
- s += 'v=' + this.expression.toJS(context, tableid, defcols) + ';';
- s += (this.whens || [])
- .map(function(w) {
- return (
- ' if(v==' +
- w.when.toJS(context, tableid, defcols) +
- ') {r=' +
- w.then.toJS(context, tableid, defcols) +
- '}'
- );
- })
- .join(' else ');
- if (this.elses) s += ' else {r=' + this.elses.toJS(context, tableid, defcols) + '}';
- } else {
- s += (this.whens || [])
- .map(function(w) {
- return (
- ' if(' +
- w.when.toJS(context, tableid, defcols) +
- ') {r=' +
- w.then.toJS(context, tableid, defcols) +
- '}'
- );
- })
- .join(' else ');
- if (this.elses) s += ' else {r=' + this.elses.toJS(context, tableid, defcols) + '}';
- }
- // TODO remove bind from CASE
- s += ';return r;}).bind(this))(' + context + ',params,alasql)';
-
- return s;
-};
-
-/*
-//
-// JSON for Alasql.js
-// Date: 19.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Json = function(params) {
- return yy.extend(this, params);
-};
-yy.Json.prototype.toString = function() {
- var s = ''; // '@'
- s += JSONtoString(this.value);
- s += '';
- return s;
-};
-
-var JSONtoString = (alasql.utils.JSONtoString = function(obj) {
- var s = '';
- if (typeof obj == 'string') s = '"' + obj + '"';
- else if (typeof obj == 'number') s = obj;
- else if (typeof obj == 'boolean') s = obj;
- else if (typeof obj == 'object') {
- if (Array.isArray(obj)) {
- s +=
- '[' +
- obj
- .map(function(b) {
- return JSONtoString(b);
- })
- .join(',') +
- ']';
- } else if (!obj.toJS || obj instanceof yy.Json) {
- // to prevent recursion
- s = '{';
- var ss = [];
- for (var k in obj) {
- var s1 = '';
- if (typeof k == 'string') s1 += '"' + k + '"';
- else if (typeof k == 'number') s1 += k;
- else if (typeof k == 'boolean') s1 += k;
- else {
- throw new Error('THis is not ES6... no expressions on left side yet');
- }
- s1 += ':' + JSONtoString(obj[k]);
- ss.push(s1);
- }
- s += ss.join(',') + '}';
- } else if (obj.toString) {
- s = obj.toString();
- } else {
- throw new Error('1Can not show JSON object ' + JSON.stringify(obj));
- }
- } else {
- throw new Error('2Can not show JSON object ' + JSON.stringify(obj));
- }
-
- return s;
-});
-
-function JSONtoJS(obj, context, tableid, defcols) {
- var s = '';
- if (typeof obj == 'string') s = '"' + obj + '"';
- else if (typeof obj == 'number') s = '(' + obj + ')';
- else if (typeof obj == 'boolean') s = obj;
- else if (typeof obj == 'object') {
- if (Array.isArray(obj)) {
- s +=
- '[' +
- obj
- .map(function(b) {
- return JSONtoJS(b, context, tableid, defcols);
- })
- .join(',') +
- ']';
- } else if (!obj.toJS || obj instanceof yy.Json) {
- // to prevent recursion
- s = '{';
- var ss = [];
- for (var k in obj) {
- var s1 = '';
- if (typeof k == 'string') s1 += '"' + k + '"';
- else if (typeof k == 'number') s1 += k;
- else if (typeof k == 'boolean') s1 += k;
- else {
- throw new Error('THis is not ES6... no expressions on left side yet');
- }
- s1 += ':' + JSONtoJS(obj[k], context, tableid, defcols);
- ss.push(s1);
- }
- s += ss.join(',') + '}';
- } else if (obj.toJS) {
- s = obj.toJS(context, tableid, defcols);
- } else {
- throw new Error('1Can not parse JSON object ' + JSON.stringify(obj));
- }
- } else {
- throw new Error('2Can not parse JSON object ' + JSON.stringify(obj));
- }
-
- return s;
-}
-
-yy.Json.prototype.toJS = function(context, tableid, defcols) {
- // TODO redo
- return JSONtoJS(this.value, context, tableid, defcols);
-};
-
-/*
-//
-// CAST and CONVERT functions
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Convert = function(params) {
- return yy.extend(this, params);
-};
-yy.Convert.prototype.toString = function() {
- var s = 'CONVERT(';
- s += this.dbtypeid;
- if (typeof this.dbsize != 'undefined') {
- s += '(' + this.dbsize;
- if (this.dbprecision) s += ',' + this.dbprecision;
- s += ')';
- }
- s += ',' + this.expression.toString();
- if (this.style) s += ',' + this.style;
- s += ')';
- return s;
-};
-yy.Convert.prototype.toJS = function(context, tableid, defcols) {
- // if(this.style) {
- return (
- 'alasql.stdfn.CONVERT(' +
- this.expression.toJS(context, tableid, defcols) +
- ',{dbtypeid:"' +
- this.dbtypeid +
- '",dbsize:' +
- this.dbsize +
- ',dbprecision:' +
- this.dbprecision +
- ',style:' +
- this.style +
- '})'
- );
- // }
-
- throw new Error('There is not such type conversion for ' + this.toString());
-};
-
-/**
- Convert one type to another
- */
-alasql.stdfn.CONVERT = function(value, args) {
- var val = value;
-
- if (args.style) {
- // TODO 9,109, 20,120,21,121,126,130,131 conversions
- var t;
- if (/\d{8}/.test(val)) {
- t = new Date(+val.substr(0, 4), +val.substr(4, 2) - 1, +val.substr(6, 2));
- } else {
- t = new Date(val);
- }
- switch (args.style) {
- case 1: // mm/dd/yy
- val =
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '/' +
- ('0' + t.getDate()).substr(-2) +
- '/' +
- ('0' + t.getYear()).substr(-2);
- break;
- case 2: // yy.mm.dd
- val =
- ('0' + t.getYear()).substr(-2) +
- '.' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + t.getDate()).substr(-2);
- break;
- case 3: // dd/mm/yy
- val =
- ('0' + t.getDate()).substr(-2) +
- '/' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '/' +
- ('0' + t.getYear()).substr(-2);
- break;
- case 4: // dd.mm.yy
- val =
- ('0' + t.getDate()).substr(-2) +
- '.' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + t.getYear()).substr(-2);
- break;
- case 5: // dd-mm-yy
- val =
- ('0' + t.getDate()).substr(-2) +
- '-' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '-' +
- ('0' + t.getYear()).substr(-2);
- break;
- case 6: // dd mon yy
- val =
- ('0' + t.getDate()).substr(-2) +
- ' ' +
- t
- .toString()
- .substr(4, 3)
- .toLowerCase() +
- ' ' +
- ('0' + t.getYear()).substr(-2);
- break;
- case 7: // Mon dd,yy
- val =
- t.toString().substr(4, 3) +
- ' ' +
- ('0' + t.getDate()).substr(-2) +
- ',' +
- ('0' + t.getYear()).substr(-2);
- break;
- case 8: // hh:mm:ss
- case 108: // hh:mm:ss
- val =
- ('0' + t.getHours()).substr(-2) +
- ':' +
- ('0' + t.getMinutes()).substr(-2) +
- ':' +
- ('0' + t.getSeconds()).substr(-2);
- break;
- case 10: // mm-dd-yy
- val =
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '-' +
- ('0' + t.getDate()).substr(-2) +
- '-' +
- ('0' + t.getYear()).substr(-2);
- break;
- case 11: // yy/mm/dd
- val =
- ('0' + t.getYear()).substr(-2) +
- '/' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '/' +
- ('0' + t.getDate()).substr(-2);
- break;
- case 12: // yymmdd
- val =
- ('0' + t.getYear()).substr(-2) +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- ('0' + t.getDate()).substr(-2);
- break;
- case 101: // mm/dd/yyyy
- val =
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '/' +
- ('0' + t.getDate()).substr(-2) +
- '/' +
- t.getFullYear();
- break;
- case 102: // yyyy.mm.dd
- val =
- t.getFullYear() +
- '.' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + t.getDate()).substr(-2);
- break;
- case 103: // dd/mm/yyyy
- val =
- ('0' + t.getDate()).substr(-2) +
- '/' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '/' +
- t.getFullYear();
- break;
- case 104: // dd.mm.yyyy
- val =
- ('0' + t.getDate()).substr(-2) +
- '.' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '.' +
- t.getFullYear();
- break;
- case 105: // dd-mm-yyyy
- val =
- ('0' + t.getDate()).substr(-2) +
- '-' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '-' +
- t.getFullYear();
- break;
- case 106: // dd mon yyyy
- val =
- ('0' + t.getDate()).substr(-2) +
- ' ' +
- t
- .toString()
- .substr(4, 3)
- .toLowerCase() +
- ' ' +
- t.getFullYear();
- break;
- case 107: // Mon dd,yyyy
- val =
- t.toString().substr(4, 3) +
- ' ' +
- ('0' + t.getDate()).substr(-2) +
- ',' +
- t.getFullYear();
- break;
- case 110: // mm-dd-yyyy
- val =
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '-' +
- ('0' + t.getDate()).substr(-2) +
- '-' +
- t.getFullYear();
- break;
- case 111: // yyyy/mm/dd
- val =
- t.getFullYear() +
- '/' +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- '/' +
- ('0' + t.getDate()).substr(-2);
- break;
-
- case 112: // yyyymmdd
- val =
- t.getFullYear() +
- ('0' + (t.getMonth() + 1)).substr(-2) +
- ('0' + t.getDate()).substr(-2);
- break;
- default:
- throw new Error('The CONVERT style ' + args.style + ' is not realized yet.');
- }
- }
-
- var udbtypeid = args.dbtypeid.toUpperCase();
-
- if (args.dbtypeid == 'Date') {
- return new Date(val);
- } else if (udbtypeid == 'DATE') {
- var d = new Date(val);
- var s =
- d.getFullYear() +
- '.' +
- ('0' + (d.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + d.getDate()).substr(-2);
- return s;
- } else if (udbtypeid == 'DATETIME' || udbtypeid == 'DATETIME2') {
- var d = new Date(val);
- var s =
- d.getFullYear() +
- '.' +
- ('0' + (d.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + d.getDate()).substr(-2);
- s +=
- ' ' +
- ('0' + d.getHours()).substr(-2) +
- ':' +
- ('0' + d.getMinutes()).substr(-2) +
- ':' +
- ('0' + d.getSeconds()).substr(-2);
- s += '.' + ('00' + d.getMilliseconds()).substr(-3);
- return s;
- } else if (['MONEY'].indexOf(udbtypeid) > -1) {
- var m = +val;
- return (m | 0) + ((m * 100) % 100) / 100;
- } else if (['BOOLEAN'].indexOf(udbtypeid) > -1) {
- return !!val;
- } else if (
- ['INT', 'INTEGER', 'SMALLINT', 'BIGINT', 'SERIAL', 'SMALLSERIAL', 'BIGSERIAL'].indexOf(
- args.dbtypeid.toUpperCase()
- ) > -1
- ) {
- return val | 0;
- } else if (
- ['STRING', 'VARCHAR', 'NVARCHAR', 'CHARACTER VARIABLE'].indexOf(
- args.dbtypeid.toUpperCase()
- ) > -1
- ) {
- if (args.dbsize) return ('' + val).substr(0, args.dbsize);
- else return '' + val;
- } else if (['CHAR', 'CHARACTER', 'NCHAR'].indexOf(udbtypeid) > -1) {
- return (val + new Array(args.dbsize + 1).join(' ')).substr(0, args.dbsize);
- //else return ""+val.substr(0,1);
- } else if (['NUMBER', 'FLOAT', 'DECIMAL', 'NUMERIC'].indexOf(udbtypeid) > -1) {
- var m = +val;
- //toPrecision sets the number of numbers total in the result
- m = args.dbsize !== undefined ? parseFloat(m.toPrecision(args.dbsize)) : m;
- //toFixed sets the number of numbers to the right of the decimal
- m = args.dbprecision !== undefined ? parseFloat(m.toFixed(args.dbprecision)) : m;
- return m;
- } else if (['JSON'].indexOf(udbtypeid) > -1) {
- if (typeof val == 'object') return val;
- try {
- return JSON.parse(val);
- } catch (err) {
- throw new Error('Cannot convert string to JSON');
- }
- }
- return val;
-};
-
-/*
-//
-// CREATE TABLE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/* global alasql, yy, hash */
-
-yy.ColumnDef = function(params) {
- return yy.extend(this, params);
-};
-yy.ColumnDef.prototype.toString = function() {
- var s = this.columnid;
- if (this.dbtypeid) {
- s += ' ' + this.dbtypeid;
- }
-
- if (this.dbsize) {
- s += '(' + this.dbsize;
- if (this.dbprecision) {
- s += ',' + this.dbprecision;
- }
- s += ')';
- }
-
- if (this.primarykey) {
- s += ' PRIMARY KEY';
- }
-
- if (this.notnull) {
- s += ' NOT NULL';
- }
-
- return s;
-};
-
-yy.CreateTable = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateTable.prototype.toString = function() {
- var s = 'CREATE';
- if (this.temporary) {
- s += ' TEMPORARY';
- }
-
- if (this.view) {
- s += ' VIEW';
- } else {
- s += ' ' + (this["class"] ? 'CLASS' : 'TABLE');
- }
- if (this.ifnotexists) {
- s += ' IF NOT EXISTS';
- }
- s += ' ' + this.table.toString();
- if (this.viewcolumns) {
- s +=
- '(' +
- this.viewcolumns
- .map(function(vcol) {
- return vcol.toString();
- })
- .join(',') +
- ')';
- }
- if (this.as) {
- s += ' AS ' + this.as;
- } else {
- var ss = this.columns.map(function(col) {
- return col.toString();
- });
- s += ' (' + ss.join(',') + ')';
- }
-
- if (this.view && this.select) {
- s += ' AS ' + this.select.toString();
- }
-
- return s;
-};
-
-// CREATE TABLE
-//yy.CreateTable.prototype.compile = returnUndefined;
-yy.CreateTable.prototype.execute = function(databaseid, params, cb) {
- // var self = this;
- var db = alasql.databases[this.table.databaseid || databaseid];
-
- var tableid = this.table.tableid;
- if (!tableid) {
- throw new Error('Table name is not defined');
- }
-
- // var ifnotexists = this.ifnotexists;
- var columns = this.columns;
- // if(false) {
- // if(!columns) {
- // throw new Error('Columns are not defined');
- // }
- // }
- var constraints = this.constraints || [];
-
- // IF NOT EXISTS
- if (this.ifnotexists && db.tables[tableid]) {
- return cb ? cb(0) : 0;
- }
-
- if (db.tables[tableid]) {
- throw new Error(
- "Can not create table '" +
- tableid +
- "', because it already exists in the database '" +
- db.databaseid +
- "'"
- );
- }
-
- var table = (db.tables[tableid] = new alasql.Table()); // TODO Can use special object?
- // If this is a class
- if (this["class"]) {
- table.isclass = true;
- }
-
- var ss = []; // DEFAULT function components
- var uss = []; // ON UPDATE function components
- if (columns) {
- columns.forEach(function(col) {
- var dbtypeid = col.dbtypeid;
- if (!alasql.fn[dbtypeid]) {
- dbtypeid = dbtypeid.toUpperCase();
- }
-
- // Process SERIAL data type like Postgress
- if (['SERIAL', 'SMALLSERIAL', 'BIGSERIAL'].indexOf(dbtypeid) > -1) {
- col.identity = {value: 1, step: 1};
- }
-
- var newcol = {
- columnid: col.columnid,
- dbtypeid: dbtypeid,
- dbsize: col.dbsize, // Fixed issue #150
- dbprecision: col.dbprecision, // Fixed issue #150
- notnull: col.notnull,
- identity: col.identity,
- };
- if (col.identity) {
- table.identities[col.columnid] = {
- value: +col.identity.value,
- step: +col.identity.step,
- };
- // ss.push('\''+col.columnid+'\':(alasql.databases[\''+db.databaseid+'\'].tables[\''
- // +tableid+'\'].identities[\''+col.columnid+'\'].value)');
- }
- if (col.check) {
- table.checks.push({
- id: col.check.constrantid,
- fn: new Function('r', 'var y;return ' + col.check.expression.toJS('r', '')),
- });
- }
-
- if (col["default"]) {
- ss.push("'" + col.columnid + "':" + col["default"].toJS('r', ''));
- }
-
- // Check for primary key
- if (col.primarykey) {
- var pk = (table.pk = {});
- pk.columns = [col.columnid];
- pk.onrightfns = "r['" + col.columnid + "']";
- pk.onrightfn = new Function('r', 'var y;return ' + pk.onrightfns);
- pk.hh = hash(pk.onrightfns);
- table.uniqs[pk.hh] = {};
- }
-
- // UNIQUE clause
- if (col.unique) {
- var uk = {};
- table.uk = table.uk || [];
- table.uk.push(uk);
- uk.columns = [col.columnid];
- uk.onrightfns = "r['" + col.columnid + "']";
- uk.onrightfn = new Function('r', 'var y;return ' + uk.onrightfns);
- uk.hh = hash(uk.onrightfns);
- table.uniqs[uk.hh] = {};
- }
-
- // UNIQUE clause
- if (col.foreignkey) {
-
- var fk = col.foreignkey.table;
- var fktable = alasql.databases[fk.databaseid || databaseid].tables[fk.tableid];
- if (typeof fk.columnid === 'undefined') {
- if (fktable.pk.columns && fktable.pk.columns.length > 0) {
- fk.columnid = fktable.pk.columns[0];
- } else {
- throw new Error('FOREIGN KEY allowed only to tables with PRIMARY KEYs');
- }
- }
-
- var fkfn = function(r) {
- var rr = {};
- if (typeof r[col.columnid] === 'undefined') {
- return true;
- }
- rr[fk.columnid] = r[col.columnid];
- var addr = fktable.pk.onrightfn(rr);
-
- if (!fktable.uniqs[fktable.pk.hh][addr]) {
- throw new Error(
- 'Foreign key "' +
- r[col.columnid] +
- '" is not found in table ' +
- fktable.tableid
- );
- }
- return true;
- };
- table.checks.push({fn: fkfn});
-
- }
-
- if (col.onupdate) {
- uss.push("r['" + col.columnid + "']=" + col.onupdate.toJS('r', ''));
- }
-
- table.columns.push(newcol);
- table.xcolumns[newcol.columnid] = newcol;
- });
- }
- table.defaultfns = ss.join(',');
- table.onupdatefns = uss.join(';');
-
- // if(constraints) {
- constraints.forEach(function(con) {
-
- var checkfn;
-
- if (con.type === 'PRIMARY KEY') {
- if (table.pk) {
- throw new Error('Primary key already exists');
- }
- var pk = (table.pk = {});
- pk.columns = con.columns;
- pk.onrightfns = pk.columns
- .map(function(columnid) {
- return "r['" + columnid + "']";
- })
- .join("+'`'+");
- pk.onrightfn = new Function('r', 'var y;return ' + pk.onrightfns);
- pk.hh = hash(pk.onrightfns);
- table.uniqs[pk.hh] = {};
- } else if (con.type === 'CHECK') {
-
- checkfn = new Function('r', 'var y;return ' + con.expression.toJS('r', ''));
- } else if (con.type === 'UNIQUE') {
-
- var uk = {};
- table.uk = table.uk || [];
- table.uk.push(uk);
- uk.columns = con.columns;
- uk.onrightfns = uk.columns
- .map(function(columnid) {
- return "r['" + columnid + "']";
- })
- .join("+'`'+");
- uk.onrightfn = new Function('r', 'var y;return ' + uk.onrightfns);
- uk.hh = hash(uk.onrightfns);
- table.uniqs[uk.hh] = {};
- } else if (con.type === 'FOREIGN KEY') {
-
- var col = table.xcolumns[con.columns[0]];
- var fk = con.fktable;
- if (con.fkcolumns && con.fkcolumns.length > 0) {
- fk.columnid = con.fkcolumns[0];
- }
- var fktable = alasql.databases[fk.databaseid || databaseid].tables[fk.tableid];
- if (typeof fk.columnid === 'undefined') {
- fk.columnid = fktable.pk.columns[0];
- }
-
- checkfn = function(r) {
- var rr = {};
- if (typeof r[col.columnid] === 'undefined') {
- return true;
- }
- rr[fk.columnid] = r[col.columnid];
- var addr = fktable.pk.onrightfn(rr);
-
- if (!fktable.uniqs[fktable.pk.hh][addr]) {
-
- throw new Error(
- 'Foreign key "' +
- r[col.columnid] +
- '" is not found in table ' +
- fktable.tableid
- );
- }
- return true;
- };
- }
- if (checkfn) {
- table.checks.push({fn: checkfn, id: con.constraintid, fk: con.type === 'FOREIGN KEY'});
- }
- });
-
- if (this.view && this.viewcolumns) {
- var self = this;
- this.viewcolumns.forEach(function(vcol, idx) {
- self.select.columns[idx].as = vcol.columnid;
- });
- }
-
- //Used in 420from queryfn when table.view = true!
- if (this.view && this.select) {
- table.view = true;
-
- table.select = this.select.compile(this.table.databaseid || databaseid);
- }
-
- if (db.engineid) {
-
- return alasql.engines[db.engineid].createTable(
- this.table.databaseid || databaseid,
- tableid,
- this.ifnotexists,
- cb
- );
-
- // return res1;
- }
-
- // }
- // if(table.pk) {
-
- table.insert = function(r, orreplace) {
- var oldinserted = alasql.inserted;
- alasql.inserted = [r];
-
- var table = this;
-
- var toreplace = false; // For INSERT OR REPLACE
-
- /*
- // IDENTINY or AUTO_INCREMENT
- // if(table.identities && table.identities.length>0) {
- // table.identities.forEach(function(ident){
- // r[ident.columnid] = ident.value;
- // });
- // }
-*/
- // Trigger prevent functionality
- var prevent = false;
- for (var tr in table.beforeinsert) {
- var trigger = table.beforeinsert[tr];
- if (trigger) {
- if (trigger.funcid) {
- if (alasql.fn[trigger.funcid](r) === false) prevent = prevent || true;
- } else if (trigger.statement) {
- if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
- }
- }
- }
- if (prevent) return;
-
- // Trigger prevent functionality
- var escape = false;
- for (tr in table.insteadofinsert) {
- escape = true;
- trigger = table.insteadofinsert[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
- if (escape) return;
-
- for (var columnid in table.identities) {
- var ident = table.identities[columnid];
-
- r[columnid] = ident.value;
-
- }
-
- if (table.checks && table.checks.length > 0) {
- table.checks.forEach(function(check) {
- if (!check.fn(r)) {
- // if(orreplace) toreplace=true; else
- throw new Error('Violation of CHECK constraint ' + (check.id || ''));
- }
- });
- }
-
- table.columns.forEach(function(column) {
- if (column.notnull && typeof r[column.columnid] === 'undefined') {
- throw new Error('Wrong NULL value in NOT NULL column ' + column.columnid);
- }
- });
- if (table.pk) {
- var pk = table.pk;
- var addr = pk.onrightfn(r);
-
- if (typeof table.uniqs[pk.hh][addr] !== 'undefined') {
-
- if (orreplace) toreplace = table.uniqs[pk.hh][addr];
- else
- throw new Error(
- 'Cannot insert record, because it already exists in primary key index'
- );
- }
- // table.uniqs[pk.hh][addr]=r;
- }
-
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- var ukaddr = uk.onrightfn(r);
- if (typeof table.uniqs[uk.hh][ukaddr] !== 'undefined') {
- if (orreplace) toreplace = table.uniqs[uk.hh][ukaddr];
- else
- throw new Error(
- 'Cannot insert record, because it already exists in unique index'
- );
- }
- // table.uniqs[uk.hh][ukaddr]=r;
- });
- }
-
- if (toreplace) {
- // Do UPDATE!!!
-
- table.update(
- function(t) {
- for (var f in r) t[f] = r[f];
- },
- table.data.indexOf(toreplace),
- params
- );
- } else {
- table.data.push(r);
-
- // Final change before insert
-
- // Update indices
-
- for (var columnid in table.identities) {
- var ident = table.identities[columnid];
-
- ident.value += ident.step;
-
- }
-
- if (table.pk) {
- var pk = table.pk;
- var addr = pk.onrightfn(r);
- table.uniqs[pk.hh][addr] = r;
- }
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- var ukaddr = uk.onrightfn(r);
- table.uniqs[uk.hh][ukaddr] = r;
- });
- }
- }
-
- // Trigger prevent functionality
- for (var tr in table.afterinsert) {
- var trigger = table.afterinsert[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
- alasql.inserted = oldinserted;
- };
-
- table["delete"] = function(index) {
- var table = this;
- var r = table.data[index];
-
- // Prevent trigger
- var prevent = false;
- for (var tr in table.beforedelete) {
- var trigger = table.beforedelete[tr];
- if (trigger) {
- if (trigger.funcid) {
- if (alasql.fn[trigger.funcid](r) === false) prevent = prevent || true;
- } else if (trigger.statement) {
- if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
- }
- }
- }
- if (prevent) return false;
-
- // Trigger prevent functionality
- var escape = false;
- for (var tr in table.insteadofdelete) {
- escape = true;
- var trigger = table.insteadofdelete[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
- if (escape) return;
-
- if (this.pk) {
- var pk = this.pk;
- var addr = pk.onrightfn(r);
- if (typeof this.uniqs[pk.hh][addr] === 'undefined') {
- throw new Error('Something wrong with primary key index on table');
- } else {
- this.uniqs[pk.hh][addr] = undefined;
- }
- }
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- var ukaddr = uk.onrightfn(r);
- if (typeof table.uniqs[uk.hh][ukaddr] === 'undefined') {
- throw new Error('Something wrong with unique index on table');
- }
- table.uniqs[uk.hh][ukaddr] = undefined;
- });
- }
- };
-
- table.deleteall = function() {
- this.data.length = 0;
- if (this.pk) {
- // var r = this.data[i];
- this.uniqs[this.pk.hh] = {};
- }
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- table.uniqs[uk.hh] = {};
- });
- }
- };
-
- table.update = function(assignfn, i, params) {
- // TODO: Analyze the speed
- var r = cloneDeep(this.data[i]);
-
- var pk;
- // PART 1 - PRECHECK
- if (this.pk) {
- pk = this.pk;
- pk.pkaddr = pk.onrightfn(r, params);
- if (typeof this.uniqs[pk.hh][pk.pkaddr] === 'undefined') {
- throw new Error('Something wrong with index on table');
- }
- }
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- uk.ukaddr = uk.onrightfn(r);
- if (typeof table.uniqs[uk.hh][uk.ukaddr] === 'undefined') {
- throw new Error('Something wrong with unique index on table');
- }
- });
- }
-
- assignfn(r, params, alasql);
-
- // Prevent trigger
- var prevent = false;
- for (var tr in table.beforeupdate) {
- var trigger = table.beforeupdate[tr];
- if (trigger) {
- if (trigger.funcid) {
- if (alasql.fn[trigger.funcid](this.data[i], r) === false)
- prevent = prevent || true;
- } else if (trigger.statement) {
- if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
- }
- }
- }
- if (prevent) return false;
-
- // Trigger prevent functionality
- var escape = false;
- for (var tr in table.insteadofupdate) {
- escape = true;
- var trigger = table.insteadofupdate[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](this.data[i], r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
- if (escape) return;
-
- // PART 2 - POST CHECK
- if (table.checks && table.checks.length > 0) {
- table.checks.forEach(function(check) {
- if (!check.fn(r)) {
- throw new Error('Violation of CHECK constraint ' + (check.id || ''));
- }
- });
- }
-
- table.columns.forEach(function(column) {
- if (column.notnull && typeof r[column.columnid] === 'undefined') {
- throw new Error('Wrong NULL value in NOT NULL column ' + column.columnid);
- }
- });
- if (this.pk) {
- pk.newpkaddr = pk.onrightfn(r);
- if (
- typeof this.uniqs[pk.hh][pk.newpkaddr] !== 'undefined' &&
- pk.newpkaddr !== pk.pkaddr
- ) {
- throw new Error('Record already exists');
- }
- }
-
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- uk.newukaddr = uk.onrightfn(r);
- if (
- typeof table.uniqs[uk.hh][uk.newukaddr] !== 'undefined' &&
- uk.newukaddr !== uk.ukaddr
- ) {
- throw new Error('Record already exists');
- }
- });
- }
-
- // PART 3 UPDATE
- if (this.pk) {
- this.uniqs[pk.hh][pk.pkaddr] = undefined;
- this.uniqs[pk.hh][pk.newpkaddr] = r;
- }
- if (table.uk && table.uk.length) {
- table.uk.forEach(function(uk) {
- table.uniqs[uk.hh][uk.ukaddr] = undefined;
- table.uniqs[uk.hh][uk.newukaddr] = r;
- });
- }
-
- this.data[i] = r;
-
- // Trigger prevent functionality
- for (var tr in table.afterupdate) {
- var trigger = table.afterupdate[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid](this.data[i], r);
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
- };
-
- var res;
-
- if (!alasql.options.nocount) {
- res = 1;
- }
-
- if (cb) res = cb(res);
- return res;
-};
-
-//
-// Date functions
-//
-// (c) 2014, Andrey Gershun
-//
-
-/** Standard JavaScript data types */
-
-alasql.fn.Date = Object;
-alasql.fn.Date = Date;
-alasql.fn.Number = Number;
-alasql.fn.String = String;
-alasql.fn.Boolean = Boolean;
-
-/** Extend Object with properties */
-stdfn.EXTEND = alasql.utils.extend;
-
-stdfn.CHAR = String.fromCharCode.bind(String);
-stdfn.ASCII = function(a) {
- return a.charCodeAt(0);
-};
-
-/**
- Return first non-null argument
- See https://msdn.microsoft.com/en-us/library/ms190349.aspx
-*/
-stdfn.COALESCE = function() {
- for (var i = 0; i < arguments.length; i++) {
- if (typeof arguments[i] == 'undefined') continue;
- if (typeof arguments[i] == 'number' && isNaN(arguments[i])) continue;
- return arguments[i];
- }
- return undefined;
-};
-
-stdfn.USER = function() {
- return 'alasql';
-};
-
-stdfn.OBJECT_ID = function(objid) {
- return !!alasql.tables[objid];
-};
-
-stdfn.DATE = function(d) {
- if (/\d{8}/.test(d)) return new Date(+d.substr(0, 4), +d.substr(4, 2) - 1, +d.substr(6, 2));
- return new Date(d);
-};
-
-stdfn.NOW = function() {
- var d = new Date();
- var s =
- d.getFullYear() +
- '.' +
- ('0' + (d.getMonth() + 1)).substr(-2) +
- '.' +
- ('0' + d.getDate()).substr(-2);
- s +=
- ' ' +
- ('0' + d.getHours()).substr(-2) +
- ':' +
- ('0' + d.getMinutes()).substr(-2) +
- ':' +
- ('0' + d.getSeconds()).substr(-2);
- s += '.' + ('00' + d.getMilliseconds()).substr(-3);
- return s;
-};
-
-stdfn.GETDATE = stdfn.NOW;
-stdfn.CURRENT_TIMESTAMP = stdfn.NOW;
-
-stdfn.SECOND = function(d) {
- var d = new Date(d);
- return d.getSeconds();
-};
-
-stdfn.MINUTE = function(d) {
- var d = new Date(d);
- return d.getMinutes();
-};
-
-stdfn.HOUR = function(d) {
- var d = new Date(d);
- return d.getHours();
-};
-
-stdfn.DAYOFWEEK = stdfn.WEEKDAY = function(d) {
- var d = new Date(d);
- return d.getDay();
-};
-
-stdfn.DAY = stdfn.DAYOFMONTH = function(d) {
- var d = new Date(d);
- return d.getDate();
-};
-
-stdfn.MONTH = function(d) {
- var d = new Date(d);
- return d.getMonth() + 1;
-};
-
-stdfn.YEAR = function(d) {
- var d = new Date(d);
- return d.getFullYear();
-};
-
-var PERIODS = {
- year: 1000 * 3600 * 24 * 365,
- quarter: 1000 * 3600 * 24 * 365 / 4,
- month: 1000 * 3600 * 24 * 30,
- week: 1000 * 3600 * 24 * 7,
- day: 1000 * 3600 * 24,
- dayofyear: 1000 * 3600 * 24,
- weekday: 1000 * 3600 * 24,
- hour: 1000 * 3600,
- minute: 1000 * 60,
- second: 1000,
- millisecond: 1,
- microsecond: 0.001,
-};
-
-alasql.stdfn.DATEDIFF = function(period, d1, d2) {
- var interval = new Date(d2).getTime() - new Date(d1).getTime();
- return interval / PERIODS[period.toLowerCase()];
-};
-
-alasql.stdfn.DATEADD = function(period, interval, d) {
- var nd = new Date(d).getTime() + interval * PERIODS[period.toLowerCase()];
- return new Date(nd);
-};
-
-alasql.stdfn.INTERVAL = function(interval, period) {
- return interval * PERIODS[period.toLowerCase()];
-};
-
-alasql.stdfn.DATE_ADD = alasql.stdfn.ADDDATE = function(d, interval) {
- var nd = new Date(d).getTime() + interval;
- return new Date(nd);
-};
-
-alasql.stdfn.DATE_SUB = alasql.stdfn.SUBDATE = function(d, interval) {
- var nd = new Date(d).getTime() - interval;
- return new Date(nd);
-};
-
-/*
-//
-// DROP TABLE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.DropTable = function(params) {
- return yy.extend(this, params);
-};
-yy.DropTable.prototype.toString = function() {
- var s = 'DROP' + ' ';
- if (this.view) s += 'VIEW';
- else s += 'TABLE';
- if (this.ifexists) s += ' IF EXISTS';
- s += ' ' + this.tables.toString();
- return s;
-};
-
-// DROP TABLE
-/**
- Drop tables
- @param {string} databaseid Database id
- @param {object} params Parameters
- @param {callback} cb Callback function
- @return Number of dropped tables
- @example
- DROP TABLE one;
- DROP TABLE IF NOT EXISTS two, three;
-*/
-yy.DropTable.prototype.execute = function(databaseid, params, cb) {
- var ifexists = this.ifexists;
- var res = 0; // No tables removed
- var count = 0;
- var tlen = this.tables.length;
-
- // For each table in the list
- this.tables.forEach(function(table) {
- var db = alasql.databases[table.databaseid || databaseid];
- var tableid = table.tableid;
-
- /** @todo Test with AUTOCOMMIT flag is ON */
- /** @todo Test with IndexedDB and multiple tables */
-
- if (!ifexists || (ifexists && db.tables[tableid])) {
- if (!db.tables[tableid]) {
- if (!alasql.options.dropifnotexists) {
- throw new Error(
- "Can not drop table '" +
- table.tableid +
- "', because it does not exist in the database."
- );
- }
- } else {
- if (db.engineid /*&& alasql.options.autocommit*/) {
- alasql.engines[db.engineid].dropTable(
- table.databaseid || databaseid,
- tableid,
- ifexists,
- function(res1) {
- delete db.tables[tableid];
- res += res1;
- count++;
- if (count == tlen && cb) cb(res);
- }
- );
- } else {
- delete db.tables[tableid];
- res++;
- count++;
- if (count == tlen && cb) cb(res);
- }
- }
- } else {
- count++;
- if (count == tlen && cb) cb(res);
- }
- });
- // if(cb) res = cb(res);
- return res;
-};
-
-yy.TruncateTable = function(params) {
- return yy.extend(this, params);
-};
-yy.TruncateTable.prototype.toString = function() {
- var s = 'TRUNCATE TABLE';
- s += ' ' + this.table.toString();
- return s;
-};
-
-yy.TruncateTable.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[this.table.databaseid || databaseid];
- var tableid = this.table.tableid;
- if (db.engineid) {
- return alasql.engines[db.engineid].truncateTable(
- this.table.databaseid || databaseid,
- tableid,
- this.ifexists,
- cb
- );
- }
- if (db.tables[tableid]) {
- db.tables[tableid].data = [];
- } else {
- throw new Error('Cannot truncate table becaues it does not exist');
- }
- return cb ? cb(0) : 0;
-};
-
-/*
-//
-// CREATE VERTEX for AlaSQL
-// Date: 21.04.2015
-// (c) 2015, Andrey Gershun
-//
-*/
-
-yy.CreateVertex = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateVertex.prototype.toString = function() {
- var s = 'CREATE VERTEX ';
- if (this["class"]) {
- s += this["class"] + ' ';
- }
- if (this.sharp) {
- s += '#' + this.sharp + ' ';
- }
- if (this.sets) {
- s += this.sets.toString();
- } else if (this.content) {
- s += this.content.toString();
- } else if (this.select) {
- s += this.select.toString();
- }
-
- return s;
-};
-
-yy.CreateVertex.prototype.toJS = function(context) {
-
- var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
- // var s = '';
- return s;
-};
-
-// CREATE TABLE
-
-yy.CreateVertex.prototype.compile = function(databaseid) {
- var dbid = databaseid;
-
- // CREATE VERTEX #id
- var sharp = this.sharp;
-
- // CREATE VERTEX "Name"
- if (typeof this.name !== 'undefined') {
- var s = 'x.name=' + this.name.toJS();
- var namefn = new Function('x', s);
- }
-
- if (this.sets && this.sets.length > 0) {
- var s = this.sets
- .map(function(st) {
- return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
- })
- .join(';');
- var setfn = new Function('x,params,alasql', s);
- }
-
- // Todo: check for content, select and default
-
- var statement = function(params, cb) {
- var res;
-
- // CREATE VERTEX without parameters
- var db = alasql.databases[dbid];
- var id;
- if (typeof sharp !== 'undefined') {
- id = sharp;
- } else {
- id = db.counter++;
- }
- var vertex = {$id: id, $node: 'VERTEX'};
- db.objects[vertex.$id] = vertex;
- res = vertex;
- if (namefn) {
- namefn(vertex);
- }
- if (setfn) {
- setfn(vertex, params, alasql);
- }
-
- if (cb) {
- res = cb(res);
- }
- return res;
- };
- return statement;
-};
-
-yy.CreateEdge = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateEdge.prototype.toString = function() {
-
- var s = 'CREATE EDGE' + ' ';
- if (this["class"]) {
- s += this["class"] + ' ';
- }
- // todo: SET
- // todo: CONTENT
- // todo: SELECT
- return s;
-};
-
-yy.CreateEdge.prototype.toJS = function(context) {
- var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
- return s;
-};
-
-// CREATE TABLE
-
-yy.CreateEdge.prototype.compile = function(databaseid) {
- var dbid = databaseid;
- var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
- var tofn = new Function('params,alasql', 'var y;return ' + this.to.toJS());
-
- // CREATE VERTEX "Name"
- if (typeof this.name !== 'undefined') {
- var s = 'x.name=' + this.name.toJS();
- var namefn = new Function('x', s);
- }
-
- if (this.sets && this.sets.length > 0) {
- var s = this.sets
- .map(function(st) {
- return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
- })
- .join(';');
- var setfn = new Function('x,params,alasql', 'var y;' + s);
- }
-
- /*
- todo: handle content, select and default
- else if(this.content) {
-
- } else if(this.select) {
-
- } else {
- }
- */
-
- var statement = function(params, cb) {
- var res = 0;
- // CREATE VERTEX without parameters
- var db = alasql.databases[dbid];
- var edge = {$id: db.counter++, $node: 'EDGE'};
- var v1 = fromfn(params, alasql);
- var v2 = tofn(params, alasql);
- // Set link
- edge.$in = [v1.$id];
- edge.$out = [v2.$id];
- // Set sides
- if (v1.$out === undefined) {
- v1.$out = [];
- }
- v1.$out.push(edge.$id);
-
- if (typeof v2.$in === undefined) {
- v2.$in = [];
- }
- v2.$in.push(edge.$id);
-
- // Save in objects
- db.objects[edge.$id] = edge;
- res = edge;
- if (namefn) {
- namefn(edge);
- }
-
- if (setfn) {
- setfn(edge, params, alasql);
- }
-
- if (cb) {
- res = cb(res);
- }
-
- return res;
- };
- return statement;
-};
-
-yy.CreateGraph = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateGraph.prototype.toString = function() {
- var s = 'CREATE GRAPH' + ' ';
- if (this["class"]) {
- s += this["class"] + ' ';
- }
- return s;
-};
-
-yy.CreateGraph.prototype.execute = function(databaseid, params, cb) {
- var res = [];
- if (this.from) {
- if (alasql.from[this.from.funcid]) {
- this.graph = alasql.from[this.from.funcid.toUpperCase()];
- }
- }
-
- // stop;
- this.graph.forEach(function(g) {
- if (g.source) {
- // GREATE EDGE
- var e = {};
- if (typeof g.as !== 'undefined') {
- alasql.vars[g.as] = e;
- }
-
- if (typeof g.prop !== 'undefined') {
- // e[g.prop] = e;
- // v.$id = g.prop; // We do not create $id for edge automatically
- e.name = g.prop;
- }
- if (typeof g.sharp !== 'undefined') {
- e.$id = g.sharp;
- }
- if (typeof g.name !== 'undefined') {
- e.name = g.name;
- }
- if (typeof g["class"] !== 'undefined') {
- e.$class = g["class"];
- }
-
- var db = alasql.databases[databaseid];
- if (typeof e.$id === 'undefined') {
- e.$id = db.counter++;
- }
- e.$node = 'EDGE';
- if (typeof g.json !== 'undefined') {
- extend(
- e,
- new Function('params,alasql', 'var y;return ' + g.json.toJS())(params, alasql)
- );
- }
-
- var v1;
- if (g.source.vars) {
- var vo = alasql.vars[g.source.vars];
- if (typeof vo === 'object') {
- v1 = vo;
- } else {
- v1 = db.objects[vo];
- }
- } else {
- var av1 = g.source.sharp;
- if (typeof av1 === 'undefined') {
- av1 = g.source.prop;
- }
- v1 = alasql.databases[databaseid].objects[av1];
- if (
- typeof v1 === 'undefined' &&
- alasql.options.autovertex &&
- (typeof g.source.prop !== 'undefined' || typeof g.source.name !== 'undefined')
- ) {
- v1 = findVertex(g.source.prop || g.source.name);
- if (typeof v1 === 'undefined') {
- v1 = createVertex(g.source);
- }
- }
- }
-
- var v2;
- if (g.source.vars) {
- var vo = alasql.vars[g.target.vars];
- if (typeof vo === 'object') {
- v2 = vo;
- } else {
- v2 = db.objects[vo];
- }
- } else {
- var av2 = g.target.sharp;
- if (typeof av2 === 'undefined') {
- av2 = g.target.prop;
- }
- v2 = alasql.databases[databaseid].objects[av2];
- if (
- typeof v2 === 'undefined' &&
- alasql.options.autovertex &&
- (typeof g.target.prop !== 'undefined' || typeof g.target.name !== 'undefined')
- ) {
- v2 = findVertex(g.target.prop || g.target.name);
- if (typeof v2 === 'undefined') {
- v2 = createVertex(g.target);
- }
- }
- }
-
- // Set link
- e.$in = [v1.$id];
- e.$out = [v2.$id];
- // Set sides
- if (typeof v1.$out === 'undefined') {
- v1.$out = [];
- }
- v1.$out.push(e.$id);
- if (typeof v2.$in === 'undefined') {
- v2.$in = [];
- }
- v2.$in.push(e.$id);
-
- db.objects[e.$id] = e;
- if (typeof e.$class !== 'undefined') {
- if (typeof alasql.databases[databaseid].tables[e.$class] === 'undefined') {
- throw new Error('No such class. Pleace use CREATE CLASS');
- } else {
- // TODO - add insert()
- alasql.databases[databaseid].tables[e.$class].data.push(e);
- }
- }
-
- res.push(e.$id);
- } else {
- createVertex(g);
- }
- });
-
- if (cb) {
- res = cb(res);
- }
- return res;
-
- // Find vertex by name
- function findVertex(name) {
- var objects = alasql.databases[alasql.useid].objects;
- for (var k in objects) {
- if (objects[k].name === name) {
- return objects[k];
- }
- }
- return undefined;
- }
-
- function createVertex(g) {
- // GREATE VERTEX
- var v = {};
- if (typeof g.as !== 'undefined') {
- alasql.vars[g.as] = v;
- }
-
- if (typeof g.prop !== 'undefined') {
- // v[g.prop] = true;
- v.$id = g.prop;
- v.name = g.prop;
- }
-
- if (typeof g.sharp !== 'undefined') {
- v.$id = g.sharp;
- }
- if (typeof g.name !== 'undefined') {
- v.name = g.name;
- }
- if (typeof g["class"] !== 'undefined') {
- v.$class = g["class"];
- }
-
- var db = alasql.databases[databaseid];
- if (typeof v.$id === 'undefined') {
- v.$id = db.counter++;
- }
- v.$node = 'VERTEX';
- if (typeof g.json !== 'undefined') {
- extend(
- v,
- new Function('params,alasql', 'var y;return ' + g.json.toJS())(params, alasql)
- );
- }
- db.objects[v.$id] = v;
- if (typeof v.$class !== 'undefined') {
- if (typeof alasql.databases[databaseid].tables[v.$class] === 'undefined') {
- throw new Error('No such class. Pleace use CREATE CLASS');
- } else {
- // TODO - add insert()
- alasql.databases[databaseid].tables[v.$class].data.push(v);
- }
- }
-
- res.push(v.$id);
- return v;
- }
-};
-
-yy.CreateGraph.prototype.compile1 = function(databaseid) {
- var dbid = databaseid;
- var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
- var tofn = new Function('params,alasql', 'var y;return ' + this.to.toJS());
-
- // CREATE VERTEX "Name"
- if (typeof this.name !== 'undefined') {
- var s = 'x.name=' + this.name.toJS();
- var namefn = new Function('x', s);
- }
-
- if (this.sets && this.sets.length > 0) {
- var s = this.sets
- .map(function(st) {
- return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
- })
- .join(';');
- var setfn = new Function('x,params,alasql', 'var y;' + s);
- }
-
- // Todo: handle content, select and default
-
- var statement = function(params, cb) {
- var res = 0;
- // CREATE VERTEX without parameters
- var db = alasql.databases[dbid];
- var edge = {$id: db.counter++, $node: 'EDGE'};
- var v1 = fromfn(params, alasql);
- var v2 = tofn(params, alasql);
- // Set link
- edge.$in = [v1.$id];
- edge.$out = [v2.$id];
- // Set sides
- if (typeof v1.$out === 'undefined') {
- v1.$out = [];
- }
- v1.$out.push(edge.$id);
-
- if (typeof v2.$in === 'undefined') {
- v2.$in = [];
- }
- v2.$in.push(edge.$id);
- // Save in objects
- db.objects[edge.$id] = edge;
- res = edge;
- if (namefn) {
- namefn(edge);
- }
- if (setfn) {
- setfn(edge, params, alasql);
- }
-
- if (cb) {
- res = cb(res);
- }
- return res;
- };
- return statement;
-};
-
-/*
-//
-// ALTER TABLE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-/* global alasql yy */
-
-// ALTER TABLE table1 RENAME TO table2
-yy.AlterTable = function(params) {
- return yy.extend(this, params);
-};
-yy.AlterTable.prototype.toString = function() {
- var s = 'ALTER TABLE ' + this.table.toString();
- if (this.renameto) s += ' RENAME TO ' + this.renameto;
- return s;
-};
-
-yy.AlterTable.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[databaseid];
- db.dbversion = Date.now();
-
- if (this.renameto) {
- var oldtableid = this.table.tableid;
- var newtableid = this.renameto;
- var res = 1;
- if (db.tables[newtableid]) {
- throw new Error(
- "Can not rename a table '" +
- oldtableid +
- "' to '" +
- newtableid +
- "', because the table with this name already exists"
- );
- } else if (newtableid === oldtableid) {
- throw new Error("Can not rename a table '" + oldtableid + "' to itself");
- } else {
- db.tables[newtableid] = db.tables[oldtableid];
- delete db.tables[oldtableid];
- res = 1;
- }
- if (cb) cb(res);
- return res;
- } else if (this.addcolumn) {
- db = alasql.databases[this.table.databaseid || databaseid];
- db.dbversion++;
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var columnid = this.addcolumn.columnid;
- if (table.xcolumns[columnid]) {
- throw new Error(
- 'Cannot add column "' +
- columnid +
- '", because it already exists in the table "' +
- tableid +
- '"'
- );
- }
-
- var col = {
- columnid: columnid,
- dbtypeid: this.dbtypeid,
- dbsize: this.dbsize,
- dbprecision: this.dbprecision,
- dbenum: this.dbenum,
- defaultfns: null, // TODO defaultfns!!!
- };
-
- var defaultfn = function() {};
-
- table.columns.push(col);
- table.xcolumns[columnid] = col;
-
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
-
- table.data[i][columnid] = defaultfn();
- }
-
- // TODO
- return cb ? cb(1) : 1;
- } else if (this.modifycolumn) {
- var db = alasql.databases[this.table.databaseid || databaseid];
- db.dbversion++;
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var columnid = this.modifycolumn.columnid;
-
- if (!table.xcolumns[columnid]) {
- throw new Error(
- 'Cannot modify column "' +
- columnid +
- '", because it was not found in the table "' +
- tableid +
- '"'
- );
- }
-
- col = table.xcolumns[columnid];
- col.dbtypeid = this.dbtypeid;
- col.dbsize = this.dbsize;
- col.dbprecision = this.dbprecision;
- col.dbenum = this.dbenum;
-
- // TODO
- return cb ? cb(1) : 1;
- } else if (this.renamecolumn) {
- var db = alasql.databases[this.table.databaseid || databaseid];
- db.dbversion++;
-
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var columnid = this.renamecolumn;
- var tocolumnid = this.to;
-
- var col;
- if (!table.xcolumns[columnid]) {
- throw new Error(
- 'Column "' + columnid + '" is not found in the table "' + tableid + '"'
- );
- }
- if (table.xcolumns[tocolumnid]) {
- throw new Error(
- 'Column "' + tocolumnid + '" already exists in the table "' + tableid + '"'
- );
- }
-
- if (columnid != tocolumnid) {
- for (var j = 0; j < table.columns.length; j++) {
- if (table.columns[j].columnid == columnid) {
- table.columns[j].columnid = tocolumnid;
- }
- }
-
- table.xcolumns[tocolumnid] = table.xcolumns[columnid];
- delete table.xcolumns[columnid];
-
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
-
- table.data[i][tocolumnid] = table.data[i][columnid];
- delete table.data[i][columnid];
- }
- return table.data.length;
- } else {
- return cb ? cb(0) : 0;
- }
- } else if (this.dropcolumn) {
- var db = alasql.databases[this.table.databaseid || databaseid];
- db.dbversion++;
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var columnid = this.dropcolumn;
-
- var found = false;
- for (var j = 0; j < table.columns.length; j++) {
- if (table.columns[j].columnid == columnid) {
- found = true;
- table.columns.splice(j, 1);
- break;
- }
- }
-
- if (!found) {
- throw new Error(
- 'Cannot drop column "' +
- columnid +
- '", because it was not found in the table "' +
- tableid +
- '"'
- );
- }
-
- delete table.xcolumns[columnid];
-
- for (i = 0, ilen = table.data.length; i < ilen; i++) {
- delete table.data[i][columnid];
- }
- return cb ? cb(table.data.length) : table.data.length;
- } else {
- throw Error('Unknown ALTER TABLE method');
- }
-};
-
-/*
-//
-// CREATE TABLE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.CreateIndex = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateIndex.prototype.toString = function() {
- var s = 'CREATE';
- if (this.unique) s += ' UNIQUE';
- s += ' INDEX ' + this.indexid + ' ON ' + this.table.toString();
- s += '(' + this.columns.toString() + ')';
- return s;
-};
-
-// CREATE TABLE
-yy.CreateIndex.prototype.execute = function(databaseid, params, cb) {
- // var self = this;
- var db = alasql.databases[databaseid];
- var tableid = this.table.tableid;
- var table = db.tables[tableid];
- var indexid = this.indexid;
- db.indices[indexid] = tableid;
-
- var rightfns = this.columns
- .map(function(expr) {
- return expr.expression.toJS('r', '');
- })
- .join("+'`'+");
-
- var rightfn = new Function('r,params,alasql', 'return ' + rightfns);
-
- if (this.unique) {
- table.uniqdefs[indexid] = {
- rightfns: rightfns,
- };
- var ux = (table.uniqs[indexid] = {});
- if (table.data.length > 0) {
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
- var addr = rightfns(table.data[i]);
- if (!ux[addr]) {
- ux[addr] = {num: 0};
- }
- ux[addr].num++;
- }
- }
- } else {
- var hh = hash(rightfns);
- table.inddefs[indexid] = {rightfns: rightfns, hh: hh};
- table.indices[hh] = {};
-
- var ix = (table.indices[hh] = {});
- if (table.data.length > 0) {
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
- var addr = rightfn(table.data[i], params, alasql);
- if (!ix[addr]) {
- ix[addr] = [];
- }
- ix[addr].push(table.data[i]);
- }
- }
- }
- var res = 1;
- if (cb) res = cb(res);
- return res;
-};
-
-yy.Reindex = function(params) {
- return yy.extend(this, params);
-};
-yy.Reindex.prototype.toString = function() {
- var s = 'REINDEX ' + this.indexid;
- return s;
-};
-
-// CREATE TABLE
-yy.Reindex.prototype.execute = function(databaseid, params, cb) {
- // var self = this;
- var db = alasql.databases[databaseid];
- var indexid = this.indexid;
-
- var tableid = db.indices[indexid];
- var table = db.tables[tableid];
- table.indexColumns();
- var res = 1;
- if (cb) res = cb(res);
- return res;
-};
-
-/*
-//
-// DROP TABLE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.DropIndex = function(params) {
- return yy.extend(this, params);
-};
-yy.DropIndex.prototype.toString = function() {
- return 'DROP INDEX' + this.indexid;
-};
-
-// DROP TABLE
-yy.DropIndex.prototype.compile = function(db) {
- var indexid = this.indexid;
- return function() {
- return 1;
- };
-};
-
-/*
-//
-// WITH SELECT for Alasql.js
-// Date: 11.01.2015
-// (c) 2015, Andrey Gershun
-//
-*/
-
-yy.WithSelect = function(params) {
- return yy.extend(this, params);
-};
-yy.WithSelect.prototype.toString = function() {
- var s = 'WITH ';
- s +=
- this.withs
- .map(function(w) {
- return w.name + ' AS (' + w.select.toString() + ')';
- })
- .join(',') + ' ';
- s += this.select.toString();
- return s;
-};
-
-yy.WithSelect.prototype.execute = function(databaseid, params, cb) {
- var self = this;
- // Create temporary tables
- var savedTables = [];
- self.withs.forEach(function(w) {
- savedTables.push(alasql.databases[databaseid].tables[w.name]);
- var tb = (alasql.databases[databaseid].tables[w.name] = new Table({tableid: w.name}));
- tb.data = w.select.execute(databaseid, params);
- });
-
- var res = 1;
- res = this.select.execute(databaseid, params, function(data) {
- // Clear temporary tables
- // setTimeout(function(){
- self.withs.forEach(function(w, idx) {
- if (savedTables[idx]) alasql.databases[databaseid].tables[w.name] = savedTables[idx];
- else delete alasql.databases[databaseid].tables[w.name];
- });
- // },0);
-
- if (cb) data = cb(data);
- return data;
- });
- return res;
-};
-
-/*
-//
-// IF for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.If = function(params) {
- return yy.extend(this, params);
-};
-yy.If.prototype.toString = function() {
- var s = 'IF' + ' ';
- s += this.expression.toString();
- s += ' ' + this.thenstat.toString();
- if (this.elsestat) s += ' ELSE ' + this.thenstat.toString();
- return s;
-};
-
-// CREATE TABLE
-
-yy.If.prototype.execute = function(databaseid, params, cb) {
- var res;
-
- var fn = new Function(
- 'params,alasql,p',
- 'var y;return ' + this.expression.toJS('({})', '', null)
- ).bind(this);
-
- if (fn(params, alasql)) res = this.thenstat.execute(databaseid, params, cb);
- else {
- if (this.elsestat) res = this.elsestat.execute(databaseid, params, cb);
- else {
- if (cb) res = cb(res);
- }
- }
- // else res = this.elsestat.execute(databaseid,params,cb,scope);
- return res;
-};
-
-/*
-//
-// CREATE VIEW for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.While = function(params) {
- return yy.extend(this, params);
-};
-yy.While.prototype.toString = function() {
- var s = 'WHILE ';
- s += this.expression.toString();
- s += ' ' + this.loopstat.toString();
- return s;
-};
-
-yy.While.prototype.execute = function(databaseid, params, cb) {
- var self = this;
- var res = [];
-
- var fn = new Function('params,alasql,p', 'var y;return ' + this.expression.toJS());
-
- if (cb) {
- var first = false;
- loop();
- function loop(data) {
- if (first) {
- res.push(data);
- } else {
- first = true;
- }
- setTimeout(function() {
- if (fn(params, alasql)) {
- self.loopstat.execute(databaseid, params, loop);
- } else {
- res = cb(res);
- }
- }, 0);
- }
- } else {
- while (fn(params, alasql)) {
- var res1 = self.loopstat.execute(databaseid, params);
- res.push(res1);
- }
- }
- return res;
-};
-
-yy.Break = function(params) {
- return yy.extend(this, params);
-};
-yy.Break.prototype.toString = function() {
- var s = 'BREAK';
- return s;
-};
-
-yy.Break.prototype.execute = function(databaseid, params, cb, scope) {
- var res = 1;
- if (cb) res = cb(res);
- return res;
-};
-
-yy.Continue = function(params) {
- return yy.extend(this, params);
-};
-yy.Continue.prototype.toString = function() {
- var s = 'CONTINUE';
- return s;
-};
-
-yy.Continue.prototype.execute = function(databaseid, params, cb, scope) {
- var res = 1;
- if (cb) res = cb(res);
- return res;
-};
-
-yy.BeginEnd = function(params) {
- return yy.extend(this, params);
-};
-yy.BeginEnd.prototype.toString = function() {
- var s = 'BEGIN ' + this.statements.toString() + ' END';
- return s;
-};
-
-yy.BeginEnd.prototype.execute = function(databaseid, params, cb, scope) {
- var self = this;
- var res = [];
-
- var idx = 0;
- runone();
- function runone() {
- self.statements[idx].execute(databaseid, params, function(data) {
- res.push(data);
- idx++;
- if (idx < self.statements.length) return runone();
- if (cb) res = cb(res);
- });
- }
- return res;
-};
-
-/*
-//
-// INSERT for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/* global yy alasql*/
-yy.Insert = function(params) {
- return yy.extend(this, params);
-};
-yy.Insert.prototype.toString = function() {
- var s = 'INSERT ';
- if (this.orreplace) s += 'OR REPLACE ';
- if (this.replaceonly) s = 'REPLACE ';
- s += 'INTO ' + this.into.toString();
- if (this.columns) s += '(' + this.columns.toString() + ')';
- if (this.values) s += ' VALUES ' + this.values.toString();
- if (this.select) s += ' ' + this.select.toString();
- return s;
-};
-
-yy.Insert.prototype.toJS = function(context, tableid, defcols) {
-
- // if(this.expression.reduced) return 'true';
- // return this.expression.toJS(context, tableid, defcols);
-
- // var s = 'this.queriesdata['+(this.queriesidx-1)+'][0]';
-
- var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
-
- return s;
-};
-
-yy.Insert.prototype.compile = function(databaseid) {
- var self = this;
- databaseid = self.into.databaseid || databaseid;
- var db = alasql.databases[databaseid];
-
- var tableid = self.into.tableid;
- var table = db.tables[tableid];
-
- if (!table) {
- throw "Table '" + tableid + "' could not be found";
- }
-
- // Check, if this dirty flag is required
- var s = '';
- var sw = '';
- var s = "db.tables['" + tableid + "'].dirty=true;";
- var s3 = 'var a,aa=[],x;';
-
- var s33;
-
- // INSERT INTO table VALUES
- if (this.values) {
- if (this.exists) {
- this.existsfn = this.exists.map(function(ex) {
- var nq = ex.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
- if (this.queries) {
- this.queriesfn = this.queries.map(function(q) {
- var nq = q.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
-
- self.values.forEach(function(values) {
- var ss = [];
-
- // s += 'db.tables[\''+tableid+'\'].data.push({';
-
- // s += '';
- if (self.columns) {
- self.columns.forEach(function(col, idx) {
-
- // ss.push(col.columnid +':'+ self.values[idx].value.toString());
-
- // if(rec[f.name.value] == "NULL") rec[f.name.value] = undefined;
-
- // if(table.xflds[f.name.value].dbtypeid == "INT") rec[f.name.value] = +rec[f.name.value]|0;
- // else if(table.xflds[f.name.value].dbtypeid == "FLOAT") rec[f.name.value] = +rec[f.name.value];
- var q = "'" + col.columnid + "':";
- if (table.xcolumns && table.xcolumns[col.columnid]) {
- if (
- ['INT', 'FLOAT', 'NUMBER', 'MONEY'].indexOf(
- table.xcolumns[col.columnid].dbtypeid
- ) >= 0
- ) {
- //q += ''
- q += '(x=' + values[idx].toJS() + ',x==undefined?undefined:+x)';
- } else if (alasql.fn[table.xcolumns[col.columnid].dbtypeid]) {
- q += '(new ' + table.xcolumns[col.columnid].dbtypeid + '(';
- q += values[idx].toJS();
- q += '))';
- } else {
- q += values[idx].toJS();
- }
- } else {
- q += values[idx].toJS();
- }
- ss.push(q);
- });
- } else {
- // var table = db.tables[tableid];
-
- if (Array.isArray(values) && table.columns && table.columns.length > 0) {
- table.columns.forEach(function(col, idx) {
- var q = "'" + col.columnid + "':";
- // var val = values[idx].toJS();
-
- if (['INT', 'FLOAT', 'NUMBER', 'MONEY'].indexOf(col.dbtypeid) >= 0) {
- q += '+' + values[idx].toJS();
- } else if (alasql.fn[col.dbtypeid]) {
- q += '(new ' + col.dbtypeid + '(';
- q += values[idx].toJS();
- q += '))';
- } else {
- q += values[idx].toJS();
- }
-
- ss.push(q);
-
- });
- } else {
-
- // sw = 'var w='+JSONtoJS(values)+';for(var k in w){r[k]=w[k]};';
- sw = JSONtoJS(values);
- }
- }
-
- if (db.tables[tableid].defaultfns) {
- ss.unshift(db.tables[tableid].defaultfns);
- }
- if (sw) {
- s += 'a=' + sw + ';';
- } else {
- s += 'a={' + ss.join(',') + '};';
- }
-
- // If this is a class
- if (db.tables[tableid].isclass) {
- s += "var db=alasql.databases['" + databaseid + "'];";
- s += 'a.$class="' + tableid + '";';
- s += 'a.$id=db.counter++;';
- s += 'db.objects[a.$id]=a;';
- }
- // s += 'db.tables[\''+tableid+'\'].insert(r);';
- if (db.tables[tableid].insert) {
- s += "var db=alasql.databases['" + databaseid + "'];";
- s +=
- "db.tables['" +
- tableid +
- "'].insert(a," +
- (self.orreplace ? 'true' : 'false') +
- ');';
- } else {
- s += 'aa.push(a);';
- }
- });
-
- s33 = s3 + s;
-
- if (db.tables[tableid].insert) {
- // s += 'alasql.databases[\''+databaseid+'\'].tables[\''+tableid+'\'].insert(r);';
- } else {
- s +=
- "alasql.databases['" +
- databaseid +
- "'].tables['" +
- tableid +
- "'].data=" +
- "alasql.databases['" +
- databaseid +
- "'].tables['" +
- tableid +
- "'].data.concat(aa);";
- }
-
- if (db.tables[tableid].insert) {
- if (db.tables[tableid].isclass) {
- s += 'return a.$id;';
- } else {
- s += 'return ' + self.values.length;
- }
- } else {
- s += 'return ' + self.values.length;
- }
-
- var insertfn = new Function('db, params, alasql', 'var y;' + s3 + s).bind(this);
-
- // INSERT INTO table SELECT
- } else if (this.select) {
- this.select.modifier = 'RECORDSET';
- var selectfn = this.select.compile(databaseid);
- if (db.engineid && alasql.engines[db.engineid].intoTable) {
- var statement = function(params, cb) {
- var aa = selectfn(params);
- var res = alasql.engines[db.engineid].intoTable(
- db.databaseid,
- tableid,
- aa.data,
- null,
- cb
- );
- return res;
- };
- return statement;
- } else {
-
- var defaultfns = 'return alasql.utils.extend(r,{' + table.defaultfns + '})';
- var defaultfn = new Function('r,db,params,alasql', defaultfns);
- var insertfn = function(db, params, alasql) {
- var res = selectfn(params).data;
- if (db.tables[tableid].insert) {
- // If insert() function exists (issue #92)
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- var r = cloneDeep(res[i]);
- defaultfn(r, db, params, alasql);
- db.tables[tableid].insert(r, self.orreplace);
- }
- } else {
- db.tables[tableid].data = db.tables[tableid].data.concat(res);
- }
- if (alasql.options.nocount) return;
- else return res.length;
- };
- }
- } else if (this["default"]) {
- var insertfns =
- "db.tables['" + tableid + "'].data.push({" + table.defaultfns + '});return 1;';
- var insertfn = new Function('db,params,alasql', insertfns);
- } else {
- throw new Error('Wrong INSERT parameters');
- }
-
- if (db.engineid && alasql.engines[db.engineid].intoTable && alasql.options.autocommit) {
- var statement = function(params, cb) {
- var aa = new Function('db,params', 'var y;' + s33 + 'return aa;')(db, params);
-
- var res = alasql.engines[db.engineid].intoTable(db.databaseid, tableid, aa, null, cb);
- // if(cb) cb(res);
- return res;
- };
- } else {
- var statement = function(params, cb) {
-
- var db = alasql.databases[databaseid];
-
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].loadTableData(databaseid, tableid);
- }
-
- var res = insertfn(db, params, alasql);
-
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].saveTableData(databaseid, tableid);
- }
- // var res = insertfn(db, params);
- if (alasql.options.nocount) res = undefined;
- if (cb) cb(res);
- return res;
- };
- }
-
- return statement;
-};
-
-yy.Insert.prototype.execute = function(databaseid, params, cb) {
- return this.compile(databaseid)(params, cb);
- // throw new Error('Insert statement is should be compiled')
-};
-
-/*
-//
-// TRIGGER for Alasql.js
-// Date: 29.12.2015
-//
-*/
-
-yy.CreateTrigger = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateTrigger.prototype.toString = function() {
- var s = 'CREATE TRIGGER ' + this.trigger + ' ';
- if (this.when) s += this.when + ' ';
- s += this.action + ' ON ';
- if (this.table.databaseid) s += this.table.databaseid + '.';
- s += this.table.tableid + ' ';
- s += this.statement.toString();
- return s;
-};
-
-yy.CreateTrigger.prototype.execute = function(databaseid, params, cb) {
- var res = 1; // No tables removed
- var triggerid = this.trigger;
- databaseid = this.table.databaseid || databaseid;
- var db = alasql.databases[databaseid];
- var tableid = this.table.tableid;
-
- var trigger = {
- action: this.action,
- when: this.when,
- statement: this.statement,
- funcid: this.funcid,
- };
-
- db.triggers[triggerid] = trigger;
- if (trigger.action == 'INSERT' && trigger.when == 'BEFORE') {
- db.tables[tableid].beforeinsert[triggerid] = trigger;
- } else if (trigger.action == 'INSERT' && trigger.when == 'AFTER') {
- db.tables[tableid].afterinsert[triggerid] = trigger;
- } else if (trigger.action == 'INSERT' && trigger.when == 'INSTEADOF') {
- db.tables[tableid].insteadofinsert[triggerid] = trigger;
- } else if (trigger.action == 'DELETE' && trigger.when == 'BEFORE') {
- db.tables[tableid].beforedelete[triggerid] = trigger;
- } else if (trigger.action == 'DELETE' && trigger.when == 'AFTER') {
- db.tables[tableid].afterdelete[triggerid] = trigger;
- } else if (trigger.action == 'DELETE' && trigger.when == 'INSTEADOF') {
- db.tables[tableid].insteadofdelete[triggerid] = trigger;
- } else if (trigger.action == 'UPDATE' && trigger.when == 'BEFORE') {
- db.tables[tableid].beforeupdate[triggerid] = trigger;
- } else if (trigger.action == 'UPDATE' && trigger.when == 'AFTER') {
- db.tables[tableid].afterupdate[triggerid] = trigger;
- } else if (trigger.action == 'UPDATE' && trigger.when == 'INSTEADOF') {
- db.tables[tableid].insteadofupdate[triggerid] = trigger;
- }
-
- if (cb) res = cb(res);
- return res;
-};
-
-yy.DropTrigger = function(params) {
- return yy.extend(this, params);
-};
-yy.DropTrigger.prototype.toString = function() {
- var s = 'DROP TRIGGER ' + this.trigger;
- return s;
-};
-
-/**
- Drop trigger
- @param {string} databaseid Database id
- @param {object} params Parameters
- @param {callback} cb Callback function
- @return Number of dropped triggers
- @example
- DROP TRIGGER one;
-*/
-yy.DropTrigger.prototype.execute = function(databaseid, params, cb) {
- var res = 0; // No tables removed
- var db = alasql.databases[databaseid];
- var triggerid = this.trigger;
- // For each table in the list
- var tableid = db.triggers[triggerid];
- if (tableid) {
- res = 1;
- delete db.tables[tableid].beforeinsert[triggerid];
- delete db.tables[tableid].afterinsert[triggerid];
- delete db.tables[tableid].insteadofinsert[triggerid];
- delete db.tables[tableid].beforedelte[triggerid];
- delete db.tables[tableid].afterdelete[triggerid];
- delete db.tables[tableid].insteadofdelete[triggerid];
- delete db.tables[tableid].beforeupdate[triggerid];
- delete db.tables[tableid].afterupdate[triggerid];
- delete db.tables[tableid].insteadofupdate[triggerid];
- delete db.triggers[triggerid];
- } else {
- throw new Error('Trigger not found');
- }
- if (cb) res = cb(res);
- return res;
-};
-
-/*
-//
-// DELETE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Delete = function(params) {
- return yy.extend(this, params);
-};
-yy.Delete.prototype.toString = function() {
- var s = 'DELETE FROM ' + this.table.toString();
- if (this.where) s += ' WHERE ' + this.where.toString();
- return s;
-};
-
-yy.Delete.prototype.compile = function(databaseid) {
-
- databaseid = this.table.databaseid || databaseid;
- var tableid = this.table.tableid;
- var statement;
- var db = alasql.databases[databaseid];
-
- if (this.where) {
-
- // this.query = {};
-
- if (this.exists) {
- this.existsfn = this.exists.map(function(ex) {
- var nq = ex.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
- if (this.queries) {
- this.queriesfn = this.queries.map(function(q) {
- var nq = q.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
-
- // try {
-
- // var query = {};
-
- var wherefn = new Function(
- 'r,params,alasql',
- 'var y;return (' + this.where.toJS('r', '') + ')'
- ).bind(this);
-
- statement = function(params, cb) {
- if (db.engineid && alasql.engines[db.engineid].deleteFromTable) {
- return alasql.engines[db.engineid].deleteFromTable(
- databaseid,
- tableid,
- wherefn,
- params,
- cb
- );
- }
-
- if (alasql.options.autocommit && db.engineid && db.engineid == 'LOCALSTORAGE') {
- alasql.engines[db.engineid].loadTableData(databaseid, tableid);
- }
-
- var table = db.tables[tableid];
- // table.dirty = true;
- var orignum = table.data.length;
-
- var newtable = [];
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
- if (wherefn(table.data[i], params, alasql)) {
- // Check for transaction - if it is not possible then return all back
- if (table["delete"]) {
- table["delete"](i, params, alasql);
- } else {
- // Simply do not push
- }
- } else newtable.push(table.data[i]);
- }
- // table.data = table.data.filter(function(r){return !;});
- table.data = newtable;
-
- // Trigger prevent functionality
- for (var tr in table.afterdelete) {
- var trigger = table.afterdelete[tr];
- if (trigger) {
- if (trigger.funcid) {
- alasql.fn[trigger.funcid]();
- } else if (trigger.statement) {
- trigger.statement.execute(databaseid);
- }
- }
- }
-
- var res = orignum - table.data.length;
- if (alasql.options.autocommit && db.engineid && db.engineid == 'LOCALSTORAGE') {
- alasql.engines[db.engineid].saveTableData(databaseid, tableid);
- }
-
- if (cb) cb(res);
- return res;
- };
- // .bind(query);
-
- // if(!this.queries) return;
- // query.queriesfn = this.queries.map(function(q) {
- // return q.compile(alasql.useid);
- // });
- } else {
- statement = function(params, cb) {
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].loadTableData(databaseid, tableid);
- }
-
- var table = db.tables[tableid];
- table.dirty = true;
- var orignum = db.tables[tableid].data.length;
- //table.deleteall();
- // Delete all records from the array
- db.tables[tableid].data.length = 0;
-
- // Reset PRIMARY KEY and indexes
- for (var ix in db.tables[tableid].uniqs) {
- db.tables[tableid].uniqs[ix] = {};
- }
-
- for (var ix in db.tables[tableid].indices) {
- db.tables[tableid].indices[ix] = {};
- }
-
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].saveTableData(databaseid, tableid);
- }
-
- if (cb) cb(orignum);
- return orignum;
- };
- }
-
- return statement;
-};
-
-yy.Delete.prototype.execute = function(databaseid, params, cb) {
- return this.compile(databaseid)(params, cb);
-};
-
-/*
-//
-// UPDATE for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/* global yy alasql */
-
-yy.Update = function(params) {
- return yy.extend(this, params);
-};
-yy.Update.prototype.toString = function() {
- var s = 'UPDATE ' + this.table.toString();
- if (this.columns) s += ' SET ' + this.columns.toString();
- if (this.where) s += ' WHERE ' + this.where.toString();
- return s;
-};
-
-yy.SetColumn = function(params) {
- return yy.extend(this, params);
-};
-yy.SetColumn.prototype.toString = function() {
- return this.column.toString() + '=' + this.expression.toString();
-};
-
-yy.Update.prototype.compile = function(databaseid) {
-
- databaseid = this.table.databaseid || databaseid;
- var tableid = this.table.tableid;
-
- if (this.where) {
- if (this.exists) {
- this.existsfn = this.exists.map(function(ex) {
- var nq = ex.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
- if (this.queries) {
- this.queriesfn = this.queries.map(function(q) {
- var nq = q.compile(databaseid);
- nq.query.modifier = 'RECORDSET';
- return nq;
- });
- }
-
- var wherefn = new Function(
- 'r,params,alasql',
- 'var y;return ' + this.where.toJS('r', '')
- ).bind(this);
- }
-
- // Construct update function
- var s = alasql.databases[databaseid].tables[tableid].onupdatefns || '';
- s += ';';
- this.columns.forEach(function(col) {
- s += "r['" + col.column.columnid + "']=" + col.expression.toJS('r', '') + ';';
- });
-
- var assignfn = new Function('r,params,alasql', 'var y;' + s);
-
- var statement = function(params, cb) {
- var db = alasql.databases[databaseid];
-
- if (db.engineid && alasql.engines[db.engineid].updateTable) {
-
- return alasql.engines[db.engineid].updateTable(
- databaseid,
- tableid,
- assignfn,
- wherefn,
- params,
- cb
- );
- }
-
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].loadTableData(databaseid, tableid);
- }
-
- var table = db.tables[tableid];
- if (!table) {
- throw new Error("Table '" + tableid + "' not exists");
- }
- // table.dirty = true;
- var numrows = 0;
- for (var i = 0, ilen = table.data.length; i < ilen; i++) {
- if (!wherefn || wherefn(table.data[i], params, alasql)) {
- if (table.update) {
- table.update(assignfn, i, params);
- } else {
- assignfn(table.data[i], params, alasql);
- }
- numrows++;
- }
- }
-
- if (alasql.options.autocommit && db.engineid) {
- alasql.engines[db.engineid].saveTableData(databaseid, tableid);
- }
-
- if (cb) cb(numrows);
- return numrows;
- };
- return statement;
-};
-
-yy.Update.prototype.execute = function(databaseid, params, cb) {
- return this.compile(databaseid)(params, cb);
-};
-
-/*
-//
-// SET for Alasql.js
-// Date: 01.12.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/* global alasql, yy */
-
-yy.Merge = function(params) {
- return yy.extend(this, params);
-};
-yy.Merge.prototype.toString = function() {
- var s = 'MERGE ';
- s += this.into.tableid + ' ';
- if (this.into.as) s += 'AS ' + this.into.as + ' ';
- s += 'USING ' + this.using.tableid + ' ';
- if (this.using.as) s += 'AS ' + this.using.as + ' ';
- s += 'ON ' + this.on.toString() + ' ';
- this.matches.forEach(function(m) {
- s += 'WHEN ';
- if (!m.matched) s += 'NOT ';
- s += 'MATCHED ';
- if (m.bytarget) s += 'BY TARGET ';
- if (m.bysource) s += 'BY SOURCE ';
- if (m.expr) s += 'AND' + ' ' + m.expr.toString() + ' ';
- s += 'THEN ';
- if (m.action["delete"]) s += 'DELETE ';
- if (m.action.insert) {
- s += 'INSERT ';
- if (m.action.columns) s += '(' + m.action.columns.toString() + ') ';
- if (m.action.values) s += 'VALUES (' + m.action.values.toString() + ') ';
- if (m.action.defaultvalues) s += 'DEFAULT VALUES ';
- }
- if (m.action.update) {
- s += 'UPDATE ';
- s +=
- m.action.update
- .map(function(u) {
- return u.toString();
- })
- .join(',') + ' ';
- }
- });
-
- return s;
-};
-
-yy.Merge.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
-
- if (cb) res = cb(res);
- return res;
-};
-
-/*
-//
-// UPDATE for Alasql.js
-// Date: 03.11.2014
-// Modified: 16.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/* global yy alasql */
-
-// CREATE DATABASE databaseid
-yy.CreateDatabase = function(params) {
- return yy.extend(this, params);
-};
-yy.CreateDatabase.prototype.toString = function() {
- var s = 'CREATE';
- if (this.engineid) s += ' ' + this.engineid;
- s += ' DATABASE';
- if (this.ifnotexists) s += ' IF NOT EXISTS';
- s += ' ' + this.databaseid;
- if (this.args && this.args.length > 0) {
- s +=
- '(' +
- this.args
- .map(function(arg) {
- return arg.toString();
- })
- .join(', ') +
- ')';
- }
- if (this.as) s += ' AS ' + this.as;
- return s;
-};
-//yy.CreateDatabase.prototype.compile = returnUndefined;
-yy.CreateDatabase.prototype.execute = function(databaseid, params, cb) {
- var args;
- if (this.args && this.args.length > 0) {
- args = this.args.map(function(arg) {
-
- return new Function('params,alasql', 'var y;return ' + arg.toJS())(params, alasql);
- });
- }
- if (this.engineid) {
- var res = alasql.engines[this.engineid].createDatabase(
- this.databaseid,
- this.args,
- this.ifnotexists,
- this.as,
- cb
- );
- return res;
- } else {
- var dbid = this.databaseid;
- if (alasql.databases[dbid]) {
- throw new Error("Database '" + dbid + "' already exists");
- }
- var a = new alasql.Database(dbid);
- var res = 1;
- if (cb) return cb(res);
- return res;
- }
-};
-
-// CREATE DATABASE databaseid
-yy.AttachDatabase = function(params) {
- return yy.extend(this, params);
-};
-yy.AttachDatabase.prototype.toString = function(args) {
- var s = 'ATTACH';
- if (this.engineid) s += ' ' + this.engineid;
- s += ' DATABASE' + ' ' + this.databaseid;
- // TODO add params
- if (args) {
- s += '(';
- if (args.length > 0) {
- s += args
- .map(function(arg) {
- return arg.toString();
- })
- .join(', ');
- }
- s += ')';
- }
- if (this.as) s += ' AS' + ' ' + this.as;
- return s;
-};
-//yy.CreateDatabase.prototype.compile = returnUndefined;
-yy.AttachDatabase.prototype.execute = function(databaseid, params, cb) {
- if (!alasql.engines[this.engineid]) {
- throw new Error('Engine "' + this.engineid + '" is not defined.');
- }
- var res = alasql.engines[this.engineid].attachDatabase(
- this.databaseid,
- this.as,
- this.args,
- params,
- cb
- );
- return res;
-};
-
-// CREATE DATABASE databaseid
-yy.DetachDatabase = function(params) {
- return yy.extend(this, params);
-};
-yy.DetachDatabase.prototype.toString = function() {
- var s = 'DETACH';
- s += ' DATABASE' + ' ' + this.databaseid;
- return s;
-};
-//yy.CreateDatabase.prototype.compile = returnUndefined;
-yy.DetachDatabase.prototype.execute = function(databaseid, params, cb) {
- if (!alasql.databases[this.databaseid].engineid) {
- throw new Error(
- 'Cannot detach database "' + this.engineid + '", because it was not attached.'
- );
- }
- var res;
-
- var dbid = this.databaseid;
-
- if (dbid === alasql.DEFAULTDATABASEID) {
- throw new Error('Drop of default database is prohibited');
- }
-
- if (!alasql.databases[dbid]) {
- if (!this.ifexists) {
- throw new Error("Database '" + dbid + "' does not exist");
- } else {
- res = 0;
- }
- } else {
- delete alasql.databases[dbid];
- if (dbid === alasql.useid) {
- alasql.use();
- }
- res = 1;
- }
- if (cb) cb(res);
- return res;
- // var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, cb);
- // return res;
-};
-
-// USE DATABSE databaseid
-// USE databaseid
-yy.UseDatabase = function(params) {
- return yy.extend(this, params);
-};
-yy.UseDatabase.prototype.toString = function() {
- return 'USE' + ' ' + 'DATABASE' + ' ' + this.databaseid;
-};
-//yy.UseDatabase.prototype.compile = returnUndefined;
-yy.UseDatabase.prototype.execute = function(databaseid, params, cb) {
- var dbid = this.databaseid;
- if (!alasql.databases[dbid]) {
- throw new Error("Database '" + dbid + "' does not exist");
- }
- alasql.use(dbid);
- var res = 1;
- if (cb) cb(res);
- return res;
-};
-
-// DROP DATABASE databaseid
-yy.DropDatabase = function(params) {
- return yy.extend(this, params);
-};
-yy.DropDatabase.prototype.toString = function() {
- var s = 'DROP';
- if (this.ifexists) s += ' IF EXISTS';
- s += ' DATABASE ' + this.databaseid;
- return s;
-};
-//yy.DropDatabase.prototype.compile = returnUndefined;
-yy.DropDatabase.prototype.execute = function(databaseid, params, cb) {
- if (this.engineid) {
- return alasql.engines[this.engineid].dropDatabase(this.databaseid, this.ifexists, cb);
- }
- var res;
-
- var dbid = this.databaseid;
-
- if (dbid === alasql.DEFAULTDATABASEID) {
- throw new Error('Drop of default database is prohibited');
- }
- if (!alasql.databases[dbid]) {
- if (!this.ifexists) {
- throw new Error("Database '" + dbid + "' does not exist");
- } else {
- res = 0;
- }
- } else {
- if (alasql.databases[dbid].engineid) {
- throw new Error(
- "Cannot drop database '" + dbid + "', because it is attached. Detach it."
- );
- }
-
- delete alasql.databases[dbid];
- if (dbid === alasql.useid) {
- alasql.use();
- }
- res = 1;
- }
- if (cb) cb(res);
- return res;
-};
-
-/*
-//
-// SET for Alasql.js
-// Date: 01.12.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Declare = function(params) {
- return yy.extend(this, params);
-};
-yy.Declare.prototype.toString = function() {
- var s = 'DECLARE ';
- if (this.declares && this.declares.length > 0) {
- s = this.declares
- .map(function(declare) {
- var s = '';
- s += '@' + declare.variable + ' ';
- s += declare.dbtypeid;
- if (this.dbsize) {
- s += '(' + this.dbsize;
- if (this.dbprecision) {
- s += ',' + this.dbprecision;
- }
- s += ')';
- }
- if (declare.expression) {
- s += ' = ' + declare.expression.toString();
- }
- return s;
- })
- .join(',');
- }
- return s;
-};
-
-yy.Declare.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
- if (this.declares && this.declares.length > 0) {
- this.declares.map(function(declare) {
- var dbtypeid = declare.dbtypeid;
- if (!alasql.fn[dbtypeid]) {
- dbtypeid = dbtypeid.toUpperCase();
- }
- alasql.declares[declare.variable] = {
- dbtypeid: dbtypeid,
- dbsize: declare.dbsize,
- dbprecision: declare.dbprecision,
- };
-
- // Set value
- if (declare.expression) {
-
- alasql.vars[declare.variable] = new Function(
- 'params,alasql',
- 'return ' + declare.expression.toJS('({})', '', null)
- )(params, alasql);
- if (alasql.declares[declare.variable]) {
- alasql.vars[declare.variable] = alasql.stdfn.CONVERT(
- alasql.vars[declare.variable],
- alasql.declares[declare.variable]
- );
- }
- }
- });
- }
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-/*
-//
-// SHOW for Alasql.js
-// Date: 19.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.ShowDatabases = function(params) {
- return yy.extend(this, params);
-};
-yy.ShowDatabases.prototype.toString = function() {
- var s = 'SHOW DATABASES';
- if (this.like) s += 'LIKE ' + this.like.toString();
- return s;
-};
-yy.ShowDatabases.prototype.execute = function(databaseid, params, cb) {
- if (this.engineid) {
- return alasql.engines[this.engineid].showDatabases(this.like, cb);
- } else {
- var self = this;
- var res = [];
- for (var dbid in alasql.databases) {
- res.push({databaseid: dbid});
- }
- if (self.like && res && res.length > 0) {
- res = res.filter(function(d) {
- // return d.databaseid.match(new RegExp((self.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g'));
- return alasql.utils.like(self.like.value, d.databaseid);
- });
- }
- if (cb) cb(res);
- return res;
- }
-};
-
-yy.ShowTables = function(params) {
- return yy.extend(this, params);
-};
-yy.ShowTables.prototype.toString = function() {
- var s = 'SHOW TABLES';
- if (this.databaseid) s += ' FROM ' + this.databaseid;
- if (this.like) s += ' LIKE ' + this.like.toString();
- return s;
-};
-yy.ShowTables.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[this.databaseid || databaseid];
-
- var self = this;
- var res = [];
- for (var tableid in db.tables) {
- res.push({tableid: tableid});
- }
- if (self.like && res && res.length > 0) {
- res = res.filter(function(d) {
- //return d.tableid.match(new RegExp((self.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g'));
- return alasql.utils.like(self.like.value, d.tableid);
- });
- }
- if (cb) cb(res);
- return res;
-};
-
-yy.ShowColumns = function(params) {
- return yy.extend(this, params);
-};
-yy.ShowColumns.prototype.toString = function() {
- var s = 'SHOW COLUMNS';
- if (this.table.tableid) s += ' FROM ' + this.table.tableid;
- if (this.databaseid) s += ' FROM ' + this.databaseid;
- return s;
-};
-
-yy.ShowColumns.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[this.databaseid || databaseid];
- var table = db.tables[this.table.tableid];
-
- if (table && table.columns) {
- var res = table.columns.map(function(col) {
- return {columnid: col.columnid, dbtypeid: col.dbtypeid, dbsize: col.dbsize};
- });
- if (cb) cb(res);
- return res;
- } else {
- if (cb) cb([]);
- return [];
- }
-};
-
-yy.ShowIndex = function(params) {
- return yy.extend(this, params);
-};
-yy.ShowIndex.prototype.toString = function() {
- var s = 'SHOW INDEX';
- if (this.table.tableid) s += ' FROM ' + this.table.tableid;
- if (this.databaseid) s += ' FROM ' + this.databaseid;
- return s;
-};
-yy.ShowIndex.prototype.execute = function(databaseid, params, cb) {
- var db = alasql.databases[this.databaseid || databaseid];
- var table = db.tables[this.table.tableid];
- var res = [];
- if (table && table.indices) {
- for (var ind in table.indices) {
- res.push({hh: ind, len: Object.keys(table.indices[ind]).length});
- }
- }
-
- if (cb) cb(res);
- return res;
-};
-
-yy.ShowCreateTable = function(params) {
- return yy.extend(this, params);
-};
-yy.ShowCreateTable.prototype.toString = function() {
- var s = 'SHOW CREATE TABLE ' + this.table.tableid;
- if (this.databaseid) s += ' FROM ' + this.databaseid;
- return s;
-};
-yy.ShowCreateTable.prototype.execute = function(databaseid) {
- var db = alasql.databases[this.databaseid || databaseid];
- var table = db.tables[this.table.tableid];
- if (table) {
- var s = 'CREATE TABLE ' + this.table.tableid + ' (';
- var ss = [];
- if (table.columns) {
- table.columns.forEach(function(col) {
- var a = col.columnid + ' ' + col.dbtypeid;
- if (col.dbsize) a += '(' + col.dbsize + ')';
- if (col.primarykey) a += ' PRIMARY KEY';
- // TODO extend
- ss.push(a);
- });
- s += ss.join(', ');
- }
- s += ')';
- return s;
- } else {
- throw new Error('There is no such table "' + this.table.tableid + '"');
- }
-};
-
-/*
-//
-// SET for Alasql.js
-// Date: 01.12.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.SetVariable = function(params) {
- return yy.extend(this, params);
-};
-yy.SetVariable.prototype.toString = function() {
- var s = 'SET ';
- if (typeof this.value != 'undefined')
- s += this.variable.toUpperCase() + ' ' + (this.value ? 'ON' : 'OFF');
- if (this.expression) s += this.method + this.variable + ' = ' + this.expression.toString();
- return s;
-};
-
-yy.SetVariable.prototype.execute = function(databaseid, params, cb) {
-
- if (typeof this.value != 'undefined') {
- var val = this.value;
- if (val == 'ON') val = true;
- else if (val == 'OFF') val = false;
- // if(this.method == '@') {
- alasql.options[this.variable] = val;
- // } else {
- // params[this.variable] = val;
- // }
- } else if (this.expression) {
- if (this.exists) {
- this.existsfn = this.exists.map(function(ex) {
- var nq = ex.compile(databaseid);
- if (nq.query && !nq.query.modifier) nq.query.modifier = 'RECORDSET';
- return nq;
- // return ex.compile(databaseid);
- // TODO Include modifier
- });
- }
- if (this.queries) {
- this.queriesfn = this.queries.map(function(q) {
- var nq = q.compile(databaseid);
- if (nq.query && !nq.query.modifier) nq.query.modifier = 'RECORDSET';
- return nq;
- // TODO Include modifier
- });
- }
-
- var res = new Function(
- 'params,alasql',
- 'return ' + this.expression.toJS('({})', '', null)
- ).bind(this)(params, alasql);
- if (alasql.declares[this.variable]) {
- res = alasql.stdfn.CONVERT(res, alasql.declares[this.variable]);
- }
- if (this.props && this.props.length > 0) {
- if (this.method == '@') {
- var fs = "alasql.vars['" + this.variable + "']";
- } else {
- var fs = "params['" + this.variable + "']";
- }
- fs += this.props
- .map(function(prop) {
- if (typeof prop == 'string') {
- return "['" + prop + "']";
- } else if (typeof prop == 'number') {
- return '[' + prop + ']';
- } else {
-
- return '[' + prop.toJS() + ']';
- // } else {
-
- // throw new Error('Wrong SET property');
- }
- })
- .join();
-
- new Function('value,params,alasql', 'var y;' + fs + '=value')(res, params, alasql);
- } else {
- if (this.method == '@') {
- alasql.vars[this.variable] = res;
- } else {
- params[this.variable] = res;
- }
- }
- }
- var res = 1;
- if (cb) res = cb(res);
- return res;
-};
-
-// Console functions
-
-/* global alasql, yy */
-
-alasql.test = function(name, times, fn) {
- if (arguments.length === 0) {
- alasql.log(alasql.con.results);
- return;
- }
-
- var tm = Date.now();
-
- if (arguments.length === 1) {
- fn();
- alasql.con.log(Date.now() - tm);
- return;
- }
-
- if (arguments.length === 2) {
- fn = times;
- times = 1;
- }
-
- for (var i = 0; i < times; i++) {
- fn();
- }
- alasql.con.results[name] = Date.now() - tm;
-};
-
-// Console
-// alasql.log = function(sql, params) {
-
-// };
-
-/* global alasql, yy, utils */
-
-// Console
-alasql.log = function(sql, params) {
- var olduseid = alasql.useid;
- var target = alasql.options.logtarget;
- // For node other
- if (utils.isNode) {
- target = 'console';
- }
-
- var res;
- if (typeof sql === 'string') {
- res = alasql(sql, params);
- } else {
- res = sql;
- }
-
- // For Node and console.output
- if (target === 'console' || utils.isNode) {
- if (typeof sql === 'string' && alasql.options.logprompt) {
- console.log(olduseid + '>', sql);
- }
-
- if (Array.isArray(res)) {
- if (console.table) {
- // For Chrome and other consoles
- console.table(res);
- } else {
- // Add print procedure
- console.log(JSONtoString(res));
- }
- } else {
- console.log(JSONtoString(res));
- }
- } else {
- var el;
- if (target === 'output') {
- el = document.getElementsByTagName('output')[0];
- } else {
- if (typeof target === 'string') {
- el = document.getElementById(target);
- } else {
- // in case of DOM
- el = target;
- }
- }
-
- var s = '';
-
- if (typeof sql === 'string' && alasql.options.logprompt) {
- // s += ''+olduseid+'> '+alasql.pretty(sql)+'
';
- s += '' + alasql.pretty(sql) + ' ';
- }
-
- if (Array.isArray(res)) {
- if (res.length === 0) {
- s += '[ ]
';
- } else if (typeof res[0] !== 'object' || Array.isArray(res[0])) {
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- s += '' + loghtml(res[i]) + '
';
- }
- } else {
- s += loghtml(res);
- }
- } else {
- s += loghtml(res);
- }
- el.innerHTML += s;
- }
-};
-
-alasql.clear = function() {
- var target = alasql.options.logtarget;
- // For node other
-
- if (utils.isNode || utils.isMeteorServer) {
- if (console.clear) {
- console.clear();
- }
- } else {
- var el;
- if (target === 'output') {
- el = document.getElementsByTagName('output')[0];
- } else {
- if (typeof target === 'string') {
- el = document.getElementById(target);
- } else {
- // in case of DOM
- el = target;
- }
- }
- el.innerHTML = '';
- }
-};
-
-alasql.write = function(s) {
-
- var target = alasql.options.logtarget;
- // For node other
- if (utils.isNode || utils.isMeteorServer) {
- if (console.log) {
- console.log(s);
- }
- } else {
- var el;
- if (target === 'output') {
- el = document.getElementsByTagName('output')[0];
- } else {
- if (typeof target === 'string') {
- el = document.getElementById(target);
- } else {
- // in case of DOM
- el = target;
- }
- }
- el.innerHTML += s;
- }
-};
-
-function loghtml(res) {
-
- var s = '';
- if (res === undefined) {
- s += 'undefined';
- } else if (Array.isArray(res)) {
- s += '';
- s += '';
- var cols = [];
- for (var colid in res[0]) {
- cols.push(colid);
- }
- s += '#';
- cols.forEach(function(colid) {
- s += ' ' + colid;
- });
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- s += ' ' + (i + 1);
- cols.forEach(function(colid) {
- s += ' ';
- if (res[i][colid] == +res[i][colid]) {
- // jshint ignore:line
- s += '';
- if (typeof res[i][colid] === 'undefined') {
- s += 'NULL';
- } else {
- s += res[i][colid];
- }
- s += '
';
- } else {
- if (typeof res[i][colid] === 'undefined') {
- s += 'NULL';
- } else if (typeof res[i][colid] === 'string') {
- s += res[i][colid];
- } else {
- s += JSONtoString(res[i][colid]);
- }
- // s += res[i][colid];
- }
- });
- }
-
- s += '
';
- } else {
- s += '' + JSONtoString(res) + '
';
- }
- // if() {}
-
- // if(typeof res == 'object') {
- // s += ''+JSON.stringify(res)+'
';
- // } else {
- // }
- return s;
-}
-
-function scrollTo(element, to, duration) {
- if (duration <= 0) {
- return;
- }
- var difference = to - element.scrollTop;
- var perTick = difference / duration * 10;
-
- setTimeout(function() {
- if (element.scrollTop === to) {
- return;
- }
- element.scrollTop = element.scrollTop + perTick;
- scrollTo(element, to, duration - 10);
- }, 10);
-}
-
-alasql.prompt = function(el, useidel, firstsql) {
- if (utils.isNode) {
- throw new Error('The prompt not realized for Node.js');
- }
-
- var prompti = 0;
-
- if (typeof el === 'string') {
- el = document.getElementById(el);
- }
-
- if (typeof useidel === 'string') {
- useidel = document.getElementById(useidel);
- }
-
- useidel.textContent = alasql.useid;
-
- if (firstsql) {
- alasql.prompthistory.push(firstsql);
- prompti = alasql.prompthistory.length;
- try {
- var tm = Date.now();
- alasql.log(firstsql);
- alasql.write('' + (Date.now() - tm) + ' ms
');
- } catch (err) {
- alasql.write('' + olduseid + '> ' + sql + '
');
- alasql.write('' + err + '
');
- }
- }
-
- var y = el.getBoundingClientRect().top + document.getElementsByTagName('body')[0].scrollTop;
- scrollTo(document.getElementsByTagName('body')[0], y, 500);
-
- el.onkeydown = function(event) {
- if (event.which === 13) {
- var sql = el.value;
- var olduseid = alasql.useid;
- el.value = '';
- alasql.prompthistory.push(sql);
- prompti = alasql.prompthistory.length;
- try {
- var tm = Date.now();
- alasql.log(sql);
- alasql.write('
' + (Date.now() - tm) + ' ms
');
- } catch (err) {
- alasql.write('' + olduseid + '> ' + alasql.pretty(sql, false) + '
');
- alasql.write('' + err + '
');
- }
- el.focus();
-
- useidel.textContent = alasql.useid;
- var y =
- el.getBoundingClientRect().top + document.getElementsByTagName('body')[0].scrollTop;
- scrollTo(document.getElementsByTagName('body')[0], y, 500);
- } else if (event.which === 38) {
- prompti--;
- if (prompti < 0) {
- prompti = 0;
- }
- if (alasql.prompthistory[prompti]) {
- el.value = alasql.prompthistory[prompti];
- event.preventDefault();
- }
- } else if (event.which === 40) {
- prompti++;
- if (prompti >= alasql.prompthistory.length) {
- prompti = alasql.prompthistory.length;
- el.value = '';
- } else if (alasql.prompthistory[prompti]) {
- el.value = alasql.prompthistory[prompti];
- event.preventDefault();
- }
- }
- };
-};
-
-/*
-//
-// Commit for Alasql.js
-// Date: 01.12.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-yy.BeginTransaction = function(params) {
- return yy.extend(this, params);
-};
-yy.BeginTransaction.prototype.toString = function() {
- return 'BEGIN TRANSACTION';
-};
-
-yy.BeginTransaction.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
- if (alasql.databases[databaseid].engineid) {
- return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid, cb);
- } else {
- // alasql commit!!!
- }
- if (cb) cb(res);
- return res;
-};
-
-yy.CommitTransaction = function(params) {
- return yy.extend(this, params);
-};
-yy.CommitTransaction.prototype.toString = function() {
- return 'COMMIT TRANSACTION';
-};
-
-yy.CommitTransaction.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
- if (alasql.databases[databaseid].engineid) {
- return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid, cb);
- } else {
- // alasql commit!!!
- }
- if (cb) cb(res);
- return res;
-};
-
-yy.RollbackTransaction = function(params) {
- return yy.extend(this, params);
-};
-yy.RollbackTransaction.prototype.toString = function() {
- return 'ROLLBACK TRANSACTION';
-};
-
-yy.RollbackTransaction.prototype.execute = function(databaseid, params, cb) {
- var res = 1;
- if (alasql.databases[databaseid].engineid) {
- return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid, cb);
- } else {
- // alasql commit!!!
- }
- if (cb) cb(res);
- return res;
-};
-
-if (alasql.options.tsql) {
- //
- // Check tables and views
- // IF OBJECT_ID('dbo.Employees') IS NOT NULL
- // DROP TABLE dbo.Employees;
- // IF OBJECT_ID('dbo.VSortedOrders', 'V') IS NOT NULL
- // DROP VIEW dbo.VSortedOrders;
-
- alasql.stdfn.OBJECT_ID = function(name, type) {
- if (typeof type == 'undefined') type = 'T';
- type = type.toUpperCase();
-
- var sname = name.split('.');
- var dbid = alasql.useid;
- var objname = sname[0];
- if (sname.length == 2) {
- dbid = sname[0];
- objname = sname[1];
- }
-
- var tables = alasql.databases[dbid].tables;
- dbid = alasql.databases[dbid].databaseid;
- for (var tableid in tables) {
- if (tableid == objname) {
- // TODO: What OBJECT_ID actually returns
-
- if (tables[tableid].view && type == 'V') return dbid + '.' + tableid;
- if (!tables[tableid].view && type == 'T') return dbid + '.' + tableid;
- return undefined;
- }
- }
-
- return undefined;
- };
-}
-
-if (alasql.options.mysql) {
-}
-
-if (alasql.options.mysql || alasql.options.sqlite) {
- // Pseudo INFORMATION_SCHEMA function
- alasql.from.INFORMATION_SCHEMA = function(filename, opts, cb, idx, query) {
- if (filename == 'VIEWS' || filename == 'TABLES') {
- var res = [];
- for (var databaseid in alasql.databases) {
- var tables = alasql.databases[databaseid].tables;
- for (var tableid in tables) {
- if (
- (tables[tableid].view && filename == 'VIEWS') ||
- (!tables[tableid].view && filename == 'TABLES')
- ) {
- res.push({TABLE_CATALOG: databaseid, TABLE_NAME: tableid});
- }
- }
- }
- if (cb) res = cb(res, idx, query);
- return res;
- }
- throw new Error('Unknown INFORMATION_SCHEMA table');
- };
-}
-
-if (alasql.options.postgres) {
-}
-
-if (alasql.options.oracle) {
-}
-
-if (alasql.options.sqlite) {
-}
-
-//
-// into functions
-//
-// (c) 2014 Andrey Gershun
-//
-
-alasql.into.SQL = function(filename, opts, data, columns, cb) {
- var res;
- if (typeof filename === 'object') {
- opts = filename;
- filename = undefined;
- }
- var opt = {};
- alasql.utils.extend(opt, opts);
- if (typeof opt.tableid === 'undefined') {
- throw new Error('Table for INSERT TO is not defined.');
- }
-
- var s = '';
- if (columns.length === 0) {
- if (typeof data[0] === 'object') {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- } else {
- // What should I do?
- // columns = [{columnid:"_"}];
- }
- }
-
- for (var i = 0, ilen = data.length; i < ilen; i++) {
- s += 'INSERT INTO ' + opts.tableid + '(';
- s += columns
- .map(function(col) {
- return col.columnid;
- })
- .join(',');
- s += ') VALUES (';
- s += columns.map(function(col) {
- var val = data[i][col.columnid];
- if (col.typeid) {
- if (
- col.typeid === 'STRING' ||
- col.typeid === 'VARCHAR' ||
- col.typeid === 'NVARCHAR' ||
- col.typeid === 'CHAR' ||
- col.typeid === 'NCHAR'
- ) {
- val = "'" + escapeqq(val) + "'";
- }
- } else {
- if (typeof val == 'string') {
- val = "'" + escapeqq(val) + "'";
- }
- }
- return val;
- });
- s += ');\n';
- }
- // if(filename === '') {
- // res = s;
- // } else {
- // res = data.length;
- filename = alasql.utils.autoExtFilename(filename, 'sql', opts);
- res = alasql.utils.saveFile(filename, s);
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-alasql.into.HTML = function(selector, opts, data, columns, cb) {
- var res = 1;
- if (typeof exports !== 'object') {
- var opt = {headers: true};
- alasql.utils.extend(opt, opts);
-
- var sel = document.querySelector(selector);
- if (!sel) {
- throw new Error('Selected HTML element is not found');
- }
-
- if (columns.length === 0) {
- if (typeof data[0] === 'object') {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- } else {
- // What should I do?
- // columns = [{columnid:"_"}];
- }
- }
-
- var tbe = document.createElement('table');
- var thead = document.createElement('thead');
- tbe.appendChild(thead);
- if (opt.headers) {
- var tre = document.createElement('tr');
- for (var i = 0; i < columns.length; i++) {
- var the = document.createElement('th');
- the.textContent = columns[i].columnid;
- tre.appendChild(the);
- }
- thead.appendChild(tre);
- }
-
- var tbody = document.createElement('tbody');
- tbe.appendChild(tbody);
- for (var j = 0; j < data.length; j++) {
- var tre = document.createElement('tr');
- for (var i = 0; i < columns.length; i++) {
- var the = document.createElement('td');
- the.textContent = data[j][columns[i].columnid];
- tre.appendChild(the);
- }
- tbody.appendChild(tre);
- }
- alasql.utils.domEmptyChildren(sel);
-
- sel.appendChild(tbe);
- }
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-alasql.into.JSON = function(filename, opts, data, columns, cb) {
- var res = 1;
- if (typeof filename === 'object') {
- opts = filename;
- filename = undefined;
- }
- var s = JSON.stringify(data);
-
- filename = alasql.utils.autoExtFilename(filename, 'json', opts);
- res = alasql.utils.saveFile(filename, s);
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-alasql.into.TXT = function(filename, opts, data, columns, cb) {
- // If columns is empty
- if (columns.length === 0 && data.length > 0) {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
- // If one parameter
- if (typeof filename === 'object') {
- opts = filename;
- filename = undefined;
- }
-
- var res = data.length;
- var s = '';
- if (data.length > 0) {
- var key = columns[0].columnid;
- s += data
- .map(function(d) {
- return d[key];
- })
- .join('\n');
- }
-
- // } else {
- // if(utils.isNode) {
- // process.stdout.write(s);
- // } else {
-
- // };
- // }
- filename = alasql.utils.autoExtFilename(filename, 'txt', opts);
- res = alasql.utils.saveFile(filename, s);
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-alasql.into.TAB = alasql.into.TSV = function(filename, opts, data, columns, cb) {
- var opt = {};
- alasql.utils.extend(opt, opts);
- opt.separator = '\t';
- filename = alasql.utils.autoExtFilename(filename, 'tab', opts);
- opt.autoExt = false;
- return alasql.into.CSV(filename, opt, data, columns, cb);
-};
-
-alasql.into.CSV = function(filename, opts, data, columns, cb) {
- if (columns.length === 0 && data.length > 0) {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
- if (typeof filename === 'object') {
- opts = filename;
- filename = undefined;
- }
-
- var opt = {headers: true};
- //opt.separator = ',';
- opt.separator = ';';
- opt.quote = '"';
-
- opt.utf8Bom = true;
- if (opts && !opts.headers && typeof opts.headers !== 'undefined') {
- opt.utf8Bom = false;
- }
-
- alasql.utils.extend(opt, opts);
- var res = data.length;
- var s = opt.utf8Bom ? '\ufeff' : '';
- if (opt.headers) {
- s +=
- opt.quote +
- columns
- .map(function(col) {
- return col.columnid.trim();
- })
- .join(opt.quote + opt.separator + opt.quote) +
- opt.quote +
- '\r\n';
- }
-
- data.forEach(function(d) {
- s +=
- columns
- .map(function(col) {
- var s = d[col.columnid];
- // escape the character wherever it appears in the field
- if (opt.quote !== '') {
- s = (s + '').replace(
- new RegExp('\\' + opt.quote, 'g'),
- opt.quote + opt.quote
- );
- }
- // if((s+"").indexOf(opt.separator) > -1 || (s+"").indexOf(opt.quote) > -1) s = opt.quote + s + opt.quote;
-
- //Excel 2013 needs quotes around strings - thanks for _not_ complying with RFC for CSV
- if (+s != s) {
- // jshint ignore:line
- s = opt.quote + s + opt.quote;
- }
-
- return s;
- })
- .join(opt.separator) + '\r\n';
- });
-
- filename = alasql.utils.autoExtFilename(filename, 'csv', opts);
- res = alasql.utils.saveFile(filename, s, null, {disableAutoBom: true});
- if (cb) {
- res = cb(res);
- }
- return res;
-};
-
-//
-// 831xl.js - Coloring Excel
-// 18.04.2015
-// Generate XLS file with colors and styles
-// with Excel
-
-alasql.into.XLS = function(filename, opts, data, columns, cb) {
- // If filename is not defined then output to the result
- if (typeof filename == 'object') {
- opts = filename;
- filename = undefined;
- }
-
- // Set sheets
- var sheets = {};
- if (opts && opts.sheets) {
- sheets = opts.sheets;
- }
-
- // Default sheet
- var sheet = {headers: true};
- if (typeof sheets['Sheet1'] != 'undefined') {
- sheet = sheets[0];
- } else {
- if (typeof opts != 'undefined') {
- sheet = opts;
- }
- }
-
- // Set sheet name and default is 'Sheet1'
- if (typeof sheet.sheetid == 'undefined') {
- sheet.sheetid = 'Sheet1';
- }
-
- var s = toHTML();
-
- // File is ready to save
- filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
- var res = alasql.utils.saveFile(filename, s);
- if (cb) res = cb(res);
- return res;
-
- function toHTML() {
- // Generate prologue
- var s =
- '
\
- \
- ';
-
- // Generate body
- s += '';
- s += '';
- if (typeof sheet.caption != 'undefined') {
- var caption = sheet.caption;
- if (typeof caption == 'string') {
- caption = {title: caption};
- }
- s += '';
- s += caption.title;
- s += ' ';
- }
-
- // Columns
-
- // var columns = [];
-
- // If columns defined in sheet, then take them
- if (typeof sheet.columns != 'undefined') {
- columns = sheet.columns;
- } else {
- // Autogenerate columns if they are passed as parameters
- if (columns.length == 0 && data.length > 0) {
- if (typeof data[0] == 'object') {
- if (Array.isArray(data[0])) {
- columns = data[0].map(function(d, columnidx) {
- return {columnid: columnidx};
- });
- } else {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
- }
- }
- }
-
- // Prepare columns
- columns.forEach(function(column, columnidx) {
- if (typeof sheet.column != 'undefined') {
- extend(column, sheet.column);
- }
-
- if (typeof column.width == 'undefined') {
- if (sheet.column && sheet.column.width != 'undefined') {
- column.width = sheet.column.width;
- } else {
- column.width = '120px';
- }
- }
- if (typeof column.width == 'number') column.width = column.width + 'px';
- if (typeof column.columnid == 'undefined') column.columnid = columnidx;
- if (typeof column.title == 'undefined') column.title = '' + column.columnid.trim();
- if (sheet.headers && Array.isArray(sheet.headers))
- column.title = sheet.headers[columnidx];
- });
-
- // Set columns widths
- s += '';
- columns.forEach(function(column) {
- s += ' ';
- });
- s += ' ';
-
- // Headers
- if (sheet.headers) {
- s += '';
- s += '';
-
- // TODO: Skip columns to body
-
- // Headers
- columns.forEach(function(column, columnidx) {
- s += '';
-
- // Column title
- if (typeof column.title != 'undefined') {
- if (typeof column.title == 'function') {
- s += column.title(sheet, column, columnidx);
- } else {
- s += column.title;
- }
- }
- s += ' ';
- });
-
- s += ' ';
- s += ' ';
- }
-
- s += '';
-
- // TODO: Skip lines between header and body
-
- if (data && data.length > 0) {
- // TODO: Skip columns to body
-
- // Loop over data rows
- data.forEach(function(row, rowidx) {
- // Limit number of rows on the sheet
- if (rowidx > sheet.limit) return;
- // Create row
- s += '';
- // Loop over columns
- columns.forEach(function(column, columnidx) {
- // Parameters
- var cell = {};
- extend(cell, sheet.cell);
- extend(cell, srow.cell);
- if (typeof sheet.column != 'undefined') {
- extend(cell, sheet.column.cell);
- }
- extend(cell, column.cell);
- if (sheet.cells && sheet.cells[rowidx] && sheet.cells[rowidx][columnidx]) {
- extend(cell, sheet.cells[rowidx][columnidx]);
- }
-
- // Create value
- var value = row[column.columnid];
- if (typeof cell.value == 'function') {
- value = cell.value(value, sheet, row, column, cell, rowidx, columnidx);
- }
-
- // Define cell type
- var typeid = cell.typeid;
- if (typeof typeid == 'function') {
- typeid = typeid(value, sheet, row, column, cell, rowidx, columnidx);
- }
-
- if (typeof typeid == 'undefined') {
- if (typeof value == 'number') typeid = 'number';
- else if (typeof value == 'string') typeid = 'string';
- else if (typeof value == 'boolean') typeid = 'boolean';
- else if (typeof value == 'object') {
- if (value instanceof Date) typeid = 'date';
- }
- }
-
- var typestyle = '';
-
- if (typeid == 'money') {
- typestyle =
- 'mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;';
- } else if (typeid == 'number') {
- typestyle = ' ';
- } else if (typeid == 'date') {
- typestyle = 'mso-number-format:"Short Date";';
- } else {
- // FOr other types is saved
- if (opts.types && opts.types[typeid] && opts.types[typeid].typestyle) {
- typestyle = opts.types[typeid].typestyle;
- }
- }
-
- // TODO Replace with extend...
- typestyle = typestyle || 'mso-number-format:"\\@";'; // Default type style
-
- s += "';
-
- // TODO Replace with extend...
- var format = cell.format;
- if (typeof value == 'undefined') {
- s += '';
- } else if (typeof format != 'undefined') {
- if (typeof format == 'function') {
- s += format(value);
- } else if (typeof format == 'string') {
- s += value; // TODO - add string format
- } else {
- throw new Error('Unknown format type. Should be function or string');
- }
- } else {
- if (typeid == 'number' || typeid == 'date') {
- s += value.toString();
- } else if (typeid == 'money') {
- s += (+value).toFixed(2);
- } else {
- s += value;
- }
- }
- s += ' ';
- });
-
- s += ' ';
- });
- }
-
- s += ' ';
-
- // Generate epilogue
- s += '
';
- s += '';
- s += '';
-
- return s;
- }
-
- // Style function
- function style(a) {
- var s = ' style="';
- if (a && typeof a.style != 'undefined') {
- s += a.style + ';';
- }
- s += '" ';
- return s;
- }
-};
-
-alasql.into.XLSXML = function(filename, opts, data, columns, cb) {
- opts = opts || {};
-
- // If filename is not defined then output to the result
- if (typeof filename == 'object') {
- opts = filename;
- filename = undefined;
- }
-
- // Set sheets
- var sheets = {};
- var sheetsdata;
- var sheetscolumns;
- if (opts && opts.sheets) {
- sheets = opts.sheets;
- // data and columns are already an array for the sheets
- sheetsdata = data;
- sheetscolumns = columns;
- } else {
- sheets.Sheet1 = opts;
- // wrapd ata and columns array for single sheet
- sheetsdata = [data];
- sheetscolumns = [columns];
- }
-
- // File is ready to save
- filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
- var res = alasql.utils.saveFile(filename, toXML());
- if (cb) res = cb(res);
- return res;
-
- function toXML() {
- var s1 =
- ' \
- \
- \
- \
- \
- \
- \
- \
- 0 \
- \
- \
- ';
-
- var s2 = ''; // for styles
-
- var s3 = ' ';
-
- var styles = {}; // hash based storage for styles
- var stylesn = 62; // First style
-
- // Generate style
- function hstyle(st) {
- // Prepare string
- var s = '';
- for (var key in st) {
- s += '<' + key;
- for (var attr in st[key]) {
- s += ' ';
- if (attr.substr(0, 2) == 'x:') {
- s += attr;
- } else {
- s += 'ss:';
- }
- s += attr + '="' + st[key][attr] + '"';
- }
- s += '/>';
- }
-
- var hh = hash(s);
- // Store in hash
- if (styles[hh]) {
- } else {
- styles[hh] = {styleid: stylesn};
- s2 += '';
- stylesn++;
- }
- return 's' + styles[hh].styleid;
- }
-
- function values(obj) {
- try {
- return Object.values(obj);
- } catch (e) {
- // support for older runtimes
- return Object.keys(obj).map(function(e) {
- return obj[e];
- });
- }
- }
-
- var sheetidx = 0;
- for (var sheetid in sheets) {
- var sheet = sheets[sheetid];
- var idx = typeof sheet.dataidx != 'undefined' ? sheet.dataidx : sheetidx++;
- var data = values(sheetsdata[idx]);
- // If columns defined in sheet, then take them
- var columns = undefined;
- if (typeof sheet.columns != 'undefined') {
- columns = sheet.columns;
- } else {
- // Autogenerate columns if they are passed as parameters
- columns = sheetscolumns[idx];
- if (columns === undefined || (columns.length == 0 && data.length > 0)) {
- if (typeof data[0] == 'object') {
- if (Array.isArray(data[0])) {
- columns = data[0].map(function(d, columnidx) {
- return {columnid: columnidx};
- });
- } else {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
- }
- }
- }
-
- // Prepare columns
- columns.forEach(function(column, columnidx) {
- if (typeof sheet.column != 'undefined') {
- extend(column, sheet.column);
- }
-
- if (typeof column.width == 'undefined') {
- if (sheet.column && typeof sheet.column.width != 'undefined') {
- column.width = sheet.column.width;
- } else {
- column.width = 120;
- }
- }
- if (typeof column.width == 'number') column.width = column.width;
- if (typeof column.columnid == 'undefined') column.columnid = columnidx;
- if (typeof column.title == 'undefined') column.title = '' + column.columnid.trim();
- if (sheet.headers && Array.isArray(sheet.headers))
- column.title = sheet.headers[columnidx];
- });
-
- // Header
- s3 +=
- ' \
- ';
-
- columns.forEach(function(column, columnidx) {
- s3 +=
- ' ';
- });
-
- // Headers
- if (sheet.headers) {
- s3 += '';
-
- // TODO: Skip columns to body
-
- // Headers
- columns.forEach(function(column, columnidx) {
- s3 += '';
-
- // Column title
- if (typeof column.title != 'undefined') {
- if (typeof column.title == 'function') {
- s3 += column.title(sheet, column, columnidx);
- } else {
- s3 += column.title;
- }
- }
- s3 += ' | ';
- });
-
- s3 += '
';
- }
-
- // Data
- if (data && data.length > 0) {
- // Loop over data rows
- data.forEach(function(row, rowidx) {
- // Limit number of rows on the sheet
- if (rowidx > sheet.limit) return;
-
- // Extend row properties
- var srow = {};
- extend(srow, sheet.row);
- if (sheet.rows && sheet.rows[rowidx]) {
- extend(srow, sheet.rows[rowidx]);
- }
-
- s3 += ''; //'ss:AutoFitHeight="0">'
-
- // Data
- columns.forEach(function(column, columnidx) {
- // Parameters
- var cell = {};
- extend(cell, sheet.cell);
- extend(cell, srow.cell);
- if (typeof sheet.column != 'undefined') {
- extend(cell, sheet.column.cell);
- }
- extend(cell, column.cell);
- if (sheet.cells && sheet.cells[rowidx] && sheet.cells[rowidx][columnidx]) {
- extend(cell, sheet.cells[rowidx][columnidx]);
- }
-
- // Create value
- var value = row[column.columnid];
- if (typeof cell.value == 'function') {
- value = cell.value(value, sheet, row, column, cell, rowidx, columnidx);
- }
-
- // Define cell type
- var typeid = cell.typeid;
- if (typeof typeid == 'function') {
- typeid = typeid(value, sheet, row, column, cell, rowidx, columnidx);
- }
-
- if (typeof typeid == 'undefined') {
- if (typeof value == 'number') typeid = 'number';
- else if (typeof value == 'string') typeid = 'string';
- else if (typeof value == 'boolean') typeid = 'boolean';
- else if (typeof value == 'object') {
- if (value instanceof Date) typeid = 'date';
- }
- }
-
- var Type = 'String';
- if (typeid == 'number') Type = 'Number';
- else if (typeid == 'date') Type = 'Date';
- // TODO: What else?
-
- // Prepare Data types styles
- var typestyle = '';
-
- if (typeid == 'money') {
- typestyle =
- 'mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;';
- } else if (typeid == 'number') {
- typestyle = ' ';
- } else if (typeid == 'date') {
- typestyle = 'mso-number-format:"Short Date";';
- } else {
- // For other types is saved
- if (opts.types && opts.types[typeid] && opts.types[typeid].typestyle) {
- typestyle = opts.types[typeid].typestyle;
- }
- }
-
- // TODO Replace with extend...
- typestyle = typestyle || 'mso-number-format:"\\@";'; // Default type style
-
- s3 += '';
-
- s3 += '';
-
- // TODO Replace with extend...
- var format = cell.format;
- if (typeof value == 'undefined') {
- s3 += '';
- } else if (typeof format != 'undefined') {
- if (typeof format == 'function') {
- s3 += format(value);
- } else if (typeof format == 'string') {
- s3 += value; // TODO - add string format
- } else {
- throw new Error(
- 'Unknown format type. Should be function or string'
- );
- }
- } else {
- if (typeid == 'number' || typeid == 'date') {
- s3 += value.toString();
- } else if (typeid == 'money') {
- s3 += (+value).toFixed(2);
- } else {
- s3 += value;
- }
- }
-
- // s3 += row[column.columnid];
- s3 += ' | ';
- });
-
- s3 += '
';
- });
- }
- // Finish
- s3 += '
';
- }
-
- s3 += ' ';
-
- return s1 + s2 + s3;
- }
-};
-
-/**
- Export to XLSX function
- @function
- @param {string|object} filename Filename or options
- @param {object|undefined} opts Options or undefined
- @param {array} data Data
- @param {array} columns Columns
- @parab {callback} cb Callback function
- @return {number} Number of files processed
-*/
-
-alasql.into.XLSX = function(filename, opts, data, columns, cb) {
- /** @type {number} result */
- var res = 1;
-
- if (deepEqual(columns, [{columnid: '_'}])) {
- data = data.map(function(dat) {
- return dat._;
- });
- columns = undefined;
- // res = [{_:1}];
- } else {
- // data = data1;
- }
-
- filename = alasql.utils.autoExtFilename(filename, 'xlsx', opts);
-
- var XLSX = getXLSX();
-
- /* If called without filename, use opts */
- if (typeof filename == 'object') {
- opts = filename;
- filename = undefined;
- }
-
- /** @type {object} Workbook */
- var wb = {SheetNames: [], Sheets: {}};
-
- // ToDo: check if cb must be treated differently here
- if (opts.sourcefilename) {
- alasql.utils.loadBinaryFile(opts.sourcefilename, !!cb, function(data) {
- wb = XLSX.read(data, {type: 'binary'});
- doExport();
- });
- } else {
- doExport();
- }
-
- /* Return result */
- if (cb) res = cb(res);
- return res;
-
- /**
- Export workbook
- @function
- */
- function doExport() {
- /*
- If opts is array of arrays then this is a
- multisheet workboook, else it is a singlesheet
- */
- if (typeof opts == 'object' && Array.isArray(opts)) {
- if (data && data.length > 0) {
- data.forEach(function(dat, idx) {
- prepareSheet(opts[idx], dat, undefined, idx + 1);
- });
- }
- } else {
- prepareSheet(opts, data, columns, 1);
- }
-
- saveWorkbook(cb);
- }
-
- /**
- Prepare sheet
- @params {object} opts
- @params {array|object} data
- @params {array} columns Columns
- */
- function prepareSheet(opts, data, columns, idx) {
- /** Default options for sheet */
- var opt = {sheetid: 'Sheet ' + idx, headers: true};
- alasql.utils.extend(opt, opts);
-
- var dataLength = Object.keys(data).length;
-
- // Generate columns if they are not defined
- if ((!columns || columns.length == 0) && dataLength > 0) {
- columns = Object.keys(data[0]).map(function(columnid) {
- return {columnid: columnid};
- });
- }
-
- var cells = {};
-
- if (wb.SheetNames.indexOf(opt.sheetid) > -1) {
- cells = wb.Sheets[opt.sheetid];
- } else {
- wb.SheetNames.push(opt.sheetid);
- wb.Sheets[opt.sheetid] = {};
- cells = wb.Sheets[opt.sheetid];
- }
-
- var range = 'A1';
- if (opt.range) range = opt.range;
-
- var col0 = alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);
- var row0 = +range.match(/[0-9]+/)[0] - 1;
-
- if (wb.Sheets[opt.sheetid]['!ref']) {
- var rangem = wb.Sheets[opt.sheetid]['!ref'];
- var colm = alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);
- var rowm = +rangem.match(/[0-9]+/)[0] - 1;
- } else {
- var colm = 1,
- rowm = 1;
- }
- var colmax = Math.max(col0 + columns.length, colm);
- var rowmax = Math.max(row0 + dataLength + 2, rowm);
-
- var i = row0 + 1;
-
- wb.Sheets[opt.sheetid]['!ref'] = 'A1:' + alasql.utils.xlsnc(colmax) + rowmax;
- // var i = 1;
-
- if (opt.headers) {
- columns.forEach(function(col, idx) {
- cells[alasql.utils.xlsnc(col0 + idx) + '' + i] = {v: col.columnid.trim()};
- });
- i++;
- }
-
- for (var j = 0; j < dataLength; j++) {
- columns.forEach(function(col, idx) {
- var cell = {v: data[j][col.columnid]};
- if (typeof data[j][col.columnid] == 'number') {
- cell.t = 'n';
- } else if (typeof data[j][col.columnid] == 'string') {
- cell.t = 's';
- } else if (typeof data[j][col.columnid] == 'boolean') {
- cell.t = 'b';
- } else if (typeof data[j][col.columnid] == 'object') {
- if (data[j][col.columnid] instanceof Date) {
- cell.t = 'd';
- }
- }
- cells[alasql.utils.xlsnc(col0 + idx) + '' + i] = cell;
- });
- i++;
- }
- }
-
- /**
- Save Workbook
- @params {array} wb Workbook
- @params {callback} cb Callback
- */
- function saveWorkbook(cb) {
-
- var XLSX;
-
- if (typeof filename == 'undefined') {
- res = wb;
- } else {
- XLSX = getXLSX();
-
- if (utils.isNode || utils.isMeteorServer) {
- XLSX.writeFile(wb, filename);
- } else {
- var wopts = {bookType: 'xlsx', bookSST: false, type: 'binary'};
- var wbout = XLSX.write(wb, wopts);
-
- function s2ab(s) {
- var buf = new ArrayBuffer(s.length);
- var view = new Uint8Array(buf);
- for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
- return buf;
- }
-
- /* the saveAs call downloads a file on the local machine */
- // saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), '"'+filename+'"')
- // saveAs(new Blob([s2ab(wbout)],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}), filename)
- // saveAs(new Blob([s2ab(wbout)],{type:"application/vnd.ms-excel"}), '"'+filename+'"');
- if (isIE() == 9) {
- throw new Error(
- 'Cannot save XLSX files in IE9. Please use XLS() export function'
- );
- // var URI = 'data:text/plain;charset=utf-8,';
-
- /** @todo Check if this code is required */
-
- // alert('ie9');
- } else {
- saveAs(new Blob([s2ab(wbout)], {type: 'application/octet-stream'}), filename);
- }
- }
- }
-
- }
-};
-
-/*
-//
-// FROM functions Alasql.js
-// Date: 11.12.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/**
- Meteor
- */
-
-/* global alasql Tabletop document Event */
-
-alasql.from.METEOR = function(filename, opts, cb, idx, query) {
- var res = filename.find(opts).fetch();
- if (cb) {
- res = cb(res, idx, query);
- }
- return res;
-};
-
-/**
- Google Spreadsheet reader
- */
-alasql.from.TABLETOP = function(key, opts, cb, idx, query) {
- var res = [];
-
- var opt = {headers: true, simpleSheet: true, key: key};
- alasql.utils.extend(opt, opts);
- opt.callback = function(data) {
- res = data;
- if (cb) {
- res = cb(res, idx, query);
- }
- };
-
- Tabletop.init(opt);
- return null;
-};
-
-alasql.from.HTML = function(selector, opts, cb, idx, query) {
- var opt = {};
- alasql.utils.extend(opt, opts);
-
- var sel = document.querySelector(selector);
- if (!sel && sel.tagName !== 'TABLE') {
- throw new Error('Selected HTML element is not a TABLE');
- }
-
- var res = [];
- var headers = opt.headers;
-
- if (headers && !Array.isArray(headers)) {
- headers = [];
- var ths = sel.querySelector('thead tr').children;
- for (var i = 0; i < ths.length; i++) {
- if (
- !(ths.item(i).style && ths.item(i).style.display === 'none' && opt.skipdisplaynone)
- ) {
- headers.push(ths.item(i).textContent);
- } else {
- headers.push(undefined);
- }
- }
- }
-
- var trs = sel.querySelectorAll('tbody tr');
-
- for (var j = 0; j < trs.length; j++) {
- var tds = trs.item(j).children;
- var r = {};
- for (i = 0; i < tds.length; i++) {
- if (
- !(tds.item(i).style && tds.item(i).style.display === 'none' && opt.skipdisplaynone)
- ) {
- if (headers) {
- r[headers[i]] = tds.item(i).textContent;
- } else {
- r[i] = tds.item(i).textContent;
-
- }
- }
- }
- res.push(r);
- }
-
- if (cb) {
- res = cb(res, idx, query);
- }
- return res;
-};
-
-alasql.from.RANGE = function(start, finish, cb, idx, query) {
- var res = [];
- for (var i = start; i <= finish; i++) {
- res.push(i);
- }
- // res = new alasql.Recordset({data:res,columns:{columnid:'_'}});
- if (cb) {
- res = cb(res, idx, query);
- }
- return res;
-};
-
-// Read data from any file
-alasql.from.FILE = function(filename, opts, cb, idx, query) {
- var fname;
- if (typeof filename === 'string') {
- fname = filename;
- } else if (filename instanceof Event) {
- fname = filename.target.files[0].name;
- } else {
- throw new Error('Wrong usage of FILE() function');
- }
-
- var parts = fname.split('.');
-
- var ext = parts[parts.length - 1].toUpperCase();
-
- if (alasql.from[ext]) {
-
- return alasql.from[ext](filename, opts, cb, idx, query);
- } else {
- throw new Error('Cannot recognize file type for loading');
- }
-};
-
-// Read JSON file
-
-alasql.from.JSON = function(filename, opts, cb, idx, query) {
- var res;
-
- filename = alasql.utils.autoExtFilename(filename, 'json', opts);
- alasql.utils.loadFile(filename, !!cb, function(data) {
-
- // res = [{a:1}];
- res = JSON.parse(data);
- if (cb) {
- res = cb(res, idx, query);
- }
- });
- return res;
-};
-
-alasql.from.TXT = function(filename, opts, cb, idx, query) {
- var res;
- filename = alasql.utils.autoExtFilename(filename, 'txt', opts);
- alasql.utils.loadFile(filename, !!cb, function(data) {
- res = data.split(/\r?\n/);
-
- // Remove last line if empty
- if (res[res.length - 1] === '') {
- res.pop();
- }
- for (var i = 0, ilen = res.length; i < ilen; i++) {
- // Please avoid '===' here
- if (res[i] == +res[i]) {
- // eslint:ignore
- // jshint ignore:line
- res[i] = +res[i];
- }
- res[i] = [res[i]];
- }
- if (cb) {
- res = cb(res, idx, query);
- }
- });
- return res;
-};
-
-alasql.from.TAB = alasql.from.TSV = function(filename, opts, cb, idx, query) {
- opts = opts || {};
- opts.separator = '\t';
- filename = alasql.utils.autoExtFilename(filename, 'tab', opts);
- opts.autoext = false;
- return alasql.from.CSV(filename, opts, cb, idx, query);
-};
-
-alasql.from.CSV = function(contents, opts, cb, idx, query) {
- var opt = {
- separator: ',',
- quote: '"',
- headers: true,
- };
- alasql.utils.extend(opt, opts);
- var res;
- var hs = [];
- function parseText(text) {
- var delimiterCode = opt.separator.charCodeAt(0);
- var quoteCode = opt.quote.charCodeAt(0);
-
- var EOL = {},
- EOF = {},
- rows = [],
- N = text.length,
- I = 0,
- n = 0,
- t,
- eol;
- function token() {
- if (I >= N) {
- return EOF;
- }
- if (eol) {
- return (eol = false, EOL);
- }
- var j = I;
- if (text.charCodeAt(j) === quoteCode) {
- var i = j;
- while (i++ < N) {
- if (text.charCodeAt(i) === quoteCode) {
- if (text.charCodeAt(i + 1) !== quoteCode) {
- break;
- }
- ++i;
- }
- }
- I = i + 2;
- var c = text.charCodeAt(i + 1);
- if (c === 13) {
- eol = true;
- if (text.charCodeAt(i + 2) === 10) {
- ++I;
- }
- } else if (c === 10) {
- eol = true;
- }
- return text.substring(j + 1, i).replace(/""/g, '"');
- }
- while (I < N) {
- var c = text.charCodeAt(I++),
- k = 1;
- if (c === 10) {
- eol = true;
- } else if (c === 13) {
- eol = true;
- if (text.charCodeAt(I) === 10) {
- ++I;
- ++k;
- }
- } else if (c !== delimiterCode) {
- continue;
- }
- return text.substring(j, I - k);
- }
- return text.substring(j);
- }
-
- while ((t = token()) !== EOF) {
- var a = [];
- while (t !== EOL && t !== EOF) {
- a.push(t.trim());
- t = token();
- }
-
- if (opt.headers) {
- if (n === 0) {
- if (typeof opt.headers === 'boolean') {
- hs = a;
- } else if (Array.isArray(opt.headers)) {
- hs = opt.headers;
- var r = {};
- hs.forEach(function(h, idx) {
- r[h] = a[idx];
- // Please avoid === here
- if (
- typeof r[h] !== 'undefined' &&
- r[h].length !== 0 &&
- r[h].trim() == +r[h]
- ) {
- // jshint ignore:line
- r[h] = +r[h];
- }
- });
- rows.push(r);
- }
- } else {
- var r = {};
- hs.forEach(function(h, idx) {
- r[h] = a[idx];
- if (
- typeof r[h] !== 'undefined' &&
- r[h].length !== 0 &&
- r[h].trim() == +r[h]
- ) {
- // jshint ignore:line
- r[h] = +r[h];
- }
- });
- rows.push(r);
- }
- n++;
- } else {
- rows.push(a);
- }
- }
-
- res = rows;
-
- if (opt.headers) {
- if (query && query.sources && query.sources[idx]) {
- var columns = (query.sources[idx].columns = []);
- hs.forEach(function(h) {
- columns.push({columnid: h});
- });
- }
- }
-
- if (cb) {
- res = cb(res, idx, query);
- }
- }
- if (new RegExp('\n').test(contents)) {
- parseText(contents);
- } else {
- contents = alasql.utils.autoExtFilename(contents, 'csv', opts);
- alasql.utils.loadFile(contents, !!cb, parseText, query.cb);
- }
- return res;
-};
-
-function XLSXLSX(X, filename, opts, cb, idx, query) {
- var opt = {};
- opts = opts || {};
- alasql.utils.extend(opt, opts);
- if (typeof opt.headers === 'undefined') {
- opt.headers = true;
- }
- var res;
-
- /**
- * see https://github.com/SheetJS/js-xlsx/blob/5ae6b1965bfe3764656a96f536b356cd1586fec7/README.md
- * for example of using readAsArrayBuffer under `Parsing Workbooks`
- */
- function fixdata(data) {
- var o = '',
- l = 0,
- w = 10240;
- for (; l < data.byteLength / w; ++l)
- o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
- o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
- return o;
- }
- function getHeaderText(text) {
- // if casesensitive option is set to false and there is a text value return lowercase value of text
- if (text && alasql.options.casesensitive === false) {
- return text.toLowerCase();
- } else {
- return text;
- }
- }
- filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
- alasql.utils.loadBinaryFile(
- filename,
- !!cb,
- function(data) {
- // function processData(data) {
- if (data instanceof ArrayBuffer) {
- var arr = fixdata(data);
- var workbook = X.read(btoa(arr), {type: 'base64'});
- } else {
- var workbook = X.read(data, {type: 'binary'});
- }
-
- var sheetid;
- if (typeof opt.sheetid === 'undefined') {
- sheetid = workbook.SheetNames[0];
- } else if (typeof opt.sheetid === 'number') {
- sheetid = workbook.SheetNames[opt.sheetid];
- } else {
- sheetid = opt.sheetid;
- }
- var range;
- var res = [];
- if (typeof opt.range === 'undefined') {
- range = workbook.Sheets[sheetid]['!ref'];
- } else {
- range = opt.range;
- if (workbook.Sheets[sheetid][range]) {
- range = workbook.Sheets[sheetid][range];
- }
- }
- // if range has some value then data is present in the current sheet
- // else current sheet is empty
- if (range) {
- var rg = range.split(':');
- var col0 = rg[0].match(/[A-Z]+/)[0];
- var row0 = +rg[0].match(/[0-9]+/)[0];
- var col1 = rg[1].match(/[A-Z]+/)[0];
- var row1 = +rg[1].match(/[0-9]+/)[0];
-
- var hh = {};
- var xlscnCol0 = alasql.utils.xlscn(col0);
- var xlscnCol1 = alasql.utils.xlscn(col1);
- for (var j = xlscnCol0; j <= xlscnCol1; j++) {
- var col = alasql.utils.xlsnc(j);
- if (opt.headers) {
- if (workbook.Sheets[sheetid][col + '' + row0]) {
- hh[col] = getHeaderText(workbook.Sheets[sheetid][col + '' + row0].v);
- } else {
- hh[col] = getHeaderText(col);
- }
- } else {
- hh[col] = col;
- }
- }
- if (opt.headers) {
- row0++;
- }
- for (var i = row0; i <= row1; i++) {
- var row = {};
- for (var j = xlscnCol0; j <= xlscnCol1; j++) {
- var col = alasql.utils.xlsnc(j);
- if (workbook.Sheets[sheetid][col + '' + i]) {
- row[hh[col]] = workbook.Sheets[sheetid][col + '' + i].v;
- }
- }
- res.push(row);
- }
- } else {
- res.push([]);
- }
-
- // Remove last empty line (issue #548)
- if (
- res.length > 0 &&
- res[res.length - 1] &&
- Object.keys(res[res.length - 1]).length == 0
- ) {
- res.pop();
- }
-
- if (cb) {
- res = cb(res, idx, query);
- }
- },
- function(err) {
- throw err;
- }
- );
-
- return res;
-}
-
-alasql.from.XLS = function(filename, opts, cb, idx, query) {
- opts = opts || {};
- filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
- opts.autoExt = false;
- return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
-};
-
-alasql.from.XLSX = function(filename, opts, cb, idx, query) {
- opts = opts || {};
- filename = alasql.utils.autoExtFilename(filename, 'xlsx', opts);
- opts.autoExt = false;
- return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
-};
-
-alasql.from.ODS = function(filename, opts, cb, idx, query) {
- opts = opts || {};
- filename = alasql.utils.autoExtFilename(filename, 'ods', opts);
- opts.autoExt = false;
- return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
-};
-
-alasql.from.XML = function(filename, opts, cb, idx, query) {
- var res;
-
- alasql.utils.loadFile(filename, !!cb, function(data) {
-
- // res = [{a:1}];
-
- res = xmlparse(data).root;
-
- if (cb) res = cb(res, idx, query);
- });
- return res;
-};
-
-/**
- * Parse the given string of `xml`.
- *
- * @param {String} xml
- * @return {Object}
- * @api public
- */
-
-function xmlparse(xml) {
- xml = xml.trim();
-
- // strip comments
- xml = xml.replace(//g, '');
-
- return document();
-
- /**
- * XML document.
- */
-
- function document() {
- return {
- declaration: declaration(),
- root: tag(),
- };
- }
-
- /**
- * Declaration.
- */
-
- function declaration() {
- var m = match(/^<\?xml\s*/);
- if (!m) return;
-
- // tag
- var node = {
- attributes: {},
- };
-
- // attributes
- while (!(eos() || is('?>'))) {
- var attr = attribute();
- if (!attr) return node;
- node.attributes[attr.name] = attr.value;
- }
-
- match(/\?>\s*/);
-
- return node;
- }
-
- /**
- * Tag.
- */
-
- function tag() {
- var m = match(/^<([\w-:.]+)\s*/);
- if (!m) return;
-
- // name
- var node = {
- name: m[1],
- attributes: {},
- children: [],
- };
-
- // attributes
- while (!(eos() || is('>') || is('?>') || is('/>'))) {
- var attr = attribute();
- if (!attr) return node;
- node.attributes[attr.name] = attr.value;
- }
-
- // self closing tag
- if (match(/^\s*\/>\s*/)) {
- return node;
- }
-
- match(/\??>\s*/);
-
- // content
- node.content = content();
-
- // children
- var child;
- while ((child = tag())) {
- node.children.push(child);
- }
-
- // closing
- match(/^<\/[\w-:.]+>\s*/);
-
- return node;
- }
-
- /**
- * Text content.
- */
-
- function content() {
- var m = match(/^([^<]*)/);
- if (m) return m[1];
- return '';
- }
-
- /**
- * Attribute.
- */
-
- function attribute() {
- var m = match(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);
- if (!m) return;
- return {name: m[1], value: strip(m[2])};
- }
-
- /**
- * Strip quotes from `val`.
- */
-
- function strip(val) {
- return val.replace(/^['"]|['"]$/g, '');
- }
-
- /**
- * Match `re` and advance the string.
- */
-
- function match(re) {
- var m = xml.match(re);
- if (!m) return;
- xml = xml.slice(m[0].length);
- return m;
- }
-
- /**
- * End-of-source.
- */
-
- function eos() {
- return 0 == xml.length;
- }
-
- /**
- * Check for `prefix`.
- */
-
- function is(prefix) {
- return 0 == xml.indexOf(prefix);
- }
-}
-
-alasql.from.GEXF = function(filename, opts, cb, idx, query) {
- var res;
- alasql('SEARCH FROM XML(' + filename + ')', [], function(data) {
- res = data;
-
- if (cb) res = cb(res);
- });
- return res;
-};
-
-/*
-//
-// HELP for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/* globals: alasql, yy */
-
-/**
- Print statement
- @class
- @param {object} params Initial setup properties
-*/
-
-/* global alasql, yy */
-
-yy.Print = function(params) {
- return yy.extend(this, params);
-};
-
-/**
- Generate SQL string
- @this Print statement object
-*/
-yy.Print.prototype.toString = function() {
- var s = 'PRINT';
- if (this.statement) s += ' ' + this.statement.toString();
- return s;
-};
-
-/**
- Print result of select statement or expression
- @param {string} databaseid Database identificator
- @param {object} params Query parameters
- @param {statement-callback} cb Callback function
- @this Print statement object
-*/
-yy.Print.prototype.execute = function(databaseid, params, cb) {
-
- var self = this;
- var res = 1;
-
- alasql.precompile(this, databaseid, params); /** @todo Change from alasql to this */
-
- if (this.exprs && this.exprs.length > 0) {
- var rs = this.exprs.map(function(expr) {
-
- var exprfn = new Function(
- 'params,alasql,p',
- 'var y;return ' + expr.toJS('({})', '', null)
- ).bind(self);
- var r = exprfn(params, alasql);
- return JSONtoString(r);
- });
- console.log.apply(console, rs);
- } else if (this.select) {
- var r = this.select.execute(databaseid, params);
- console.log(JSONtoString(r));
- } else {
- console.log();
- }
-
- if (cb) res = cb(res);
- return res;
-};
-
-/*
-//
-// HELP for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Source = function(params) {
- return yy.extend(this, params);
-};
-yy.Source.prototype.toString = function() {
- var s = 'SOURCE';
- if (this.url) s += " '" + this.url + " '";
- return s;
-};
-
-// SOURCE FILE
-yy.Source.prototype.execute = function(databaseid, params, cb) {
-
- var res;
- loadFile(
- this.url,
- !!cb,
- function(data) {
-
- // res = 1;
- res = alasql(data);
- if (cb) res = cb(res);
- return res;
- },
- function(err) {
- throw err;
- }
- );
- return res;
-};
-
-/*
-//
-// HELP for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-/* global alasql, yy */
-
-yy.Require = function(params) {
- return yy.extend(this, params);
-};
-yy.Require.prototype.toString = function() {
- var s = 'REQUIRE';
- if (this.paths && this.paths.length > 0) {
- s += this.paths
- .map(function(path) {
- return path.toString();
- })
- .join(',');
- }
- if (this.plugins && this.plugins.length > 0) {
- s += this.plugins
- .map(function(plugin) {
- return plugin.toUpperCase();
- })
- .join(',');
- }
- return s;
-};
-
-/**
- Attach plug-in for Alasql
- */
-yy.Require.prototype.execute = function(databaseid, params, cb) {
- var self = this;
- var res = 0;
- var ss = '';
-
- if (this.paths && this.paths.length > 0) {
- this.paths.forEach(function(path) {
- loadFile(path.value, !!cb, function(data) {
- res++;
-
- ss += data;
- if (res < self.paths.length) return;
-
- new Function('params,alasql', ss)(params, alasql);
- if (cb) res = cb(res);
- });
- });
- } else if (this.plugins && this.plugins.length > 0) {
- this.plugins.forEach(function(plugin) {
- // If plugin is not loaded already
- if (!alasql.plugins[plugin]) {
- loadFile(alasql.path + '/alasql-' + plugin.toLowerCase() + '.js', !!cb, function(
- data
- ) {
- // Execute all plugins at the same time
- res++;
- ss += data;
- if (res < self.plugins.length) return;
-
- new Function('params,alasql', ss)(params, alasql);
- alasql.plugins[plugin] = true; // Plugin is loaded
- if (cb) res = cb(res);
- });
- }
- });
- } else {
- if (cb) res = cb(res);
- }
- return res;
-};
-
-/*
-//
-// HELP for Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-yy.Assert = function(params) {
- return yy.extend(this, params);
-};
-yy.Source.prototype.toString = function() {
- var s = 'ASSERT';
- if (this.value) s += ' ' + JSON.stringify(this.value);
- return s;
-};
-
-// SOURCE FILE
-yy.Assert.prototype.execute = function(databaseid) {
-
- if (!deepEqual(alasql.res, this.value)) {
- // if(this.message) {
- // throw this.
- // } else {
- throw new Error(
- (this.message || 'Assert wrong') +
- ': ' +
- JSON.stringify(alasql.res) +
- ' == ' +
- JSON.stringify(this.value)
- );
- // }
- }
- return 1;
-};
-
-//
-// 91websql.js
-// WebSQL database support
-// (c) 2014, Andrey Gershun
-//
-
-var WEBSQL = (alasql.engines.WEBSQL = function() {});
-
-WEBSQL.createDatabase = function(wdbid, args, dbid, cb) {
- var res = 1;
- var wdb = openDatabase(wdbid, args[0], args[1], args[2]);
- if (this.dbid) {
- var db = alasql.createDatabase(this.dbid);
- db.engineid = 'WEBSQL';
- db.wdbid = wdbid;
- sb.wdb = db;
- }
- if (!wdb) {
- throw new Error('Cannot create WebSQL database "' + databaseid + '"');
- }
- if (cb) cb(res);
- return res;
-};
-
-WEBSQL.dropDatabase = function(databaseid) {
- throw new Error('This is impossible to drop WebSQL database.');
-};
-
-WEBSQL.attachDatabase = function(databaseid, dbid, args, params, cb) {
- var res = 1;
- if (alasql.databases[dbid]) {
- throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
- }
- alasqlopenDatabase(databaseid, args[0], args[1], args[2]);
- return res;
-};
-
-//
-// 91indexeddb.js
-// AlaSQL IndexedDB module
-// Date: 18.04.2015
-// (c) Andrey Gershun
-//
-
-/* global alasql, yy, utils*/
-
-var IDB = (alasql.engines.INDEXEDDB = function() {
- '';
-});
-
-if (utils.hasIndexedDB) {
- // For Chrome it work normally, for Firefox - simple shim
- if (typeof utils.global.indexedDB.webkitGetDatabaseNames == 'function') {
- IDB.getDatabaseNames = utils.global.indexedDB.webkitGetDatabaseNames.bind(
- utils.global.indexedDB
- );
- } else {
- IDB.getDatabaseNames = function() {
- var request = {};
- var result = {
- contains: function(name) {
- return true; // Always return true
- },
- notsupported: true,
- };
- setTimeout(function() {
- var event = {target: {result: result}};
- request.onsuccess(event);
- }, 0);
- return request;
- };
- IDB.getDatabaseNamesNotSupported = true;
- }
-}
-
-//
-// SHOW DATABASES
-// work only in chrome
-//
-IDB.showDatabases = function(like, cb) {
-
- var request = IDB.getDatabaseNames();
- request.onsuccess = function(event) {
- var dblist = event.target.result;
- if (IDB.getDatabaseNamesNotSupported) {
- throw new Error('SHOW DATABASE is not supported in this browser');
- }
- var res = [];
- if (like) {
- var relike = new RegExp(like.value.replace(/\%/g, '.*'), 'g');
- }
- for (var i = 0; i < dblist.length; i++) {
- if (!like || dblist[i].match(relike)) {
- res.push({databaseid: dblist[i]});
- }
- }
- cb(res);
- };
-};
-
-IDB.createDatabase = function(ixdbid, args, ifnotexists, dbid, cb) {
-
- var indexedDB = utils.global.indexedDB;
- if (ifnotexists) {
- var request2 = indexedDB.open(ixdbid, 1);
- request2.onsuccess = function(event) {
- event.target.result.close();
- if (cb) cb(1);
- };
- } else {
- var request1 = indexedDB.open(ixdbid, 1);
- request1.onupgradeneeded = function(e) {
-
- e.target.transaction.abort();
- };
- request1.onsuccess = function(e) {
-
- if (ifnotexists) {
- if (cb) cb(0);
- } else {
- throw new Error(
- 'IndexedDB: Cannot create new database "' +
- ixdbid +
- '" because it already exists'
- );
- }
- };
- }
-
-};
-
-IDB.createDatabase = function(ixdbid, args, ifnotexists, dbid, cb) {
- var indexedDB = utils.global.indexedDB;
- if (IDB.getDatabaseNamesNotSupported) {
- // Hack for Firefox
- if (ifnotexists) {
-
- var dbExists = true;
- var request2 = indexedDB.open(ixdbid);
-
- request2.onupgradeneeded = function(e) {
-
- dbExists = false;
- // e.target.transaction.abort();
- // cb(0);
- };
- request2.onsuccess = function(event) {
-
- event.target.result.close();
- if (dbExists) {
- if (cb) cb(0);
- } else {
- if (cb) cb(1);
- }
- };
- } else {
-
- var request1 = indexedDB.open(ixdbid);
- request1.onupgradeneeded = function(e) {
- e.target.transaction.abort();
- };
- request1.onabort = function(event) {
- if (cb) cb(1);
- };
- request1.onsuccess = function(event) {
- event.target.result.close();
- throw new Error(
- 'IndexedDB: Cannot create new database "' +
- ixdbid +
- '" because it already exists'
- );
- // cb(0);
- };
- }
- } else {
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event) {
- var dblist = event.target.result;
- if (dblist.contains(ixdbid)) {
- if (ifnotexists) {
- if (cb) cb(0);
- return;
- } else {
- throw new Error(
- 'IndexedDB: Cannot create new database "' +
- ixdbid +
- '" because it already exists'
- );
- }
- }
-
- var request2 = indexedDB.open(ixdbid, 1);
- request2.onsuccess = function(event) {
- event.target.result.close();
- if (cb) cb(1);
- };
- };
- }
-};
-
-IDB.dropDatabase = function(ixdbid, ifexists, cb) {
- var indexedDB = utils.global.indexedDB;
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event) {
- var dblist = event.target.result;
- if (!dblist.contains(ixdbid)) {
- if (ifexists) {
- if (cb) cb(0);
- return;
- } else {
- throw new Error(
- 'IndexedDB: Cannot drop new database "' + ixdbid + '" because it does not exist'
- );
- }
- }
- var request2 = indexedDB.deleteDatabase(ixdbid);
- request2.onsuccess = function(event) {
-
- if (cb) cb(1);
- };
- };
-};
-
-IDB.attachDatabase = function(ixdbid, dbid, args, params, cb) {
- if (!utils.hasIndexedDB) {
- throw new Error('The current browser does not support IndexedDB');
- }
- var indexedDB = utils.global.indexedDB;
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event) {
- var dblist = event.target.result;
- if (!dblist.contains(ixdbid)) {
- throw new Error(
- 'IndexedDB: Cannot attach database "' + ixdbid + '" because it does not exist'
- );
- }
- var request2 = indexedDB.open(ixdbid);
- request2.onsuccess = function(event) {
- var ixdb = event.target.result;
- var db = new alasql.Database(dbid || ixdbid);
- db.engineid = 'INDEXEDDB';
- db.ixdbid = ixdbid;
- db.tables = [];
- var tblist = ixdb.objectStoreNames;
- for (var i = 0; i < tblist.length; i++) {
- db.tables[tblist[i]] = {};
- }
-
- event.target.result.close();
- if (cb) cb(1);
- };
- };
-};
-
-IDB.createTable = function(databaseid, tableid, ifnotexists, cb) {
- var indexedDB = utils.global.indexedDB;
-
- var ixdbid = alasql.databases[databaseid].ixdbid;
-
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event__) {
- var dblist = event__.target.result;
- if (!dblist.contains(ixdbid)) {
- throw new Error(
- 'IndexedDB: Cannot create table in database "' +
- ixdbid +
- '" because it does not exist'
- );
- }
- var request2 = indexedDB.open(ixdbid);
- request2.onversionchange = function(event_) {
-
- event_.target.result.close();
- };
- request2.onsuccess = function(event_) {
- var version = event_.target.result.version;
- event_.target.result.close();
-
- var request3 = indexedDB.open(ixdbid, version + 1);
- request3.onupgradeneeded = function(event) {
- var ixdb = event.target.result;
-
- var store = ixdb.createObjectStore(tableid, {autoIncrement: true});
-
- };
- request3.onsuccess = function(event) {
-
- event.target.result.close();
- if (cb) cb(1);
- };
- request3.onerror = function(event) {
- throw event;
-
- };
- request3.onblocked = function(event) {
- throw new Error(
- 'Cannot create table "' +
- tableid +
- '" because database "' +
- databaseid +
- '" is blocked'
- );
-
- };
- };
- };
-};
-
-IDB.dropTable = function(databaseid, tableid, ifexists, cb) {
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
-
- var request1 = IDB.getDatabaseNames();
- request1.onsuccess = function(event) {
- var dblist = event.target.result;
-
- if (!dblist.contains(ixdbid)) {
- throw new Error(
- 'IndexedDB: Cannot drop table in database "' +
- ixdbid +
- '" because it does not exist'
- );
- }
-
- var request2 = indexedDB.open(ixdbid);
- request2.onversionchange = function(event) {
- event.target.result.close();
- };
-
- request2.onsuccess = function(event) {
- var version = event.target.result.version;
- event.target.result.close();
-
- var request3 = indexedDB.open(ixdbid, version + 1);
- request3.onupgradeneeded = function(event) {
- var ixdb = event.target.result;
- if (ixdb.objectStoreNames.contains(tableid)) {
- ixdb.deleteObjectStore(tableid);
- delete alasql.databases[databaseid].tables[tableid];
- } else {
- if (!ifexists) {
- throw new Error(
- 'IndexedDB: Cannot drop table "' +
- tableid +
- '" because it does not exist'
- );
- }
- }
- // var store = ixdb.createObjectStore(tableid);
-
- };
- request3.onsuccess = function(event) {
-
- event.target.result.close();
- if (cb) cb(1);
- };
- request3.onerror = function(event) {
-
- throw event;
- };
- request3.onblocked = function(event) {
- throw new Error(
- 'Cannot drop table "' +
- tableid +
- '" because database "' +
- databaseid +
- '" is blocked'
- );
-
- };
- };
- };
-};
-
-IDB.intoTable = function(databaseid, tableid, value, columns, cb) {
-
- // console.trace();
-
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
- var request1 = indexedDB.open(ixdbid);
- request1.onsuccess = function(event) {
- var ixdb = event.target.result;
- var tx = ixdb.transaction([tableid], 'readwrite');
- var tb = tx.objectStore(tableid);
-
- for (var i = 0, ilen = value.length; i < ilen; i++) {
- tb.add(value[i]);
- }
- tx.oncomplete = function() {
- ixdb.close();
-
- if (cb) cb(ilen);
- };
- };
-
-};
-
-IDB.fromTable = function(databaseid, tableid, cb, idx, query) {
-
- // console.trace();
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
- var request = indexedDB.open(ixdbid);
- request.onsuccess = function(event) {
- var res = [];
- var ixdb = event.target.result;
-
- var tx = ixdb.transaction([tableid]);
- var store = tx.objectStore(tableid);
- var cur = store.openCursor();
-
- cur.onblocked = function(event) {
-
- };
- cur.onerror = function(event) {
-
- };
- cur.onsuccess = function(event) {
-
- var cursor = event.target.result;
-
- if (cursor) {
- res.push(cursor.value);
- cursor["continue"]();
- } else {
-
- ixdb.close();
- if (cb) cb(res, idx, query);
- }
- };
- };
-};
-
-IDB.deleteFromTable = function(databaseid, tableid, wherefn, params, cb) {
-
- // console.trace();
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
- var request = indexedDB.open(ixdbid);
- request.onsuccess = function(event) {
- var res = [];
- var ixdb = event.target.result;
-
- var tx = ixdb.transaction([tableid], 'readwrite');
- var store = tx.objectStore(tableid);
- var cur = store.openCursor();
- var num = 0;
-
- cur.onblocked = function(event) {
-
- };
- cur.onerror = function(event) {
-
- };
- cur.onsuccess = function(event) {
-
- var cursor = event.target.result;
-
- if (cursor) {
- if (!wherefn || wherefn(cursor.value, params)) {
-
- cursor["delete"]();
- num++;
- }
- cursor["continue"]();
- } else {
-
- ixdb.close();
- if (cb) cb(num);
- }
- };
- };
-};
-
-IDB.updateTable = function(databaseid, tableid, assignfn, wherefn, params, cb) {
-
- // console.trace();
- var indexedDB = utils.global.indexedDB;
- var ixdbid = alasql.databases[databaseid].ixdbid;
- var request = indexedDB.open(ixdbid);
- request.onsuccess = function(event) {
- var res = [];
- var ixdb = event.target.result;
-
- var tx = ixdb.transaction([tableid], 'readwrite');
- var store = tx.objectStore(tableid);
- var cur = store.openCursor();
- var num = 0;
-
- cur.onblocked = function(event) {
-
- };
- cur.onerror = function(event) {
-
- };
- cur.onsuccess = function(event) {
-
- var cursor = event.target.result;
-
- if (cursor) {
- if (!wherefn || wherefn(cursor.value, params)) {
-
- var r = cursor.value;
- assignfn(r, params);
-
- cursor.update(r);
- num++;
- }
- cursor["continue"]();
- } else {
-
- ixdb.close();
- if (cb) cb(num);
- }
- };
- };
-};
-
-//
-// 91localstorage.js
-// localStorage and DOM-Storage engine
-// Date: 09.12.2014
-// (c) Andrey Gershun
-//
-
-/* global alasql, yy, localStorage*/
-
-var LS = (alasql.engines.LOCALSTORAGE = function() {});
-
-/**
- Read data from localStorage with security breaks
- @param key {string} Address in localStorage
- @return {object} JSON object
-*/
-LS.get = function(key) {
- var s = localStorage.getItem(key);
- if (typeof s === 'undefined') return;
- var v;
- try {
- v = JSON.parse(s);
- } catch (err) {
- throw new Error('Cannot parse JSON object from localStorage' + s);
- }
- return v;
-};
-
-/**
- Store data into localStorage with security breaks
- @param key {string} Address in localStorage
- @return {object} JSON object
-*/
-LS.set = function(key, value) {
- if (typeof value === 'undefined') localStorage.removeItem(key);
- else localStorage.setItem(key, JSON.stringify(value));
-};
-
-/**
- Store table structure and data into localStorage
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param tableid {string} Table name
- @return Nothing
-*/
-LS.storeTable = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- var table = db.tables[tableid];
- // Create empty structure for table
- var tbl = {};
- tbl.columns = table.columns;
- tbl.data = table.data;
- tbl.identities = table.identities;
- // TODO: May be add indexes, objects and other fields?
- LS.set(db.lsdbid + '.' + tableid, tbl);
-};
-
-/**
- Restore table structure and data
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param tableid {string} Table name
- @return Nothing
-*/
-LS.restoreTable = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- var tbl = LS.get(db.lsdbid + '.' + tableid);
- var table = new alasql.Table();
- for (var f in tbl) {
- table[f] = tbl[f];
- }
- db.tables[tableid] = table;
- table.indexColumns();
- // We need to add other things here
- return table;
-};
-
-/**
- Remove table from localStorage
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param tableid {string} Table name
-*/
-
-LS.removeTable = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- localStorage.removeItem(db.lsdbid + '.' + tableid);
-};
-
-/**
- Create database in localStorage
- @param lsdbid {string} localStorage database id
- @param args {array} List of parameters (not used in localStorage)
- @param ifnotexists {boolean} Check if database does not exist
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param cb {function} Callback
-*/
-
-LS.createDatabase = function(lsdbid, args, ifnotexists, databaseid, cb) {
- var res = 1;
- var ls = LS.get('alasql'); // Read list of all databases
- if (!(ifnotexists && ls && ls.databases && ls.databases[lsdbid])) {
- if (!ls) ls = {databases: {}}; // Empty record
- if (ls.databases && ls.databases[lsdbid]) {
- throw new Error(
- 'localStorage: Cannot create new database "' +
- lsdbid +
- '" because it already exists'
- );
- }
- ls.databases[lsdbid] = true;
- LS.set('alasql', ls);
- LS.set(lsdbid, {databaseid: lsdbid, tables: {}}); // Create database record
- } else {
- res = 0;
- }
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Drop external database
- @param lsdbid {string} localStorage database id
- @param ifexists {boolean} Check if database exists
- @param cb {function} Callback
-*/
-LS.dropDatabase = function(lsdbid, ifexists, cb) {
- var res = 1;
- var ls = LS.get('alasql');
- if (!(ifexists && ls && ls.databases && !ls.databases[lsdbid])) {
- // 1. Remove record from 'alasql' record
- if (!ls) {
- if (!ifexists) {
- throw new Error('There is no any AlaSQL databases in localStorage');
- } else {
- return cb ? cb(0) : 0;
- }
- }
-
- if (ls.databases && !ls.databases[lsdbid]) {
- throw new Error(
- 'localStorage: Cannot drop database "' +
- lsdbid +
- '" because there is no such database'
- );
- }
- delete ls.databases[lsdbid];
- LS.set('alasql', ls);
-
- // 2. Remove tables definitions
- var db = LS.get(lsdbid);
- for (var tableid in db.tables) {
- localStorage.removeItem(lsdbid + '.' + tableid);
- }
-
- // 3. Remove database definition
- localStorage.removeItem(lsdbid);
- } else {
- res = 0;
- }
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Attach existing localStorage database to AlaSQL database
- @param lsdibid {string} localStorage database id
- @param
-*/
-
-LS.attachDatabase = function(lsdbid, databaseid, args, params, cb) {
- var res = 1;
- if (alasql.databases[databaseid]) {
- throw new Error(
- 'Unable to attach database as "' + databaseid + '" because it already exists'
- );
- }
- if (!databaseid) databaseid = lsdbid;
- var db = new alasql.Database(databaseid);
- db.engineid = 'LOCALSTORAGE';
- db.lsdbid = lsdbid;
- db.tables = LS.get(lsdbid).tables;
- // IF AUTOABORT IS OFF then copy data to memory
- if (!alasql.options.autocommit) {
- if (db.tables) {
- for (var tbid in db.tables) {
- LS.restoreTable(databaseid, tbid);
- // db.tables[tbid].data = LS.get(db.lsdbid+'.'+tbid);
- }
- }
- }
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Show list of databases from localStorage
- @param like {string} Mathing pattern
- @param cb {function} Callback
-*/
-LS.showDatabases = function(like, cb) {
- var res = [];
- var ls = LS.get('alasql');
- if (like) {
- // TODO: If we have a special function for LIKE patterns?
- var relike = new RegExp(like.value.replace(/%/g, '.*'), 'g');
- }
- if (ls && ls.databases) {
- for (var dbid in ls.databases) {
- res.push({databaseid: dbid});
- }
- if (like && res && res.length > 0) {
- res = res.filter(function(d) {
- return d.databaseid.match(relike);
- });
- }
- }
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Create table in localStorage database
- @param databaseid {string} AlaSQL database id
- @param tableid {string} Table id
- @param ifnotexists {boolean} If not exists flag
- @param cb {function} Callback
-*/
-
-LS.createTable = function(databaseid, tableid, ifnotexists, cb) {
- var res = 1;
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var tb = LS.get(lsdbid + '.' + tableid);
- // Check if such record exists
- if (tb && !ifnotexists) {
- throw new Error(
- 'Table "' + tableid + '" alsready exists in localStorage database "' + lsdbid + '"'
- );
- }
- var lsdb = LS.get(lsdbid);
- var table = alasql.databases[databaseid].tables[tableid];
-
- // TODO: Check if required
- lsdb.tables[tableid] = true;
-
- LS.set(lsdbid, lsdb);
- LS.storeTable(databaseid, tableid);
-
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Empty table and reset identities
- @param databaseid {string} AlaSQL database id (not external localStorage)
- @param tableid {string} Table name
- @param ifexists {boolean} If exists flag
- @param cb {function} Callback
- @return 1 on success
-*/
-LS.truncateTable = function(databaseid, tableid, ifexists, cb) {
- var res = 1;
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var lsdb;
- if (alasql.options.autocommit) {
- lsdb = LS.get(lsdbid);
- } else {
- lsdb = alasql.databases[databaseid];
- }
-
- if (!ifexists && !lsdb.tables[tableid]) {
- throw new Error(
- 'Cannot truncate table "' + tableid + '" in localStorage, because it does not exist'
- );
- }
-
- //load table
- var tbl = LS.restoreTable(databaseid, tableid);
-
- //clear data from table
- tbl.data = [];
- //TODO reset all identities
- //but identities are not working on LOCALSTORAGE
- //See test 607 for details
-
- //store table
- LS.storeTable(databaseid, tableid);
-
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Create table in localStorage database
- @param databaseid {string} AlaSQL database id
- @param tableid {string} Table id
- @param ifexists {boolean} If exists flag
- @param cb {function} Callback
-*/
-
-LS.dropTable = function(databaseid, tableid, ifexists, cb) {
- var res = 1;
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var lsdb;
-
- if (alasql.options.autocommit) {
- lsdb = LS.get(lsdbid);
- } else {
- lsdb = alasql.databases[databaseid];
- }
- if (!ifexists && !lsdb.tables[tableid]) {
- throw new Error(
- 'Cannot drop table "' + tableid + '" in localStorage, because it does not exist'
- );
- }
- delete lsdb.tables[tableid];
- LS.set(lsdbid, lsdb);
- // localStorage.removeItem(lsdbid+'.'+tableid);
- LS.removeTable(databaseid, tableid);
- if (cb) res = cb(res);
- return res;
-};
-
-/**
- Read all data from table
-*/
-
-LS.fromTable = function(databaseid, tableid, cb, idx, query) {
-
- var lsdbid = alasql.databases[databaseid].lsdbid;
- // var res = LS.get(lsdbid+'.'+tableid);
-
- var res = LS.restoreTable(databaseid, tableid).data;
-
- if (cb) res = cb(res, idx, query);
- return res;
-};
-
-/**
- Insert data into the table
- @param databaseid {string} Database id
- @param tableid {string} Table id
- @param value {array} Array of values
- @param columns {array} Columns (not used)
- @param cb {function} Callback
-*/
-
-LS.intoTable = function(databaseid, tableid, value, columns, cb) {
-
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var res = value.length;
- // var tb = LS.get(lsdbid+'.'+tableid);
- var tb = LS.restoreTable(databaseid, tableid);
- for (var columnid in tb.identities) {
- var ident = tb.identities[columnid];
-
- for (var index in value) {
- value[index][columnid] = ident.value;
- ident.value += ident.step;
- }
- }
- if (!tb.data) tb.data = [];
- tb.data = tb.data.concat(value);
- // LS.set(lsdbid+'.'+tableid, tb);
- LS.storeTable(databaseid, tableid);
-
- if (cb) res = cb(res);
-
- return res;
-};
-
-/**
- Laad data from table
-*/
-LS.loadTableData = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- var lsdbid = alasql.databases[databaseid].lsdbid;
- LS.restoreTable(databaseid, tableid);
- // db.tables[tableid].data = LS.get(lsdbid+'.'+tableid);
-};
-
-/**
- Save data to the table
-*/
-
-LS.saveTableData = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- var lsdbid = alasql.databases[databaseid].lsdbid;
- LS.storeTable(lsdbid, tableid);
- // LS.set(lsdbid+'.'+tableid,db.tables[tableid].data);
- db.tables[tableid].data = undefined;
-};
-
-/**
- Commit
-*/
-
-LS.commit = function(databaseid, cb) {
-
- var db = alasql.databases[databaseid];
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var lsdb = {databaseid: lsdbid, tables: {}};
- if (db.tables) {
- for (var tbid in db.tables) {
- // TODO: Question - do we need this line
- lsdb.tables[tbid] = true;
- LS.storeTable(databaseid, tbid);
- // LS.set(lsdbid+'.'+tbid, db.tables[tbid].data);
- }
- }
- LS.set(lsdbid, lsdb);
- return cb ? cb(1) : 1;
-};
-
-/**
- Alias BEGIN = COMMIT
-*/
-LS.begin = LS.commit;
-
-/**
- ROLLBACK
-*/
-
-LS.rollback = function(databaseid, cb) {
- // This does not work and should be fixed
- // Plus test 151 and 231
-
- return;
-
- var db = alasql.databases[databaseid];
- db.dbversion++;
-
- var lsdbid = alasql.databases[databaseid].lsdbid;
- var lsdb = LS.get(lsdbid);
- // if(!alasql.options.autocommit) {
-
- delete alasql.databases[databaseid];
- alasql.databases[databaseid] = new alasql.Database(databaseid);
- extend(alasql.databases[databaseid], lsdb);
- alasql.databases[databaseid].databaseid = databaseid;
- alasql.databases[databaseid].engineid = 'LOCALSTORAGE';
-
- if (lsdb.tables) {
- for (var tbid in lsdb.tables) {
- // var tb = new alasql.Table({columns: db.tables[tbid].columns});
- // extend(tb,lsdb.tables[tbid]);
- // lsdb.tables[tbid] = true;
-
- // if(!alasql.options.autocommit) {
-
- // lsdb.tables[tbid].data = LS.get(db.lsdbid+'.'+tbid);
- LS.restoreTable(databaseid, tbid);
- // }
- // lsdb.tables[tbid].indexColumns();
-
- // index columns
- // convert types
- }
- }
- // }
-
-};
-
-//
-// 91websql.js
-// WebSQL database support
-// (c) 2014, Andrey Gershun
-//
-
-var SQLITE = (alasql.engines.SQLITE = function() {});
-
-SQLITE.createDatabase = function(wdbid, args, ifnotexists, dbid, cb) {
- throw new Error('Connot create SQLITE database in memory. Attach it.');
-};
-
-SQLITE.dropDatabase = function(databaseid) {
- throw new Error('This is impossible to drop SQLite database. Detach it.');
-};
-
-SQLITE.attachDatabase = function(sqldbid, dbid, args, params, cb) {
- var res = 1;
- if (alasql.databases[dbid]) {
- throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
- }
-
- if ((args[0] && args[0] instanceof yy.StringValue) || args[0] instanceof yy.ParamValue) {
- if (args[0] instanceof yy.StringValue) {
- var value = args[0].value;
- } else if (args[0] instanceof yy.ParamValue) {
- var value = params[args[0].param];
- }
- alasql.utils.loadBinaryFile(
- value,
- true,
- function(data) {
- var db = new alasql.Database(dbid || sqldbid);
- db.engineid = 'SQLITE';
- db.sqldbid = sqldbid;
- var sqldb = (db.sqldb = new SQL.Database(data));
- db.tables = [];
- var tables = sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;
-
- tables.forEach(function(tbl) {
- db.tables[tbl[1]] = {};
- var columns = (db.tables[tbl[1]].columns = []);
- var ast = alasql.parse(tbl[4]);
-
- var coldefs = ast.statements[0].columns;
- if (coldefs && coldefs.length > 0) {
- coldefs.forEach(function(cd) {
- columns.push(cd);
- });
- }
- });
-
- cb(1);
- },
- function(err) {
- throw new Error('Cannot open SQLite database file "' + args[0].value + '"');
- }
- );
- return res;
- } else {
- throw new Error('Cannot attach SQLite database without a file');
- }
-
- return res;
-};
-
-SQLITE.fromTable = function(databaseid, tableid, cb, idx, query) {
- var data = alasql.databases[databaseid].sqldb.exec('SELECT * FROM ' + tableid);
- var columns = (query.sources[idx].columns = []);
- if (data[0].columns.length > 0) {
- data[0].columns.forEach(function(columnid) {
- columns.push({columnid: columnid});
- });
- }
-
- var res = [];
- if (data[0].values.length > 0) {
- data[0].values.forEach(function(d) {
- var r = {};
- columns.forEach(function(col, idx) {
- r[col.columnid] = d[idx];
- });
- res.push(r);
- });
- }
- if (cb) cb(res, idx, query);
-};
-
-SQLITE.intoTable = function(databaseid, tableid, value, columns, cb) {
- var sqldb = alasql.databases[databaseid].sqldb;
- for (var i = 0, ilen = value.length; i < ilen; i++) {
- var s = 'INSERT INTO ' + tableid + ' (';
- var d = value[i];
- var keys = Object.keys(d);
- s += keys.join(',');
- s += ') VALUES (';
- s += keys
- .map(function(k) {
- v = d[k];
- if (typeof v == 'string') v = "'" + v + "'";
- return v;
- })
- .join(',');
- s += ')';
- sqldb.exec(s);
- }
- var res = ilen;
- if (cb) cb(res);
- return res;
-};
-
-//
-// 91localstorage.js
-// localStorage and DOM-Storage engine
-// Date: 09.12.2014
-// (c) Andrey Gershun
-//
-
-var FS = (alasql.engines.FILESTORAGE = alasql.engines.FILE = function() {});
-
-FS.createDatabase = function(fsdbid, args, ifnotexists, dbid, cb) {
-
- var res = 1;
- var filename = args[0].value;
-
- alasql.utils.fileExists(filename, function(fex) {
-
- if (fex) {
- if (ifnotexists) {
- res = 0;
- if (cb) res = cb(res);
- return res;
- } else {
- throw new Error('Cannot create new database file, because it already exists');
- }
- } else {
- var data = {tables: {}};
- alasql.utils.saveFile(filename, JSON.stringify(data), function(data) {
- if (cb) res = cb(res);
- });
- }
- });
- return res;
-};
-
-FS.dropDatabase = function(fsdbid, ifexists, cb) {
- var res;
- var filename = fsdbid.value;
-
- alasql.utils.fileExists(filename, function(fex) {
- if (fex) {
- res = 1;
- alasql.utils.deleteFile(filename, function() {
- res = 1;
- if (cb) res = cb(res);
- });
- } else {
- if (!ifexists) {
- throw new Error('Cannot drop database file, because it does not exist');
- }
- res = 0;
- if (cb) res = cb(res);
- }
- });
- return res;
-};
-
-FS.attachDatabase = function(fsdbid, dbid, args, params, cb) {
-
- var res = 1;
- if (alasql.databases[dbid]) {
- throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
- }
- var db = new alasql.Database(dbid || fsdbid);
- db.engineid = 'FILESTORAGE';
- // db.fsdbid = fsdbid;
- db.filename = args[0].value;
- loadFile(db.filename, !!cb, function(s) {
- try {
- db.data = JSON.parse(s);
- } catch (err) {
- throw new Error('Data in FileStorage database are corrupted');
- }
- db.tables = db.data.tables;
- // IF AUTOCOMMIT IS OFF then copy data to memory
- if (!alasql.options.autocommit) {
- if (db.tables) {
- for (var tbid in db.tables) {
- db.tables[tbid].data = db.data[tbid];
- }
- }
- }
- if (cb) res = cb(res);
- });
- return res;
-};
-
-FS.createTable = function(databaseid, tableid, ifnotexists, cb) {
- var db = alasql.databases[databaseid];
- var tb = db.data[tableid];
- var res = 1;
-
- if (tb && !ifnotexists) {
- throw new Error('Table "' + tableid + '" alsready exists in the database "' + fsdbid + '"');
- }
- var table = alasql.databases[databaseid].tables[tableid];
- db.data.tables[tableid] = {columns: table.columns};
- db.data[tableid] = [];
-
- FS.updateFile(databaseid);
-
- if (cb) cb(res);
- return res;
-};
-
-FS.updateFile = function(databaseid) {
-
- var db = alasql.databases[databaseid];
- if (db.issaving) {
- db.postsave = true;
- return;
- }
- db.issaving = true;
- db.postsave = false;
- alasql.utils.saveFile(db.filename, JSON.stringify(db.data), function() {
- db.issaving = false;
-
- if (db.postsave) {
- setTimeout(function() {
- FS.updateFile(databaseid);
- }, 50); // TODO Test with different timeout parameters
- }
- });
-};
-
-FS.dropTable = function(databaseid, tableid, ifexists, cb) {
- var res = 1;
- var db = alasql.databases[databaseid];
- if (!ifexists && !db.tables[tableid]) {
- throw new Error(
- 'Cannot drop table "' + tableid + '" in fileStorage, because it does not exist'
- );
- }
- delete db.tables[tableid];
- delete db.data.tables[tableid];
- delete db.data[tableid];
- FS.updateFile(databaseid);
- if (cb) cb(res);
- return res;
-};
-
-FS.fromTable = function(databaseid, tableid, cb, idx, query) {
-
- var db = alasql.databases[databaseid];
- var res = db.data[tableid];
- if (cb) res = cb(res, idx, query);
- return res;
-};
-
-FS.intoTable = function(databaseid, tableid, value, columns, cb) {
- var db = alasql.databases[databaseid];
- var res = value.length;
- var tb = db.data[tableid];
- if (!tb) tb = [];
- db.data[tableid] = tb.concat(value);
- FS.updateFile(databaseid);
- if (cb) cb(res);
- return res;
-};
-
-FS.loadTableData = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- db.tables[tableid].data = db.data[tableid];
-};
-
-FS.saveTableData = function(databaseid, tableid) {
- var db = alasql.databases[databaseid];
- db.data[tableid] = db.tables[tableid].data;
- db.tables[tableid].data = null;
- FS.updateFile(databaseid);
-};
-
-FS.commit = function(databaseid, cb) {
-
- var db = alasql.databases[databaseid];
- var fsdb = {tables: {}};
- if (db.tables) {
- for (var tbid in db.tables) {
- db.data.tables[tbid] = {columns: db.tables[tbid].columns};
- db.data[tbid] = db.tables[tbid].data;
- }
- }
- FS.updateFile(databaseid);
- return cb ? cb(1) : 1;
-};
-
-FS.begin = FS.commit;
-
-FS.rollback = function(databaseid, cb) {
- var res = 1;
- var db = alasql.databases[databaseid];
- db.dbversion++;
-
- // var lsdbid = alasql.databases[databaseid].lsdbid;
- // lsdb = LS.get(lsdbid);
- wait();
- function wait() {
- setTimeout(function() {
- if (db.issaving) {
- return wait();
- } else {
- alasql.loadFile(db.filename, !!cb, function(data) {
- db.data = data;
- db.tables = {};
- for (var tbid in db.data.tables) {
- var tb = new alasql.Table({columns: db.data.tables[tbid].columns});
- extend(tb, db.data.tables[tbid]);
- db.tables[tbid] = tb;
- if (!alasql.options.autocommit) {
- db.tables[tbid].data = db.data[tbid];
- }
- db.tables[tbid].indexColumns();
-
- // index columns
- // convert types
- }
-
- delete alasql.databases[databaseid];
- alasql.databases[databaseid] = new alasql.Database(databaseid);
- extend(alasql.databases[databaseid], db);
- alasql.databases[databaseid].engineid = 'FILESTORAGE';
- alasql.databases[databaseid].filename = db.filename;
-
- if (cb) res = cb(res);
- // Todo: check why no return
- });
- }
- }, 100);
- }
-
- // if(!alasql.options.autocommit) {
-
-};
-
-if(utils.isBrowser && !utils.isWebWorker) {
-
-alasql = alasql || false;
-
-if (!alasql) {
- throw new Error('alasql was not found');
-}
-
-alasql.worker = function() {
- throw new Error('Can find webworker in this enviroment');
-};
-
-if (typeof Worker !== 'undefined') {
- alasql.worker = function(path, paths, cb) {
- // var path;
- if (path === true) {
- path = undefined;
- }
-
- if (typeof path === 'undefined') {
- var sc = document.getElementsByTagName('script');
- for (var i = 0; i < sc.length; i++) {
- if (sc[i].src.substr(-16).toLowerCase() === 'alasql-worker.js') {
- path = sc[i].src.substr(0, sc[i].src.length - 16) + 'alasql.js';
- break;
- } else if (sc[i].src.substr(-20).toLowerCase() === 'alasql-worker.min.js') {
- path = sc[i].src.substr(0, sc[i].src.length - 20) + 'alasql.min.js';
- break;
- } else if (sc[i].src.substr(-9).toLowerCase() === 'alasql.js') {
- path = sc[i].src;
- break;
- } else if (sc[i].src.substr(-13).toLowerCase() === 'alasql.min.js') {
- path = sc[i].src.substr(0, sc[i].src.length - 13) + 'alasql.min.js';
- break;
- }
- }
- }
-
- if (typeof path === 'undefined') {
- throw new Error('Path to alasql.js is not specified');
- } else if (path !== false) {
- var js = "importScripts('";
- js += path;
- js +=
- "');self.onmessage = function(event) {" +
- 'alasql(event.data.sql,event.data.params, function(data){' +
- 'postMessage({id:event.data.id, data:data});});}';
-
- var blob = new Blob([js], {type: 'text/plain'});
- alasql.webworker = new Worker(URL.createObjectURL(blob));
-
- alasql.webworker.onmessage = function(event) {
- var id = event.data.id;
-
- alasql.buffer[id](event.data.data);
- delete alasql.buffer[id];
- };
-
- alasql.webworker.onerror = function(e) {
- throw e;
- };
-
- if (arguments.length > 1) {
- var sql =
- 'REQUIRE ' +
- paths
- .map(function(p) {
- return '"' + p + '"';
- })
- .join(',');
- alasql(sql, [], cb);
- }
- } else if (path === false) {
- delete alasql.webworker;
- return;
- }
- };
-}
-
-/* FileSaver.js
- * A saveAs() FileSaver implementation.
- * 1.3.2
- * 2016-06-16 18:25:19
- *
- * By Eli Grey, http://eligrey.com
- * License: MIT
- * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
- */
-
-/*global self */
-/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
-
-/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
-
-var saveAs =
- saveAs ||
- (function(view) {
- 'use strict';
- // IE <10 is explicitly unsupported
- if (
- typeof view === 'undefined' ||
- (typeof navigator !== 'undefined' && /MSIE [1-9]\./.test(navigator.userAgent))
- ) {
- return;
- }
- var doc = view.document,
- // only get URL when necessary in case Blob.js hasn't overridden it yet
- get_URL = function() {
- return view.URL || view.webkitURL || view;
- },
- save_link = doc.createElementNS('http://www.w3.org/1999/xhtml', 'a'),
- can_use_save_link = 'download' in save_link,
- click = function(node) {
- var event = new MouseEvent('click');
- node.dispatchEvent(event);
- },
- is_safari = /constructor/i.test(view.HTMLElement) || view.safari,
- is_chrome_ios = /CriOS\/[\d]+/.test(navigator.userAgent),
- throw_outside = function(ex) {
- (view.setImmediate || view.setTimeout)(function() {
- throw ex;
- }, 0);
- },
- force_saveable_type = 'application/octet-stream',
- // the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
- arbitrary_revoke_timeout = 1000 * 40, // in ms
- revoke = function(file) {
- var revoker = function() {
- if (typeof file === 'string') {
- // file is an object URL
- get_URL().revokeObjectURL(file);
- } else {
- // file is a File
- file.remove();
- }
- };
- setTimeout(revoker, arbitrary_revoke_timeout);
- },
- dispatch = function(filesaver, event_types, event) {
- event_types = [].concat(event_types);
- var i = event_types.length;
- while (i--) {
- var listener = filesaver['on' + event_types[i]];
- if (typeof listener === 'function') {
- try {
- listener.call(filesaver, event || filesaver);
- } catch (ex) {
- throw_outside(ex);
- }
- }
- }
- },
- auto_bom = function(blob) {
- // prepend BOM for UTF-8 XML and text/* types (including HTML)
- // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
- if (
- /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(
- blob.type
- )
- ) {
- return new Blob([String.fromCharCode(0xfeff), blob], {type: blob.type});
- }
- return blob;
- },
- FileSaver = function(blob, name, no_auto_bom) {
- if (!no_auto_bom) {
- blob = auto_bom(blob);
- }
- // First try a.download, then web filesystem, then object URLs
- var filesaver = this,
- type = blob.type,
- force = type === force_saveable_type,
- object_url,
- dispatch_all = function() {
- dispatch(filesaver, 'writestart progress write writeend'.split(' '));
- },
- // on any filesys errors revert to saving with object URLs
- fs_error = function() {
- if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
- // Safari doesn't allow downloading of blob urls
- var reader = new FileReader();
- reader.onloadend = function() {
- var url = is_chrome_ios
- ? reader.result
- : reader.result.replace(
- /^data:[^;]*;/,
- 'data:attachment/file;'
- );
- var popup = view.open(url, '_blank');
- if (!popup) view.location.href = url;
- url = undefined; // release reference before dispatching
- filesaver.readyState = filesaver.DONE;
- dispatch_all();
- };
- reader.readAsDataURL(blob);
- filesaver.readyState = filesaver.INIT;
- return;
- }
- // don't create more object URLs than needed
- if (!object_url) {
- object_url = get_URL().createObjectURL(blob);
- }
- if (force) {
- view.location.href = object_url;
- } else {
- var opened = view.open(object_url, '_blank');
- if (!opened) {
- // Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
- view.location.href = object_url;
- }
- }
- filesaver.readyState = filesaver.DONE;
- dispatch_all();
- revoke(object_url);
- };
- filesaver.readyState = filesaver.INIT;
-
- if (can_use_save_link) {
- object_url = get_URL().createObjectURL(blob);
- setTimeout(function() {
- save_link.href = object_url;
- save_link.download = name;
- click(save_link);
- dispatch_all();
- revoke(object_url);
- filesaver.readyState = filesaver.DONE;
- });
- return;
- }
-
- fs_error();
- },
- FS_proto = FileSaver.prototype,
- saveAs = function(blob, name, no_auto_bom) {
- return new FileSaver(blob, name || blob.name || 'download', no_auto_bom);
- };
- // IE 10+ (native saveAs)
- if (typeof navigator !== 'undefined' && navigator.msSaveOrOpenBlob) {
- return function(blob, name, no_auto_bom) {
- name = name || blob.name || 'download';
-
- if (!no_auto_bom) {
- blob = auto_bom(blob);
- }
- return navigator.msSaveOrOpenBlob(blob, name);
- };
- }
-
- FS_proto.abort = function() {};
- FS_proto.readyState = FS_proto.INIT = 0;
- FS_proto.WRITING = 1;
- FS_proto.DONE = 2;
-
- FS_proto.error = FS_proto.onwritestart = FS_proto.onprogress = FS_proto.onwrite = FS_proto.onabort = FS_proto.onerror = FS_proto.onwriteend = null;
-
- return saveAs;
- })(
- (typeof self !== 'undefined' && self) ||
- (typeof window !== 'undefined' && window) ||
- this.content
- );
-// `self` is undefined in Firefox for Android content script context
-// while `this` is nsIContentFrameMessageManager
-// with an attribute `content` that corresponds to the window
-
-if (typeof module !== 'undefined' && module.exports) {
- module.exports.saveAs = saveAs;
-} else if (typeof define !== 'undefined' && define !== null && define.amd !== null) {
- define('FileSaver.js', function() {
- return saveAs;
- });
-}
-
-/* eslint-disable */
-
-/*
-//
-// Last part of Alasql.js
-// Date: 03.11.2014
-// (c) 2014, Andrey Gershun
-//
-*/
-
-// This is a final part of Alasql
-
-//*only-for-browser/*
-if(utils.isCordova || utils.isMeteorServer || utils.isNode ){
- console.warn('It looks like you are using the browser version of AlaSQL. Please use the alasql.fs.js file instead.')
-}
-//*/
-
-// FileSaveAs
-alasql.utils.saveAs = saveAs;
-
-};
-
-// Create default database
-new Database("alasql");
-
-// Set default database
-alasql.use("alasql");
-
-return alasql;
-}));
-
+//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+/*
+@module alasql
+@version 0.4.11-develop-977878caundefined
+
+AlaSQL - JavaScript SQL database
+© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
+
+@license
+The MIT License (MIT)
+
+Copyright 2014-2016 Andrey Gershun (agershun@gmail.com) & Mathias Rangel Wulff (m@rawu.dk)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+/* eslint-disable */
+
+"use strict";
+
+/**
+ @fileoverview AlaSQL JavaScript SQL library
+ @see http://github.com/agershun/alasql
+*/
+
+/**
+ Callback from statement
+ @callback statement-callback
+ @param {object} data Result data
+*/
+
+/**
+ UMD envelope for AlaSQL
+*/
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define([], factory);
+ } else if (typeof exports === 'object') {
+ /** alasql main function */
+ module.exports = factory();
+ } else {
+ root.alasql = factory();
+ }
+}(this, function () {
+
+/**
+ AlaSQL - Main Alasql class
+ @function
+ @param {string|function|object} sql - SQL-statement or data object for fuent interface
+ @param {object} params - SQL parameters
+ @param {function} cb - callback function
+ @param {object} scope - Scope for nested queries
+ @return {any} - Result data object
+
+ @example
+ Standard sync call:
+ alasql('CREATE TABLE one');
+ Query:
+ var res = alasql('SELECT * FROM one');
+ Call with parameters:
+ var res = alasql('SELECT * FROM ?',[data]);
+ Standard async call with callback function:
+ alasql('SELECT * FROM ?',[data],function(res){
+ console.log(data);
+ });
+ Call with scope for subquery (to pass common values):
+ var scope = {one:{a:2,b;20}}
+ alasql('SELECT * FROM ? two WHERE two.a = one.a',[data],null,scope);
+ Call for fluent interface with data object:
+ alasql(data).Where(function(x){return x.a == 10}).exec();
+ Call for fluent interface without data object:
+ alasql().From(data).Where(function(x){return x.a == 10}).exec();
+ */
+
+var alasql = function(sql, params, cb, scope) {
+
+ params = params||[];
+
+ if(typeof importScripts !== 'function' && alasql.webworker) {
+ var id = alasql.lastid++;
+ alasql.buffer[id] = cb;
+ alasql.webworker.postMessage({id:id,sql:sql,params:params});
+ return;
+ }
+
+ if(arguments.length === 0) {
+ // Without arguments - Fluent interface
+ return new yy.Select({
+ columns:[new yy.Column({columnid:'*'})],
+ from: [new yy.ParamValue({param:0})]
+ });
+ } else if(arguments.length === 1){
+ // Access promise notation without using `.promise(...)`
+ if(sql.constructor === Array){
+ return alasql.promise(sql);
+ }
+ }
+ // Avoid setting params if not needed even with callback
+ if(typeof params === 'function'){
+ scope = cb;
+ cb = params;
+ params = [];
+ }
+
+ if(typeof params !== 'object'){
+ params = [params];
+ }
+
+ // Standard interface
+ // alasql('#sql');
+ if(typeof sql === 'string' && sql[0]==='#' && typeof document === "object") {
+ sql = document.querySelector(sql).textContent;
+ } else if(typeof sql === 'object' && sql instanceof HTMLElement) {
+ sql = sql.textContent;
+ } else if(typeof sql === 'function') {
+ // to run multiline functions
+ sql = sql.toString();
+ sql = (/\/\*([\S\s]+)\*\//m.exec(sql) || ['','Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function.'])[1];
+ }
+ // Run SQL
+ return alasql.exec(sql, params, cb, scope);
+};
+
+/**
+ Current version of alasql
+ @constant {string}
+*/
+alasql.version = '0.4.11-develop-977878caundefined';
+
+/**
+ Debug flag
+ @type {boolean}
+*/
+alasql.debug = undefined; // Initial debug variable
+
+//*only-for-browser/*
+var require = function(){return null}; // as alasqlparser.js is generated, we can not "remove" referenses to
+var __dirname = '';
+//*/
+
+/* parser generated by jison 0.4.18 */
+/*
+ Returns a Parser object of the following structure:
+
+ Parser: {
+ yy: {}
+ }
+
+ Parser.prototype: {
+ yy: {},
+ trace: function(),
+ symbols_: {associative list: name ==> number},
+ terminals_: {associative list: number ==> name},
+ productions_: [...],
+ performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+ table: [...],
+ defaultActions: {...},
+ parseError: function(str, hash),
+ parse: function(input),
+
+ lexer: {
+ EOF: 1,
+ parseError: function(str, hash),
+ setInput: function(input),
+ input: function(),
+ unput: function(str),
+ more: function(),
+ less: function(n),
+ pastInput: function(),
+ upcomingInput: function(),
+ showPosition: function(),
+ test_match: function(regex_match_array, rule_index),
+ next: function(),
+ lex: function(),
+ begin: function(condition),
+ popState: function(),
+ _currentRules: function(),
+ topState: function(),
+ pushState: function(condition),
+
+ options: {
+ ranges: boolean (optional: true ==> token location info will include a .range[] member)
+ flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+ backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+ },
+
+ performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+ rules: [...],
+ conditions: {associative list: name ==> set},
+ }
+ }
+
+ token location info (@$, _$, etc.): {
+ first_line: n,
+ last_line: n,
+ first_column: n,
+ last_column: n,
+ range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
+ }
+
+ the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+ text: (matched text)
+ token: (the produced terminal token, if any)
+ line: (yylineno)
+ }
+ while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+ loc: (yylloc)
+ expected: (string describing the set of expected tokens)
+ recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+ }
+*/
+var alasqlparser = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,13],$V1=[1,104],$V2=[1,102],$V3=[1,103],$V4=[1,6],$V5=[1,42],$V6=[1,79],$V7=[1,76],$V8=[1,94],$V9=[1,93],$Va=[1,69],$Vb=[1,101],$Vc=[1,85],$Vd=[1,64],$Ve=[1,71],$Vf=[1,84],$Vg=[1,66],$Vh=[1,70],$Vi=[1,68],$Vj=[1,61],$Vk=[1,74],$Vl=[1,62],$Vm=[1,67],$Vn=[1,83],$Vo=[1,77],$Vp=[1,86],$Vq=[1,87],$Vr=[1,81],$Vs=[1,82],$Vt=[1,80],$Vu=[1,88],$Vv=[1,89],$Vw=[1,90],$Vx=[1,91],$Vy=[1,92],$Vz=[1,98],$VA=[1,65],$VB=[1,78],$VC=[1,72],$VD=[1,96],$VE=[1,97],$VF=[1,63],$VG=[1,73],$VH=[1,108],$VI=[1,107],$VJ=[10,306,602,764],$VK=[10,306,310,602,764],$VL=[1,115],$VM=[1,116],$VN=[1,117],$VO=[1,118],$VP=[1,119],$VQ=[130,353,410],$VR=[1,127],$VS=[1,126],$VT=[1,134],$VU=[1,164],$VV=[1,175],$VW=[1,178],$VX=[1,173],$VY=[1,181],$VZ=[1,185],$V_=[1,160],$V$=[1,182],$V01=[1,169],$V11=[1,171],$V21=[1,174],$V31=[1,183],$V41=[1,166],$V51=[1,193],$V61=[1,188],$V71=[1,189],$V81=[1,194],$V91=[1,195],$Va1=[1,196],$Vb1=[1,197],$Vc1=[1,198],$Vd1=[1,199],$Ve1=[1,200],$Vf1=[1,201],$Vg1=[1,202],$Vh1=[1,176],$Vi1=[1,177],$Vj1=[1,179],$Vk1=[1,180],$Vl1=[1,186],$Vm1=[1,192],$Vn1=[1,184],$Vo1=[1,187],$Vp1=[1,172],$Vq1=[1,170],$Vr1=[1,191],$Vs1=[1,203],$Vt1=[2,4,5],$Vu1=[2,471],$Vv1=[1,206],$Vw1=[1,211],$Vx1=[1,220],$Vy1=[1,216],$Vz1=[10,72,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VA1=[2,4,5,10,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],$VB1=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VC1=[1,249],$VD1=[1,256],$VE1=[1,265],$VF1=[1,270],$VG1=[1,269],$VH1=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,168,169,179,180,181,183,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],$VI1=[2,162],$VJ1=[1,281],$VK1=[10,74,78,306,310,505,602,764],$VL1=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,193,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,302,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,344,356,368,369,370,373,374,386,389,396,400,401,402,403,404,405,406,408,409,417,418,420,424,426,433,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,514,515,516,517,602,764],$VM1=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VN1=[1,562],$VO1=[1,564],$VP1=[2,503],$VQ1=[1,569],$VR1=[1,580],$VS1=[1,583],$VT1=[1,584],$VU1=[10,78,89,132,137,146,189,296,306,310,470,602,764],$VV1=[10,74,306,310,602,764],$VW1=[2,567],$VX1=[1,602],$VY1=[2,4,5,156],$VZ1=[1,640],$V_1=[1,612],$V$1=[1,646],$V02=[1,647],$V12=[1,620],$V22=[1,631],$V32=[1,618],$V42=[1,626],$V52=[1,619],$V62=[1,627],$V72=[1,629],$V82=[1,621],$V92=[1,622],$Va2=[1,641],$Vb2=[1,638],$Vc2=[1,639],$Vd2=[1,615],$Ve2=[1,617],$Vf2=[1,609],$Vg2=[1,610],$Vh2=[1,611],$Vi2=[1,613],$Vj2=[1,614],$Vk2=[1,616],$Vl2=[1,623],$Vm2=[1,624],$Vn2=[1,628],$Vo2=[1,630],$Vp2=[1,632],$Vq2=[1,633],$Vr2=[1,634],$Vs2=[1,635],$Vt2=[1,636],$Vu2=[1,642],$Vv2=[1,643],$Vw2=[1,644],$Vx2=[1,645],$Vy2=[2,287],$Vz2=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VA2=[2,359],$VB2=[1,668],$VC2=[1,678],$VD2=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VE2=[1,694],$VF2=[1,703],$VG2=[1,702],$VH2=[2,4,5,10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VI2=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VJ2=[2,202],$VK2=[1,725],$VL2=[10,72,78,93,98,118,128,162,168,169,183,232,245,247,306,310,602,764],$VM2=[2,163],$VN2=[1,728],$VO2=[2,4,5,112],$VP2=[1,741],$VQ2=[1,760],$VR2=[1,740],$VS2=[1,739],$VT2=[1,734],$VU2=[1,735],$VV2=[1,737],$VW2=[1,738],$VX2=[1,742],$VY2=[1,743],$VZ2=[1,744],$V_2=[1,745],$V$2=[1,746],$V03=[1,747],$V13=[1,748],$V23=[1,749],$V33=[1,750],$V43=[1,751],$V53=[1,752],$V63=[1,753],$V73=[1,754],$V83=[1,755],$V93=[1,756],$Va3=[1,757],$Vb3=[1,759],$Vc3=[1,761],$Vd3=[1,762],$Ve3=[1,763],$Vf3=[1,764],$Vg3=[1,765],$Vh3=[1,766],$Vi3=[1,767],$Vj3=[1,770],$Vk3=[1,771],$Vl3=[1,772],$Vm3=[1,773],$Vn3=[1,774],$Vo3=[1,775],$Vp3=[1,776],$Vq3=[1,777],$Vr3=[1,778],$Vs3=[1,779],$Vt3=[1,780],$Vu3=[1,781],$Vv3=[74,89,189],$Vw3=[10,74,78,154,187,230,297,306,310,343,356,368,369,373,374,602,764],$Vx3=[1,798],$Vy3=[10,74,78,300,306,310,602,764],$Vz3=[1,799],$VA3=[1,805],$VB3=[1,806],$VC3=[1,810],$VD3=[10,74,78,306,310,602,764],$VE3=[2,4,5,77,131,132,137,143,145,149,152,154,156,179,180,181,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,312,317,420,424],$VF3=[10,72,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VG3=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],$VH3=[2,4,5,132,296],$VI3=[1,844],$VJ3=[10,74,76,78,306,310,602,764],$VK3=[2,738],$VL3=[10,74,76,78,132,139,141,145,152,306,310,420,424,602,764],$VM3=[2,1161],$VN3=[10,74,76,78,139,141,145,152,306,310,420,424,602,764],$VO3=[10,74,76,78,139,141,145,306,310,420,424,602,764],$VP3=[10,74,78,139,141,306,310,602,764],$VQ3=[10,78,89,132,146,189,296,306,310,470,602,764],$VR3=[335,338,339],$VS3=[2,764],$VT3=[1,869],$VU3=[1,870],$VV3=[1,871],$VW3=[1,872],$VX3=[1,881],$VY3=[1,880],$VZ3=[164,166,334],$V_3=[2,444],$V$3=[1,936],$V04=[2,4,5,77,131,156,290,291,292,293],$V14=[1,951],$V24=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$V34=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$V44=[2,375],$V54=[1,958],$V64=[306,308,310],$V74=[74,300],$V84=[74,300,426],$V94=[1,965],$Va4=[2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vb4=[74,426],$Vc4=[1,978],$Vd4=[1,977],$Ve4=[1,984],$Vf4=[10,72,78,93,98,118,128,162,168,169,232,245,247,306,310,602,764],$Vg4=[1,1010],$Vh4=[10,72,78,306,310,602,764],$Vi4=[1,1016],$Vj4=[1,1017],$Vk4=[1,1018],$Vl4=[2,4,5,10,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],$Vm4=[1,1068],$Vn4=[1,1067],$Vo4=[1,1081],$Vp4=[1,1080],$Vq4=[1,1088],$Vr4=[10,72,74,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$Vs4=[1,1119],$Vt4=[10,78,89,146,189,306,310,470,602,764],$Vu4=[1,1139],$Vv4=[1,1138],$Vw4=[1,1137],$Vx4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy4=[1,1153],$Vz4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VA4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VB4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VC4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VD4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VE4=[2,406],$VF4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VG4=[2,285],$VH4=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$VI4=[10,78,306,310,602,764],$VJ4=[1,1189],$VK4=[10,77,78,143,145,152,181,302,306,310,420,424,602,764],$VL4=[10,74,78,306,308,310,464,602,764],$VM4=[1,1200],$VN4=[10,72,78,118,128,162,168,169,232,245,247,306,310,602,764],$VO4=[10,72,74,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],$VP4=[2,4,5,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VQ4=[2,4,5,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VR4=[2,1085],$VS4=[2,4,5,72,74,76,77,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],$VT4=[1,1252],$VU4=[10,74,78,128,306,308,310,464,602,764],$VV4=[115,116,124],$VW4=[2,584],$VX4=[1,1280],$VY4=[76,139],$VZ4=[2,724],$V_4=[1,1297],$V$4=[1,1298],$V05=[2,4,5,10,53,72,76,89,124,146,156,189,230,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$V15=[2,330],$V25=[1,1322],$V35=[1,1336],$V45=[1,1338],$V55=[2,487],$V65=[74,78],$V75=[10,306,308,310,464,602,764],$V85=[10,72,78,118,162,168,169,232,245,247,306,310,602,764],$V95=[1,1354],$Va5=[1,1358],$Vb5=[1,1359],$Vc5=[1,1361],$Vd5=[1,1362],$Ve5=[1,1363],$Vf5=[1,1364],$Vg5=[1,1365],$Vh5=[1,1366],$Vi5=[1,1367],$Vj5=[1,1368],$Vk5=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vl5=[1,1393],$Vm5=[10,72,78,118,162,168,169,245,247,306,310,602,764],$Vn5=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vo5=[1,1490],$Vp5=[1,1492],$Vq5=[2,4,5,77,143,145,152,156,181,290,291,292,293,302,420,424],$Vr5=[1,1506],$Vs5=[10,72,74,78,162,168,169,245,247,306,310,602,764],$Vt5=[1,1524],$Vu5=[1,1526],$Vv5=[1,1527],$Vw5=[1,1523],$Vx5=[1,1522],$Vy5=[1,1521],$Vz5=[1,1528],$VA5=[1,1518],$VB5=[1,1519],$VC5=[1,1520],$VD5=[1,1545],$VE5=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VF5=[1,1556],$VG5=[1,1564],$VH5=[1,1563],$VI5=[10,72,78,162,168,169,245,247,306,310,602,764],$VJ5=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VK5=[2,4,5,10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VL5=[1,1621],$VM5=[1,1623],$VN5=[1,1620],$VO5=[1,1622],$VP5=[187,193,368,369,370,373],$VQ5=[2,515],$VR5=[1,1628],$VS5=[1,1647],$VT5=[10,72,78,162,168,169,306,310,602,764],$VU5=[1,1657],$VV5=[1,1658],$VW5=[1,1659],$VX5=[1,1678],$VY5=[4,10,243,306,310,343,356,602,764],$VZ5=[1,1726],$V_5=[10,72,74,78,118,162,168,169,239,245,247,306,310,602,764],$V$5=[2,4,5,77],$V06=[1,1820],$V16=[1,1832],$V26=[1,1851],$V36=[10,72,78,162,168,169,306,310,415,602,764],$V46=[10,74,78,230,306,310,602,764];
+var parser = {trace: function trace() { },
+yy: {},
+symbols_: {"error":2,"Literal":3,"LITERAL":4,"BRALITERAL":5,"NonReserved":6,"LiteralWithSpaces":7,"main":8,"Statements":9,"EOF":10,"Statements_group0":11,"AStatement":12,"ExplainStatement":13,"EXPLAIN":14,"QUERY":15,"PLAN":16,"Statement":17,"AlterTable":18,"AttachDatabase":19,"Call":20,"CreateDatabase":21,"CreateIndex":22,"CreateGraph":23,"CreateTable":24,"CreateView":25,"CreateEdge":26,"CreateVertex":27,"Declare":28,"Delete":29,"DetachDatabase":30,"DropDatabase":31,"DropIndex":32,"DropTable":33,"DropView":34,"If":35,"Insert":36,"Merge":37,"Reindex":38,"RenameTable":39,"Select":40,"ShowCreateTable":41,"ShowColumns":42,"ShowDatabases":43,"ShowIndex":44,"ShowTables":45,"TruncateTable":46,"WithSelect":47,"CreateTrigger":48,"DropTrigger":49,"BeginTransaction":50,"CommitTransaction":51,"RollbackTransaction":52,"EndTransaction":53,"UseDatabase":54,"Update":55,"JavaScript":56,"Source":57,"Assert":58,"While":59,"Continue":60,"Break":61,"BeginEnd":62,"Print":63,"Require":64,"SetVariable":65,"ExpressionStatement":66,"AddRule":67,"Query":68,"Echo":69,"CreateFunction":70,"CreateAggregate":71,"WITH":72,"WithTablesList":73,"COMMA":74,"WithTable":75,"AS":76,"LPAR":77,"RPAR":78,"SelectClause":79,"Select_option0":80,"IntoClause":81,"FromClause":82,"Select_option1":83,"WhereClause":84,"GroupClause":85,"OrderClause":86,"LimitClause":87,"UnionClause":88,"SEARCH":89,"Select_repetition0":90,"Select_option2":91,"PivotClause":92,"PIVOT":93,"Expression":94,"FOR":95,"PivotClause_option0":96,"PivotClause_option1":97,"UNPIVOT":98,"IN":99,"ColumnsList":100,"PivotClause_option2":101,"PivotClause2":102,"AsList":103,"AsLiteral":104,"AsPart":105,"RemoveClause":106,"REMOVE":107,"RemoveClause_option0":108,"RemoveColumnsList":109,"RemoveColumn":110,"Column":111,"LIKE":112,"StringValue":113,"ArrowDot":114,"ARROW":115,"DOT":116,"SearchSelector":117,"ORDER":118,"BY":119,"OrderExpressionsList":120,"SearchSelector_option0":121,"DOTDOT":122,"CARET":123,"EQ":124,"SearchSelector_repetition_plus0":125,"SearchSelector_repetition_plus1":126,"SearchSelector_option1":127,"WHERE":128,"OF":129,"CLASS":130,"NUMBER":131,"STRING":132,"SLASH":133,"VERTEX":134,"EDGE":135,"EXCLAMATION":136,"SHARP":137,"MODULO":138,"GT":139,"LT":140,"GTGT":141,"LTLT":142,"DOLLAR":143,"Json":144,"AT":145,"SET":146,"SetColumnsList":147,"TO":148,"VALUE":149,"ROW":150,"ExprList":151,"COLON":152,"PlusStar":153,"NOT":154,"SearchSelector_repetition2":155,"IF":156,"SearchSelector_repetition3":157,"Aggregator":158,"SearchSelector_repetition4":159,"SearchSelector_group0":160,"SearchSelector_repetition5":161,"UNION":162,"SearchSelectorList":163,"ALL":164,"SearchSelector_repetition6":165,"ANY":166,"SearchSelector_repetition7":167,"INTERSECT":168,"EXCEPT":169,"AND":170,"OR":171,"PATH":172,"RETURN":173,"ResultColumns":174,"REPEAT":175,"SearchSelector_repetition8":176,"SearchSelectorList_repetition0":177,"SearchSelectorList_repetition1":178,"PLUS":179,"STAR":180,"QUESTION":181,"SearchFrom":182,"FROM":183,"SelectModifier":184,"DISTINCT":185,"TopClause":186,"UNIQUE":187,"SelectClause_option0":188,"SELECT":189,"COLUMN":190,"MATRIX":191,"TEXTSTRING":192,"INDEX":193,"RECORDSET":194,"TOP":195,"NumValue":196,"TopClause_option0":197,"INTO":198,"Table":199,"FuncValue":200,"ParamValue":201,"VarValue":202,"FromTablesList":203,"JoinTablesList":204,"ApplyClause":205,"CROSS":206,"APPLY":207,"OUTER":208,"FromTable":209,"FromTable_option0":210,"FromTable_option1":211,"INDEXED":212,"INSERTED":213,"FromString":214,"JoinTable":215,"JoinMode":216,"JoinTableAs":217,"OnClause":218,"JoinTableAs_option0":219,"JoinTableAs_option1":220,"JoinModeMode":221,"NATURAL":222,"JOIN":223,"INNER":224,"LEFT":225,"RIGHT":226,"FULL":227,"SEMI":228,"ANTI":229,"ON":230,"USING":231,"GROUP":232,"GroupExpressionsList":233,"HavingClause":234,"GroupExpression":235,"GROUPING":236,"ROLLUP":237,"CUBE":238,"HAVING":239,"CORRESPONDING":240,"OrderExpression":241,"DIRECTION":242,"COLLATE":243,"NOCASE":244,"LIMIT":245,"OffsetClause":246,"OFFSET":247,"LimitClause_option0":248,"FETCH":249,"LimitClause_option1":250,"LimitClause_option2":251,"LimitClause_option3":252,"ResultColumn":253,"Star":254,"AggrValue":255,"Op":256,"LogicValue":257,"NullValue":258,"ExistsValue":259,"CaseValue":260,"CastClause":261,"ArrayValue":262,"NewClause":263,"Expression_group0":264,"CURRENT_TIMESTAMP":265,"JAVASCRIPT":266,"CREATE":267,"FUNCTION":268,"AGGREGATE":269,"NEW":270,"CAST":271,"ColumnType":272,"CONVERT":273,"PrimitiveValue":274,"OverClause":275,"OVER":276,"OverPartitionClause":277,"OverOrderByClause":278,"PARTITION":279,"SUM":280,"COUNT":281,"MIN":282,"MAX":283,"AVG":284,"FIRST":285,"LAST":286,"AGGR":287,"ARRAY":288,"FuncValue_option0":289,"REPLACE":290,"DATEADD":291,"DATEDIFF":292,"INTERVAL":293,"TRUE":294,"FALSE":295,"NSTRING":296,"NULL":297,"EXISTS":298,"ARRAYLBRA":299,"RBRA":300,"ParamValue_group0":301,"BRAQUESTION":302,"CASE":303,"WhensList":304,"ElseClause":305,"END":306,"When":307,"WHEN":308,"THEN":309,"ELSE":310,"REGEXP":311,"TILDA":312,"GLOB":313,"ESCAPE":314,"NOT_LIKE":315,"BARBAR":316,"MINUS":317,"AMPERSAND":318,"BAR":319,"GE":320,"LE":321,"EQEQ":322,"EQEQEQ":323,"NE":324,"NEEQEQ":325,"NEEQEQEQ":326,"CondOp":327,"AllSome":328,"ColFunc":329,"BETWEEN":330,"NOT_BETWEEN":331,"IS":332,"DOUBLECOLON":333,"SOME":334,"UPDATE":335,"SetColumn":336,"SetColumn_group0":337,"DELETE":338,"INSERT":339,"Into":340,"Values":341,"ValuesListsList":342,"DEFAULT":343,"VALUES":344,"ValuesList":345,"Value":346,"DateValue":347,"TemporaryClause":348,"TableClass":349,"IfNotExists":350,"CreateTableDefClause":351,"CreateTableOptionsClause":352,"TABLE":353,"CreateTableOptions":354,"CreateTableOption":355,"IDENTITY":356,"TEMP":357,"ColumnDefsList":358,"ConstraintsList":359,"Constraint":360,"ConstraintName":361,"PrimaryKey":362,"ForeignKey":363,"UniqueKey":364,"IndexKey":365,"Check":366,"CONSTRAINT":367,"CHECK":368,"PRIMARY":369,"KEY":370,"PrimaryKey_option0":371,"ColsList":372,"FOREIGN":373,"REFERENCES":374,"ForeignKey_option0":375,"OnForeignKeyClause":376,"ParColsList":377,"OnDeleteClause":378,"OnUpdateClause":379,"NO":380,"ACTION":381,"UniqueKey_option0":382,"UniqueKey_option1":383,"ColumnDef":384,"ColumnConstraintsClause":385,"ColumnConstraints":386,"SingularColumnType":387,"NumberMax":388,"ENUM":389,"MAXNUM":390,"ColumnConstraintsList":391,"ColumnConstraint":392,"ParLiteral":393,"ColumnConstraint_option0":394,"ColumnConstraint_option1":395,"DROP":396,"DropTable_group0":397,"IfExists":398,"TablesList":399,"ALTER":400,"RENAME":401,"ADD":402,"MODIFY":403,"ATTACH":404,"DATABASE":405,"DETACH":406,"AsClause":407,"USE":408,"SHOW":409,"VIEW":410,"CreateView_option0":411,"CreateView_option1":412,"SubqueryRestriction":413,"READ":414,"ONLY":415,"OPTION":416,"SOURCE":417,"ASSERT":418,"JsonObject":419,"ATLBRA":420,"JsonArray":421,"JsonValue":422,"JsonPrimitiveValue":423,"LCUR":424,"JsonPropertiesList":425,"RCUR":426,"JsonElementsList":427,"JsonProperty":428,"OnOff":429,"SetPropsList":430,"AtDollar":431,"SetProp":432,"OFF":433,"COMMIT":434,"TRANSACTION":435,"ROLLBACK":436,"BEGIN":437,"ElseStatement":438,"WHILE":439,"CONTINUE":440,"BREAK":441,"PRINT":442,"REQUIRE":443,"StringValuesList":444,"PluginsList":445,"Plugin":446,"ECHO":447,"DECLARE":448,"DeclaresList":449,"DeclareItem":450,"TRUNCATE":451,"MERGE":452,"MergeInto":453,"MergeUsing":454,"MergeOn":455,"MergeMatchedList":456,"OutputClause":457,"MergeMatched":458,"MergeNotMatched":459,"MATCHED":460,"MergeMatchedAction":461,"MergeNotMatchedAction":462,"TARGET":463,"OUTPUT":464,"CreateVertex_option0":465,"CreateVertex_option1":466,"CreateVertex_option2":467,"CreateVertexSet":468,"SharpValue":469,"CONTENT":470,"CreateEdge_option0":471,"GRAPH":472,"GraphList":473,"GraphVertexEdge":474,"GraphElement":475,"GraphVertexEdge_option0":476,"GraphVertexEdge_option1":477,"GraphElementVar":478,"GraphVertexEdge_option2":479,"GraphVertexEdge_option3":480,"GraphVertexEdge_option4":481,"GraphVar":482,"GraphAsClause":483,"GraphAtClause":484,"GraphElement2":485,"GraphElement2_option0":486,"GraphElement2_option1":487,"GraphElement2_option2":488,"GraphElement2_option3":489,"GraphElement_option0":490,"GraphElement_option1":491,"GraphElement_option2":492,"SharpLiteral":493,"GraphElement_option3":494,"GraphElement_option4":495,"GraphElement_option5":496,"ColonLiteral":497,"DeleteVertex":498,"DeleteVertex_option0":499,"DeleteEdge":500,"DeleteEdge_option0":501,"DeleteEdge_option1":502,"DeleteEdge_option2":503,"Term":504,"COLONDASH":505,"TermsList":506,"QUESTIONDASH":507,"CALL":508,"TRIGGER":509,"BeforeAfter":510,"InsertDeleteUpdate":511,"CreateTrigger_option0":512,"CreateTrigger_option1":513,"BEFORE":514,"AFTER":515,"INSTEAD":516,"REINDEX":517,"A":518,"ABSENT":519,"ABSOLUTE":520,"ACCORDING":521,"ADA":522,"ADMIN":523,"ALWAYS":524,"ASC":525,"ASSERTION":526,"ASSIGNMENT":527,"ATTRIBUTE":528,"ATTRIBUTES":529,"BASE64":530,"BERNOULLI":531,"BLOCKED":532,"BOM":533,"BREADTH":534,"C":535,"CASCADE":536,"CATALOG":537,"CATALOG_NAME":538,"CHAIN":539,"CHARACTERISTICS":540,"CHARACTERS":541,"CHARACTER_SET_CATALOG":542,"CHARACTER_SET_NAME":543,"CHARACTER_SET_SCHEMA":544,"CLASS_ORIGIN":545,"COBOL":546,"COLLATION":547,"COLLATION_CATALOG":548,"COLLATION_NAME":549,"COLLATION_SCHEMA":550,"COLUMNS":551,"COLUMN_NAME":552,"COMMAND_FUNCTION":553,"COMMAND_FUNCTION_CODE":554,"COMMITTED":555,"CONDITION_NUMBER":556,"CONNECTION":557,"CONNECTION_NAME":558,"CONSTRAINTS":559,"CONSTRAINT_CATALOG":560,"CONSTRAINT_NAME":561,"CONSTRAINT_SCHEMA":562,"CONSTRUCTOR":563,"CONTROL":564,"CURSOR_NAME":565,"DATA":566,"DATETIME_INTERVAL_CODE":567,"DATETIME_INTERVAL_PRECISION":568,"DB":569,"DEFAULTS":570,"DEFERRABLE":571,"DEFERRED":572,"DEFINED":573,"DEFINER":574,"DEGREE":575,"DEPTH":576,"DERIVED":577,"DESC":578,"DESCRIPTOR":579,"DIAGNOSTICS":580,"DISPATCH":581,"DOCUMENT":582,"DOMAIN":583,"DYNAMIC_FUNCTION":584,"DYNAMIC_FUNCTION_CODE":585,"EMPTY":586,"ENCODING":587,"ENFORCED":588,"EXCLUDE":589,"EXCLUDING":590,"EXPRESSION":591,"FILE":592,"FINAL":593,"FLAG":594,"FOLLOWING":595,"FORTRAN":596,"FOUND":597,"FS":598,"G":599,"GENERAL":600,"GENERATED":601,"GO":602,"GOTO":603,"GRANTED":604,"HEX":605,"HIERARCHY":606,"ID":607,"IGNORE":608,"IMMEDIATE":609,"IMMEDIATELY":610,"IMPLEMENTATION":611,"INCLUDING":612,"INCREMENT":613,"INDENT":614,"INITIALLY":615,"INPUT":616,"INSTANCE":617,"INSTANTIABLE":618,"INTEGRITY":619,"INVOKER":620,"ISOLATION":621,"K":622,"KEY_MEMBER":623,"KEY_TYPE":624,"LENGTH":625,"LEVEL":626,"LIBRARY":627,"LINK":628,"LOCATION":629,"LOCATOR":630,"M":631,"MAP":632,"MAPPING":633,"MAXVALUE":634,"MESSAGE_LENGTH":635,"MESSAGE_OCTET_LENGTH":636,"MESSAGE_TEXT":637,"MINVALUE":638,"MORE":639,"MUMPS":640,"NAME":641,"NAMES":642,"NAMESPACE":643,"NESTING":644,"NEXT":645,"NFC":646,"NFD":647,"NFKC":648,"NFKD":649,"NIL":650,"NORMALIZED":651,"NULLABLE":652,"NULLS":653,"OBJECT":654,"OCTETS":655,"OPTIONS":656,"ORDERING":657,"ORDINALITY":658,"OTHERS":659,"OVERRIDING":660,"P":661,"PAD":662,"PARAMETER_MODE":663,"PARAMETER_NAME":664,"PARAMETER_ORDINAL_POSITION":665,"PARAMETER_SPECIFIC_CATALOG":666,"PARAMETER_SPECIFIC_NAME":667,"PARAMETER_SPECIFIC_SCHEMA":668,"PARTIAL":669,"PASCAL":670,"PASSING":671,"PASSTHROUGH":672,"PERMISSION":673,"PLACING":674,"PLI":675,"PRECEDING":676,"PRESERVE":677,"PRIOR":678,"PRIVILEGES":679,"PUBLIC":680,"RECOVERY":681,"RELATIVE":682,"REPEATABLE":683,"REQUIRING":684,"RESPECT":685,"RESTART":686,"RESTORE":687,"RESTRICT":688,"RETURNED_CARDINALITY":689,"RETURNED_LENGTH":690,"RETURNED_OCTET_LENGTH":691,"RETURNED_SQLSTATE":692,"RETURNING":693,"ROLE":694,"ROUTINE":695,"ROUTINE_CATALOG":696,"ROUTINE_NAME":697,"ROUTINE_SCHEMA":698,"ROW_COUNT":699,"SCALE":700,"SCHEMA":701,"SCHEMA_NAME":702,"SCOPE_CATALOG":703,"SCOPE_NAME":704,"SCOPE_SCHEMA":705,"SECTION":706,"SECURITY":707,"SELECTIVE":708,"SELF":709,"SEQUENCE":710,"SERIALIZABLE":711,"SERVER":712,"SERVER_NAME":713,"SESSION":714,"SETS":715,"SIMPLE":716,"SIZE":717,"SPACE":718,"SPECIFIC_NAME":719,"STANDALONE":720,"STATE":721,"STATEMENT":722,"STRIP":723,"STRUCTURE":724,"STYLE":725,"SUBCLASS_ORIGIN":726,"T":727,"TABLE_NAME":728,"TEMPORARY":729,"TIES":730,"TOKEN":731,"TOP_LEVEL_COUNT":732,"TRANSACTIONS_COMMITTED":733,"TRANSACTIONS_ROLLED_BACK":734,"TRANSACTION_ACTIVE":735,"TRANSFORM":736,"TRANSFORMS":737,"TRIGGER_CATALOG":738,"TRIGGER_NAME":739,"TRIGGER_SCHEMA":740,"TYPE":741,"UNBOUNDED":742,"UNCOMMITTED":743,"UNDER":744,"UNLINK":745,"UNNAMED":746,"UNTYPED":747,"URI":748,"USAGE":749,"USER_DEFINED_TYPE_CATALOG":750,"USER_DEFINED_TYPE_CODE":751,"USER_DEFINED_TYPE_NAME":752,"USER_DEFINED_TYPE_SCHEMA":753,"VALID":754,"VERSION":755,"WHITESPACE":756,"WORK":757,"WRAPPER":758,"WRITE":759,"XMLDECLARATION":760,"XMLSCHEMA":761,"YES":762,"ZONE":763,"SEMICOLON":764,"PERCENT":765,"ROWS":766,"FuncValue_option0_group0":767,"$accept":0,"$end":1},
+terminals_: {2:"error",4:"LITERAL",5:"BRALITERAL",10:"EOF",14:"EXPLAIN",15:"QUERY",16:"PLAN",53:"EndTransaction",72:"WITH",74:"COMMA",76:"AS",77:"LPAR",78:"RPAR",89:"SEARCH",93:"PIVOT",95:"FOR",98:"UNPIVOT",99:"IN",107:"REMOVE",112:"LIKE",115:"ARROW",116:"DOT",118:"ORDER",119:"BY",122:"DOTDOT",123:"CARET",124:"EQ",128:"WHERE",129:"OF",130:"CLASS",131:"NUMBER",132:"STRING",133:"SLASH",134:"VERTEX",135:"EDGE",136:"EXCLAMATION",137:"SHARP",138:"MODULO",139:"GT",140:"LT",141:"GTGT",142:"LTLT",143:"DOLLAR",145:"AT",146:"SET",148:"TO",149:"VALUE",150:"ROW",152:"COLON",154:"NOT",156:"IF",162:"UNION",164:"ALL",166:"ANY",168:"INTERSECT",169:"EXCEPT",170:"AND",171:"OR",172:"PATH",173:"RETURN",175:"REPEAT",179:"PLUS",180:"STAR",181:"QUESTION",183:"FROM",185:"DISTINCT",187:"UNIQUE",189:"SELECT",190:"COLUMN",191:"MATRIX",192:"TEXTSTRING",193:"INDEX",194:"RECORDSET",195:"TOP",198:"INTO",206:"CROSS",207:"APPLY",208:"OUTER",212:"INDEXED",213:"INSERTED",222:"NATURAL",223:"JOIN",224:"INNER",225:"LEFT",226:"RIGHT",227:"FULL",228:"SEMI",229:"ANTI",230:"ON",231:"USING",232:"GROUP",236:"GROUPING",237:"ROLLUP",238:"CUBE",239:"HAVING",240:"CORRESPONDING",242:"DIRECTION",243:"COLLATE",244:"NOCASE",245:"LIMIT",247:"OFFSET",249:"FETCH",265:"CURRENT_TIMESTAMP",266:"JAVASCRIPT",267:"CREATE",268:"FUNCTION",269:"AGGREGATE",270:"NEW",271:"CAST",273:"CONVERT",276:"OVER",279:"PARTITION",280:"SUM",281:"COUNT",282:"MIN",283:"MAX",284:"AVG",285:"FIRST",286:"LAST",287:"AGGR",288:"ARRAY",290:"REPLACE",291:"DATEADD",292:"DATEDIFF",293:"INTERVAL",294:"TRUE",295:"FALSE",296:"NSTRING",297:"NULL",298:"EXISTS",299:"ARRAYLBRA",300:"RBRA",302:"BRAQUESTION",303:"CASE",306:"END",308:"WHEN",309:"THEN",310:"ELSE",311:"REGEXP",312:"TILDA",313:"GLOB",314:"ESCAPE",315:"NOT_LIKE",316:"BARBAR",317:"MINUS",318:"AMPERSAND",319:"BAR",320:"GE",321:"LE",322:"EQEQ",323:"EQEQEQ",324:"NE",325:"NEEQEQ",326:"NEEQEQEQ",330:"BETWEEN",331:"NOT_BETWEEN",332:"IS",333:"DOUBLECOLON",334:"SOME",335:"UPDATE",338:"DELETE",339:"INSERT",343:"DEFAULT",344:"VALUES",347:"DateValue",353:"TABLE",356:"IDENTITY",357:"TEMP",367:"CONSTRAINT",368:"CHECK",369:"PRIMARY",370:"KEY",373:"FOREIGN",374:"REFERENCES",380:"NO",381:"ACTION",386:"ColumnConstraints",389:"ENUM",390:"MAXNUM",396:"DROP",400:"ALTER",401:"RENAME",402:"ADD",403:"MODIFY",404:"ATTACH",405:"DATABASE",406:"DETACH",408:"USE",409:"SHOW",410:"VIEW",414:"READ",415:"ONLY",416:"OPTION",417:"SOURCE",418:"ASSERT",420:"ATLBRA",424:"LCUR",426:"RCUR",433:"OFF",434:"COMMIT",435:"TRANSACTION",436:"ROLLBACK",437:"BEGIN",439:"WHILE",440:"CONTINUE",441:"BREAK",442:"PRINT",443:"REQUIRE",447:"ECHO",448:"DECLARE",451:"TRUNCATE",452:"MERGE",460:"MATCHED",463:"TARGET",464:"OUTPUT",470:"CONTENT",472:"GRAPH",505:"COLONDASH",507:"QUESTIONDASH",508:"CALL",509:"TRIGGER",514:"BEFORE",515:"AFTER",516:"INSTEAD",517:"REINDEX",518:"A",519:"ABSENT",520:"ABSOLUTE",521:"ACCORDING",522:"ADA",523:"ADMIN",524:"ALWAYS",525:"ASC",526:"ASSERTION",527:"ASSIGNMENT",528:"ATTRIBUTE",529:"ATTRIBUTES",530:"BASE64",531:"BERNOULLI",532:"BLOCKED",533:"BOM",534:"BREADTH",535:"C",536:"CASCADE",537:"CATALOG",538:"CATALOG_NAME",539:"CHAIN",540:"CHARACTERISTICS",541:"CHARACTERS",542:"CHARACTER_SET_CATALOG",543:"CHARACTER_SET_NAME",544:"CHARACTER_SET_SCHEMA",545:"CLASS_ORIGIN",546:"COBOL",547:"COLLATION",548:"COLLATION_CATALOG",549:"COLLATION_NAME",550:"COLLATION_SCHEMA",551:"COLUMNS",552:"COLUMN_NAME",553:"COMMAND_FUNCTION",554:"COMMAND_FUNCTION_CODE",555:"COMMITTED",556:"CONDITION_NUMBER",557:"CONNECTION",558:"CONNECTION_NAME",559:"CONSTRAINTS",560:"CONSTRAINT_CATALOG",561:"CONSTRAINT_NAME",562:"CONSTRAINT_SCHEMA",563:"CONSTRUCTOR",564:"CONTROL",565:"CURSOR_NAME",566:"DATA",567:"DATETIME_INTERVAL_CODE",568:"DATETIME_INTERVAL_PRECISION",569:"DB",570:"DEFAULTS",571:"DEFERRABLE",572:"DEFERRED",573:"DEFINED",574:"DEFINER",575:"DEGREE",576:"DEPTH",577:"DERIVED",578:"DESC",579:"DESCRIPTOR",580:"DIAGNOSTICS",581:"DISPATCH",582:"DOCUMENT",583:"DOMAIN",584:"DYNAMIC_FUNCTION",585:"DYNAMIC_FUNCTION_CODE",586:"EMPTY",587:"ENCODING",588:"ENFORCED",589:"EXCLUDE",590:"EXCLUDING",591:"EXPRESSION",592:"FILE",593:"FINAL",594:"FLAG",595:"FOLLOWING",596:"FORTRAN",597:"FOUND",598:"FS",599:"G",600:"GENERAL",601:"GENERATED",602:"GO",603:"GOTO",604:"GRANTED",605:"HEX",606:"HIERARCHY",607:"ID",608:"IGNORE",609:"IMMEDIATE",610:"IMMEDIATELY",611:"IMPLEMENTATION",612:"INCLUDING",613:"INCREMENT",614:"INDENT",615:"INITIALLY",616:"INPUT",617:"INSTANCE",618:"INSTANTIABLE",619:"INTEGRITY",620:"INVOKER",621:"ISOLATION",622:"K",623:"KEY_MEMBER",624:"KEY_TYPE",625:"LENGTH",626:"LEVEL",627:"LIBRARY",628:"LINK",629:"LOCATION",630:"LOCATOR",631:"M",632:"MAP",633:"MAPPING",634:"MAXVALUE",635:"MESSAGE_LENGTH",636:"MESSAGE_OCTET_LENGTH",637:"MESSAGE_TEXT",638:"MINVALUE",639:"MORE",640:"MUMPS",641:"NAME",642:"NAMES",643:"NAMESPACE",644:"NESTING",645:"NEXT",646:"NFC",647:"NFD",648:"NFKC",649:"NFKD",650:"NIL",651:"NORMALIZED",652:"NULLABLE",653:"NULLS",654:"OBJECT",655:"OCTETS",656:"OPTIONS",657:"ORDERING",658:"ORDINALITY",659:"OTHERS",660:"OVERRIDING",661:"P",662:"PAD",663:"PARAMETER_MODE",664:"PARAMETER_NAME",665:"PARAMETER_ORDINAL_POSITION",666:"PARAMETER_SPECIFIC_CATALOG",667:"PARAMETER_SPECIFIC_NAME",668:"PARAMETER_SPECIFIC_SCHEMA",669:"PARTIAL",670:"PASCAL",671:"PASSING",672:"PASSTHROUGH",673:"PERMISSION",674:"PLACING",675:"PLI",676:"PRECEDING",677:"PRESERVE",678:"PRIOR",679:"PRIVILEGES",680:"PUBLIC",681:"RECOVERY",682:"RELATIVE",683:"REPEATABLE",684:"REQUIRING",685:"RESPECT",686:"RESTART",687:"RESTORE",688:"RESTRICT",689:"RETURNED_CARDINALITY",690:"RETURNED_LENGTH",691:"RETURNED_OCTET_LENGTH",692:"RETURNED_SQLSTATE",693:"RETURNING",694:"ROLE",695:"ROUTINE",696:"ROUTINE_CATALOG",697:"ROUTINE_NAME",698:"ROUTINE_SCHEMA",699:"ROW_COUNT",700:"SCALE",701:"SCHEMA",702:"SCHEMA_NAME",703:"SCOPE_CATALOG",704:"SCOPE_NAME",705:"SCOPE_SCHEMA",706:"SECTION",707:"SECURITY",708:"SELECTIVE",709:"SELF",710:"SEQUENCE",711:"SERIALIZABLE",712:"SERVER",713:"SERVER_NAME",714:"SESSION",715:"SETS",716:"SIMPLE",717:"SIZE",718:"SPACE",719:"SPECIFIC_NAME",720:"STANDALONE",721:"STATE",722:"STATEMENT",723:"STRIP",724:"STRUCTURE",725:"STYLE",726:"SUBCLASS_ORIGIN",727:"T",728:"TABLE_NAME",729:"TEMPORARY",730:"TIES",731:"TOKEN",732:"TOP_LEVEL_COUNT",733:"TRANSACTIONS_COMMITTED",734:"TRANSACTIONS_ROLLED_BACK",735:"TRANSACTION_ACTIVE",736:"TRANSFORM",737:"TRANSFORMS",738:"TRIGGER_CATALOG",739:"TRIGGER_NAME",740:"TRIGGER_SCHEMA",741:"TYPE",742:"UNBOUNDED",743:"UNCOMMITTED",744:"UNDER",745:"UNLINK",746:"UNNAMED",747:"UNTYPED",748:"URI",749:"USAGE",750:"USER_DEFINED_TYPE_CATALOG",751:"USER_DEFINED_TYPE_CODE",752:"USER_DEFINED_TYPE_NAME",753:"USER_DEFINED_TYPE_SCHEMA",754:"VALID",755:"VERSION",756:"WHITESPACE",757:"WORK",758:"WRAPPER",759:"WRITE",760:"XMLDECLARATION",761:"XMLSCHEMA",762:"YES",763:"ZONE",764:"SEMICOLON",765:"PERCENT",766:"ROWS"},
+productions_: [0,[3,1],[3,1],[3,2],[7,1],[7,2],[8,2],[9,3],[9,1],[9,1],[13,2],[13,4],[12,1],[17,0],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[47,3],[73,3],[73,1],[75,5],[40,10],[40,4],[92,8],[92,11],[102,4],[104,2],[104,1],[103,3],[103,1],[105,1],[105,3],[106,3],[109,3],[109,1],[110,1],[110,2],[114,1],[114,1],[117,1],[117,5],[117,5],[117,1],[117,2],[117,1],[117,2],[117,2],[117,3],[117,4],[117,4],[117,4],[117,4],[117,4],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,2],[117,2],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,3],[117,4],[117,3],[117,1],[117,4],[117,2],[117,2],[117,4],[117,4],[117,4],[117,4],[117,4],[117,5],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,6],[163,3],[163,1],[153,1],[153,1],[153,1],[182,2],[79,4],[79,4],[79,4],[79,3],[184,1],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[186,3],[186,4],[186,0],[81,0],[81,2],[81,2],[81,2],[81,2],[81,2],[82,2],[82,3],[82,5],[82,0],[205,6],[205,7],[205,6],[205,7],[203,1],[203,3],[209,4],[209,5],[209,3],[209,3],[209,2],[209,3],[209,1],[209,3],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,2],[209,3],[214,1],[199,3],[199,1],[204,2],[204,2],[204,1],[204,1],[215,3],[217,1],[217,2],[217,3],[217,3],[217,2],[217,3],[217,4],[217,5],[217,1],[217,2],[217,3],[217,1],[217,2],[217,3],[216,1],[216,2],[221,1],[221,2],[221,2],[221,3],[221,2],[221,3],[221,2],[221,3],[221,2],[221,2],[221,2],[218,2],[218,2],[218,0],[84,0],[84,2],[85,0],[85,4],[233,1],[233,3],[235,5],[235,4],[235,4],[235,1],[234,0],[234,2],[88,0],[88,2],[88,3],[88,2],[88,2],[88,3],[88,4],[88,3],[88,3],[86,0],[86,3],[120,1],[120,3],[241,1],[241,2],[241,3],[241,4],[87,0],[87,3],[87,8],[246,0],[246,2],[174,3],[174,1],[253,3],[253,2],[253,3],[253,2],[253,3],[253,2],[253,1],[254,5],[254,3],[254,1],[111,5],[111,3],[111,3],[111,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,3],[94,3],[94,3],[94,1],[94,1],[56,1],[70,5],[71,5],[263,2],[263,2],[261,6],[261,8],[261,6],[261,8],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[255,5],[255,6],[255,6],[275,0],[275,4],[275,4],[275,5],[277,3],[278,3],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[200,5],[200,3],[200,4],[200,4],[200,8],[200,8],[200,8],[200,8],[200,3],[151,1],[151,3],[196,1],[257,1],[257,1],[113,1],[113,1],[258,1],[202,2],[259,4],[262,3],[201,2],[201,2],[201,1],[201,1],[260,5],[260,4],[304,2],[304,1],[307,4],[305,2],[305,0],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,6],[256,6],[256,3],[256,3],[256,2],[256,2],[256,2],[256,2],[256,2],[256,3],[256,5],[256,6],[256,5],[256,6],[256,4],[256,5],[256,3],[256,4],[256,3],[256,4],[256,3],[256,3],[256,3],[256,3],[256,3],[329,1],[329,1],[329,4],[327,1],[327,1],[327,1],[327,1],[327,1],[327,1],[328,1],[328,1],[328,1],[55,6],[55,4],[147,1],[147,3],[336,3],[336,4],[29,5],[29,3],[36,5],[36,4],[36,7],[36,6],[36,5],[36,4],[36,5],[36,8],[36,7],[36,4],[36,6],[36,7],[341,1],[341,1],[340,0],[340,1],[342,3],[342,1],[342,1],[342,5],[342,3],[342,3],[345,1],[345,3],[346,1],[346,1],[346,1],[346,1],[346,1],[346,1],[100,1],[100,3],[24,9],[24,5],[349,1],[349,1],[352,0],[352,1],[354,2],[354,1],[355,1],[355,3],[355,3],[355,3],[348,0],[348,1],[350,0],[350,3],[351,3],[351,1],[351,2],[359,1],[359,3],[360,2],[360,2],[360,2],[360,2],[360,2],[361,0],[361,2],[366,4],[362,6],[363,9],[377,3],[376,0],[376,2],[378,4],[379,4],[364,6],[365,5],[365,5],[372,1],[372,1],[372,3],[372,3],[358,1],[358,3],[384,3],[384,2],[384,1],[387,6],[387,4],[387,1],[387,4],[272,2],[272,1],[388,1],[388,1],[385,0],[385,1],[391,2],[391,1],[393,3],[392,2],[392,5],[392,3],[392,6],[392,1],[392,2],[392,4],[392,2],[392,1],[392,2],[392,1],[392,1],[392,3],[392,5],[33,4],[399,3],[399,1],[398,0],[398,2],[18,6],[18,6],[18,6],[18,8],[18,6],[39,5],[19,4],[19,7],[19,6],[19,9],[30,3],[21,4],[21,6],[21,9],[21,6],[407,0],[407,2],[54,3],[54,2],[31,4],[31,5],[31,5],[22,8],[22,9],[32,3],[43,2],[43,4],[43,3],[43,5],[45,2],[45,4],[45,4],[45,6],[42,4],[42,6],[44,4],[44,6],[41,4],[41,6],[25,11],[25,8],[413,3],[413,3],[413,5],[34,4],[66,2],[57,2],[58,2],[58,2],[58,4],[144,4],[144,2],[144,2],[144,2],[144,2],[144,1],[144,2],[144,2],[422,1],[422,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,3],[419,3],[419,4],[419,2],[421,2],[421,3],[421,1],[425,3],[425,1],[428,3],[428,3],[428,3],[427,3],[427,1],[65,4],[65,3],[65,4],[65,5],[65,5],[65,6],[431,1],[431,1],[430,3],[430,2],[432,1],[432,1],[432,3],[429,1],[429,1],[51,2],[52,2],[50,2],[35,4],[35,3],[438,2],[59,3],[60,1],[61,1],[62,3],[63,2],[63,2],[64,2],[64,2],[446,1],[446,1],[69,2],[444,3],[444,1],[445,3],[445,1],[28,2],[449,1],[449,3],[450,3],[450,4],[450,5],[450,6],[46,3],[37,6],[453,1],[453,2],[454,2],[455,2],[456,2],[456,2],[456,1],[456,1],[458,4],[458,6],[461,1],[461,3],[459,5],[459,7],[459,7],[459,9],[459,7],[459,9],[462,3],[462,6],[462,3],[462,6],[457,0],[457,2],[457,5],[457,4],[457,7],[27,6],[469,2],[468,0],[468,2],[468,2],[468,1],[26,8],[23,3],[23,4],[473,3],[473,1],[474,3],[474,7],[474,6],[474,3],[474,4],[478,1],[478,1],[482,2],[483,3],[484,2],[485,4],[475,4],[475,3],[475,2],[475,1],[497,2],[493,2],[493,2],[498,4],[500,6],[67,3],[67,2],[506,3],[506,1],[504,1],[504,4],[68,2],[20,2],[48,9],[48,8],[48,9],[510,0],[510,1],[510,1],[510,1],[510,2],[511,1],[511,1],[511,1],[49,3],[38,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[11,1],[11,1],[80,0],[80,1],[83,0],[83,1],[90,0],[90,2],[91,0],[91,1],[96,0],[96,1],[97,0],[97,1],[101,0],[101,1],[108,0],[108,1],[121,0],[121,1],[125,1],[125,2],[126,1],[126,2],[127,0],[127,1],[155,0],[155,2],[157,0],[157,2],[159,0],[159,2],[160,1],[160,1],[161,0],[161,2],[165,0],[165,2],[167,0],[167,2],[176,0],[176,2],[177,0],[177,2],[178,0],[178,2],[188,0],[188,1],[197,0],[197,1],[210,0],[210,1],[211,0],[211,1],[219,0],[219,1],[220,0],[220,1],[248,0],[248,1],[250,0],[250,1],[251,0],[251,1],[252,0],[252,1],[264,1],[264,1],[767,1],[767,1],[289,0],[289,1],[301,1],[301,1],[337,1],[337,1],[371,0],[371,1],[375,0],[375,1],[382,0],[382,1],[383,0],[383,1],[394,0],[394,1],[395,0],[395,1],[397,1],[397,1],[411,0],[411,1],[412,0],[412,1],[465,0],[465,1],[466,0],[466,1],[467,0],[467,1],[471,0],[471,1],[476,0],[476,1],[477,0],[477,1],[479,0],[479,1],[480,0],[480,1],[481,0],[481,1],[486,0],[486,1],[487,0],[487,1],[488,0],[488,1],[489,0],[489,1],[490,0],[490,1],[491,0],[491,1],[492,0],[492,1],[494,0],[494,1],[495,0],[495,1],[496,0],[496,1],[499,0],[499,2],[501,0],[501,2],[502,0],[502,2],[503,0],[503,2],[512,0],[512,1],[513,0],[513,1]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 1:
+
+ if (alasql.options.casesensitive) this.$ = $$[$0];
+ else this.$ = $$[$0].toLowerCase();
+
+break;
+case 2:
+ this.$ = doubleq($$[$0].substr(1,$$[$0].length-2));
+break;
+case 3:
+ this.$ = $$[$0].toLowerCase()
+break;
+case 4:
+ this.$ = $$[$0]
+break;
+case 5:
+ this.$ = $$[$0] ? $$[$0-1] + ' ' + $$[$0] : $$[$0-1]
+break;
+case 6:
+ return new yy.Statements({statements:$$[$0-1]});
+break;
+case 7:
+ this.$ = $$[$0-2]; if($$[$0]) $$[$0-2].push($$[$0]);
+break;
+case 8: case 9: case 70: case 80: case 85: case 143: case 177: case 205: case 206: case 242: case 261: case 273: case 354: case 372: case 451: case 474: case 475: case 479: case 487: case 528: case 529: case 566: case 649: case 659: case 683: case 685: case 687: case 701: case 702: case 732: case 756:
+ this.$ = [$$[$0]];
+break;
+case 10:
+ this.$ = $$[$0]; $$[$0].explain = true;
+break;
+case 11:
+ this.$ = $$[$0]; $$[$0].explain = true;
+break;
+case 12:
+
+ this.$ = $$[$0];
+
+ // TODO combine exists and queries
+ if(yy.exists) this.$.exists = yy.exists;
+ delete yy.exists;
+ if(yy.queries) this.$.queries = yy.queries;
+ delete yy.queries;
+
+break;
+case 13: case 162: case 172: case 237: case 238: case 240: case 248: case 250: case 259: case 267: case 270: case 375: case 491: case 501: case 503: case 515: case 521: case 522: case 567:
+ this.$ = undefined;
+break;
+case 68:
+ this.$ = new yy.WithSelect({withs: $$[$0-1], select:$$[$0]});
+break;
+case 69: case 565:
+ $$[$0-2].push($$[$0]); this.$=$$[$0-2];
+break;
+case 71:
+ this.$ = {name:$$[$0-4], select:$$[$0-1]};
+break;
+case 72:
+
+ yy.extend(this.$,$$[$0-9]); yy.extend(this.$,$$[$0-8]); yy.extend(this.$,$$[$0-7]); yy.extend(this.$,$$[$0-6]);
+ yy.extend(this.$,$$[$0-5]); yy.extend(this.$,$$[$0-4]);yy.extend(this.$,$$[$0-3]);
+ yy.extend(this.$,$$[$0-2]); yy.extend(this.$,$$[$0-1]); yy.extend(this.$,$$[$0]);
+ this.$ = $$[$0-9];
+/* if(yy.exists) this.$.exists = yy.exists;
+ delete yy.exists;
+ if(yy.queries) this.$.queries = yy.queries;
+ delete yy.queries;
+*/
+break;
+case 73:
+
+ this.$ = new yy.Search({selectors:$$[$0-2], from:$$[$0]});
+ yy.extend(this.$,$$[$0-1]);
+
+break;
+case 74:
+ this.$ = {pivot:{expr:$$[$0-5], columnid:$$[$0-3], inlist:$$[$0-2], as:$$[$0]}};
+break;
+case 75:
+ this.$ = {unpivot:{tocolumnid:$$[$0-8], forcolumnid:$$[$0-6], inlist:$$[$0-3], as:$$[$0]}};
+break;
+case 76: case 520: case 549: case 585: case 619: case 636: case 637: case 640: case 662:
+ this.$ = $$[$0-1];
+break;
+case 77: case 78: case 86: case 147: case 185: case 247: case 280: case 288: case 289: case 290: case 291: case 292: case 293: case 294: case 295: case 296: case 297: case 298: case 299: case 300: case 301: case 304: case 305: case 320: case 321: case 322: case 323: case 324: case 325: case 374: case 440: case 441: case 442: case 443: case 444: case 445: case 516: case 542: case 546: case 548: case 623: case 624: case 625: case 626: case 627: case 628: case 632: case 634: case 635: case 644: case 660: case 661: case 723: case 738: case 739: case 741: case 742: case 748: case 749:
+ this.$ = $$[$0];
+break;
+case 79: case 84: case 731: case 755:
+ this.$ = $$[$0-2]; this.$.push($$[$0]);
+break;
+case 81:
+ this.$ = {expr:$$[$0]};
+break;
+case 82:
+ this.$ = {expr:$$[$0-2],as:$$[$0]};
+break;
+case 83:
+ this.$ = {removecolumns:$$[$0]};
+break;
+case 87:
+ this.$ = {like:$$[$0]};
+break;
+case 90: case 104:
+ this.$ = {srchid:"PROP", args: [$$[$0]]};
+break;
+case 91:
+ this.$ = {srchid:"ORDERBY", args: $$[$0-1]};
+break;
+case 92:
+
+ var dir = $$[$0-1];
+ if(!dir) dir = 'ASC';
+ this.$ = {srchid:"ORDERBY", args: [{expression: new yy.Column({columnid:'_'}), direction:dir}]};
+
+break;
+case 93:
+ this.$ = {srchid:"PARENT"};
+break;
+case 94:
+ this.$ = {srchid:"APROP", args: [$$[$0]]};
+break;
+case 95:
+ this.$ = {selid:"ROOT"};
+break;
+case 96:
+ this.$ = {srchid:"EQ", args: [$$[$0]]};
+break;
+case 97:
+ this.$ = {srchid:"LIKE", args: [$$[$0]]};
+break;
+case 98: case 99:
+ this.$ = {selid:"WITH", args: $$[$0-1]};
+break;
+case 100:
+ this.$ = {srchid:$$[$0-3].toUpperCase(), args:$$[$0-1]};
+break;
+case 101:
+ this.$ = {srchid:"WHERE", args:[$$[$0-1]]};
+break;
+case 102:
+ this.$ = {selid:"OF", args:[$$[$0-1]]};
+break;
+case 103:
+ this.$ = {srchid:"CLASS", args:[$$[$0-1]]};
+break;
+case 105:
+ this.$ = {srchid:"NAME", args: [$$[$0].substr(1,$$[$0].length-2)]};
+break;
+case 106:
+ this.$ = {srchid:"CHILD"};
+break;
+case 107:
+ this.$ = {srchid:"VERTEX"};
+break;
+case 108:
+ this.$ = {srchid:"EDGE"};
+break;
+case 109:
+ this.$ = {srchid:"REF"};
+break;
+case 110:
+ this.$ = {srchid:"SHARP", args:[$$[$0]]};
+break;
+case 111:
+ this.$ = {srchid:"ATTR", args:((typeof $$[$0] == 'undefined')?undefined:[$$[$0]])};
+break;
+case 112:
+ this.$ = {srchid:"ATTR"};
+break;
+case 113:
+ this.$ = {srchid:"OUT"};
+break;
+case 114:
+ this.$ = {srchid:"IN"};
+break;
+case 115:
+ this.$ = {srchid:"OUTOUT"};
+break;
+case 116:
+ this.$ = {srchid:"ININ"};
+break;
+case 117:
+ this.$ = {srchid:"CONTENT"};
+break;
+case 118:
+ this.$ = {srchid:"EX",args:[new yy.Json({value:$$[$0]})]};
+break;
+case 119:
+ this.$ = {srchid:"AT", args:[$$[$0]]};
+break;
+case 120:
+ this.$ = {srchid:"AS", args:[$$[$0]]};
+break;
+case 121:
+ this.$ = {srchid:"SET", args:$$[$0-1]};
+break;
+case 122:
+ this.$ = {selid:"TO", args:[$$[$0]]};
+break;
+case 123:
+ this.$ = {srchid:"VALUE"};
+break;
+case 124:
+ this.$ = {srchid:"ROW", args:$$[$0-1]};
+break;
+case 125:
+ this.$ = {srchid:"CLASS", args:[$$[$0]]};
+break;
+case 126:
+ this.$ = {selid:$$[$0],args:[$$[$0-1]] };
+break;
+case 127:
+ this.$ = {selid:"NOT",args:$$[$0-1] };
+break;
+case 128:
+ this.$ = {selid:"IF",args:$$[$0-1] };
+break;
+case 129:
+ this.$ = {selid:$$[$0-3],args:$$[$0-1] };
+break;
+case 130:
+ this.$ = {selid:'DISTINCT',args:$$[$0-1] };
+break;
+case 131:
+ this.$ = {selid:'UNION',args:$$[$0-1] };
+break;
+case 132:
+ this.$ = {selid:'UNIONALL',args:$$[$0-1] };
+break;
+case 133:
+ this.$ = {selid:'ALL',args:[$$[$0-1]] };
+break;
+case 134:
+ this.$ = {selid:'ANY',args:[$$[$0-1]] };
+break;
+case 135:
+ this.$ = {selid:'INTERSECT',args:$$[$0-1] };
+break;
+case 136:
+ this.$ = {selid:'EXCEPT',args:$$[$0-1] };
+break;
+case 137:
+ this.$ = {selid:'AND',args:$$[$0-1] };
+break;
+case 138:
+ this.$ = {selid:'OR',args:$$[$0-1] };
+break;
+case 139:
+ this.$ = {selid:'PATH',args:[$$[$0-1]] };
+break;
+case 140:
+ this.$ = {srchid:'RETURN',args:$$[$0-1] };
+break;
+case 141:
+ this.$ = {selid:'REPEAT',sels:$$[$0-3], args:$$[$0-1] };
+break;
+case 142:
+ this.$ = $$[$0-2]; this.$.push($$[$0]);
+break;
+case 144:
+ this.$ = "PLUS";
+break;
+case 145:
+ this.$ = "STAR";
+break;
+case 146:
+ this.$ = "QUESTION";
+break;
+case 148:
+ this.$ = new yy.Select({ columns:$$[$0], distinct: true }); yy.extend(this.$, $$[$0-3]); yy.extend(this.$, $$[$0-1]);
+break;
+case 149:
+ this.$ = new yy.Select({ columns:$$[$0], distinct: true }); yy.extend(this.$, $$[$0-3]);yy.extend(this.$, $$[$0-1]);
+break;
+case 150:
+ this.$ = new yy.Select({ columns:$$[$0], all:true }); yy.extend(this.$, $$[$0-3]);yy.extend(this.$, $$[$0-1]);
+break;
+case 151:
+
+ if(!$$[$0]) {
+ this.$ = new yy.Select({columns:[new yy.Column({columnid:'_',})], modifier:'COLUMN'});
+ } else {
+ this.$ = new yy.Select({ columns:$$[$0] }); yy.extend(this.$, $$[$0-2]);yy.extend(this.$, $$[$0-1]);
+ }
+
+break;
+case 152:
+ if($$[$0]=='SELECT') this.$ = undefined; else this.$ = {modifier: $$[$0]};
+break;
+case 153:
+ this.$ = {modifier:'VALUE'}
+break;
+case 154:
+ this.$ = {modifier:'ROW'}
+break;
+case 155:
+ this.$ = {modifier:'COLUMN'}
+break;
+case 156:
+ this.$ = {modifier:'MATRIX'}
+break;
+case 157:
+ this.$ = {modifier:'TEXTSTRING'}
+break;
+case 158:
+ this.$ = {modifier:'INDEX'}
+break;
+case 159:
+ this.$ = {modifier:'RECORDSET'}
+break;
+case 160:
+ this.$ = {top: $$[$0-1], percent:(typeof $$[$0] != 'undefined'?true:undefined)};
+break;
+case 161:
+ this.$ = {top: $$[$0-1]};
+break;
+case 163: case 330: case 523: case 524: case 724:
+this.$ = undefined;
+break;
+case 164: case 165: case 166: case 167:
+this.$ = {into: $$[$0]}
+break;
+case 168:
+
+ var s = $$[$0];
+ s = s.substr(1,s.length-2);
+ var x3 = s.substr(-3).toUpperCase();
+ var x4 = s.substr(-4).toUpperCase();
+ if(s[0] == '#') {
+ this.$ = {into: new yy.FuncValue({funcid: 'HTML', args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
+ } else if(x3=='XLS' || x3 == 'CSV' || x3=='TAB') {
+ this.$ = {into: new yy.FuncValue({funcid: x3, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
+ } else if(x4=='XLSX' || x4 == 'JSON') {
+ this.$ = {into: new yy.FuncValue({funcid: x4, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]})};
+ }
+
+break;
+case 169:
+ this.$ = { from: $$[$0] };
+break;
+case 170:
+ this.$ = { from: $$[$0-1], joins: $$[$0] };
+break;
+case 171:
+ this.$ = { from: $$[$0-2], joins: $$[$0-1] };
+break;
+case 173:
+ this.$ = new yy.Apply({select: $$[$0-2], applymode:'CROSS', as:$$[$0]});
+break;
+case 174:
+ this.$ = new yy.Apply({select: $$[$0-3], applymode:'CROSS', as:$$[$0]});
+break;
+case 175:
+ this.$ = new yy.Apply({select: $$[$0-2], applymode:'OUTER', as:$$[$0]});
+break;
+case 176:
+ this.$ = new yy.Apply({select: $$[$0-3], applymode:'OUTER', as:$$[$0]});
+break;
+case 178: case 243: case 452: case 530: case 531:
+ this.$ = $$[$0-2]; $$[$0-2].push($$[$0]);
+break;
+case 179:
+ this.$ = $$[$0-2]; this.$.as = $$[$0]
+break;
+case 180:
+ this.$ = $$[$0-3]; this.$.as = $$[$0]
+break;
+case 181:
+ this.$ = $$[$0-1]; this.$.as = 'default'
+break;
+case 182:
+ this.$ = new yy.Json({value:$$[$0-2]}); $$[$0-2].as = $$[$0]
+break;
+case 183:
+ this.$ = $$[$0-1]; $$[$0-1].as = $$[$0]
+break;
+case 184:
+ this.$ = $$[$0-2]; $$[$0-2].as = $$[$0]
+break;
+case 186: case 638: case 641:
+ this.$ = $$[$0-2];
+break;
+case 187: case 191: case 195: case 198:
+ this.$ = $$[$0-1]; $$[$0-1].as = $$[$0];
+break;
+case 188: case 192: case 196: case 199:
+ this.$ = $$[$0-2]; $$[$0-2].as = $$[$0];
+break;
+case 189: case 190: case 194: case 197:
+ this.$ = $$[$0]; $$[$0].as = 'default';
+break;
+case 193:
+ this.$ = {inserted:true}; /*$$[$0].as = 'default'*/;
+break;
+case 200:
+
+ var s = $$[$0];
+ s = s.substr(1,s.length-2);
+ var x3 = s.substr(-3).toUpperCase();
+ var x4 = s.substr(-4).toUpperCase();
+ var r;
+ if(s[0] == '#') {
+ r = new yy.FuncValue({funcid: 'HTML', args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
+ } else if(x3=='XLS' || x3 == 'CSV' || x3=='TAB') {
+ r = new yy.FuncValue({funcid: x3, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
+ } else if(x4=='XLSX' || x4 == 'JSON') {
+ r = new yy.FuncValue({funcid: x4, args:[new yy.StringValue({value: s}), new yy.Json({value:{headers:true}})]});
+ } else {
+ throw new Error('Unknown string in FROM clause');
+ };
+ this.$ = r;
+
+break;
+case 201:
+
+ if($$[$0-2] == 'INFORMATION_SCHEMA') {
+ this.$ = new yy.FuncValue({funcid: $$[$0-2], args:[new yy.StringValue({value:$$[$0]})]});
+ } else {
+ this.$ = new yy.Table({databaseid: $$[$0-2], tableid:$$[$0]});
+ }
+
+break;
+case 202:
+ this.$ = new yy.Table({tableid: $$[$0]});
+break;
+case 203: case 204:
+ this.$ = $$[$0-1]; $$[$0-1].push($$[$0]);
+break;
+case 207:
+ this.$ = new yy.Join($$[$0-2]); yy.extend(this.$, $$[$0-1]); yy.extend(this.$, $$[$0]);
+break;
+case 208:
+ this.$ = {table: $$[$0]};
+break;
+case 209:
+ this.$ = {table: $$[$0-1], as: $$[$0] } ;
+break;
+case 210:
+ this.$ = {table: $$[$0-2], as: $$[$0] } ;
+break;
+case 211:
+ this.$ = {json:new yy.Json({value:$$[$0-2],as:$$[$0]})};
+break;
+case 212:
+ this.$ = {param: $$[$0-1], as: $$[$0] } ;
+break;
+case 213:
+ this.$ = {param: $$[$0-2], as: $$[$0] } ;
+break;
+case 214:
+ this.$ = {select: $$[$0-2], as: $$[$0]} ;
+break;
+case 215:
+ this.$ = {select: $$[$0-3], as: $$[$0] } ;
+break;
+case 216:
+ this.$ = {func:$$[$0], as:'default'};
+break;
+case 217:
+ this.$ = {func:$$[$0-1], as: $$[$0]};
+break;
+case 218:
+ this.$ = {func:$$[$0-2], as: $$[$0]};
+break;
+case 219:
+ this.$ = {variable:$$[$0],as:'default'};
+break;
+case 220:
+ this.$ = {variable:$$[$0-1],as:$$[$0]};
+break;
+case 221:
+ this.$ = {variable:$$[$0-2],as:$$[$0]}
+break;
+case 222:
+ this.$ = { joinmode: $$[$0] } ;
+break;
+case 223:
+ this.$ = {joinmode: $$[$0-1], natural:true} ;
+break;
+case 224: case 225:
+ this.$ = "INNER";
+break;
+case 226: case 227:
+ this.$ = "LEFT";
+break;
+case 228: case 229:
+ this.$ = "RIGHT";
+break;
+case 230: case 231:
+ this.$ = "OUTER";
+break;
+case 232:
+ this.$ = "SEMI";
+break;
+case 233:
+ this.$ = "ANTI";
+break;
+case 234:
+ this.$ = "CROSS";
+break;
+case 235:
+ this.$ = {on: $$[$0]};
+break;
+case 236: case 697:
+ this.$ = {using: $$[$0]};
+break;
+case 239:
+ this.$ = {where: new yy.Expression({expression:$$[$0]})};
+break;
+case 241:
+ this.$ = {group:$$[$0-1]}; yy.extend(this.$,$$[$0]);
+break;
+case 244:
+ this.$ = new yy.GroupExpression({type:'GROUPING SETS', group: $$[$0-1]});
+break;
+case 245:
+ this.$ = new yy.GroupExpression({type:'ROLLUP', group: $$[$0-1]});
+break;
+case 246:
+ this.$ = new yy.GroupExpression({type:'CUBE', group: $$[$0-1]});
+break;
+case 249:
+ this.$ = {having:$$[$0]}
+break;
+case 251:
+ this.$ = {union: $$[$0]} ;
+break;
+case 252:
+ this.$ = {unionall: $$[$0]} ;
+break;
+case 253:
+ this.$ = {except: $$[$0]} ;
+break;
+case 254:
+ this.$ = {intersect: $$[$0]} ;
+break;
+case 255:
+ this.$ = {union: $$[$0], corresponding:true} ;
+break;
+case 256:
+ this.$ = {unionall: $$[$0], corresponding:true} ;
+break;
+case 257:
+ this.$ = {except: $$[$0], corresponding:true} ;
+break;
+case 258:
+ this.$ = {intersect: $$[$0], corresponding:true} ;
+break;
+case 260:
+ this.$ = {order:$$[$0]}
+break;
+case 262:
+ this.$ = $$[$0-2]; $$[$0-2].push($$[$0])
+break;
+case 263:
+ this.$ = new yy.Expression({expression: $$[$0], direction:'ASC'})
+break;
+case 264:
+ this.$ = new yy.Expression({expression: $$[$0-1], direction:$$[$0].toUpperCase()})
+break;
+case 265:
+ this.$ = new yy.Expression({expression: $$[$0-2], direction:'ASC', nocase:true})
+break;
+case 266:
+ this.$ = new yy.Expression({expression: $$[$0-3], direction:$$[$0].toUpperCase(), nocase:true})
+break;
+case 268:
+ this.$ = {limit:$$[$0-1]}; yy.extend(this.$, $$[$0]);
+break;
+case 269:
+ this.$ = {limit:$$[$0-2],offset:$$[$0-6]};
+break;
+case 271:
+ this.$ = {offset:$$[$0]};
+break;
+case 272: case 509: case 533: case 648: case 658: case 682: case 684: case 688:
+ $$[$0-2].push($$[$0]); this.$ = $$[$0-2];
+break;
+case 274: case 276: case 278:
+ $$[$0-2].as = $$[$0]; this.$ = $$[$0-2];
+break;
+case 275: case 277: case 279:
+ $$[$0-1].as = $$[$0]; this.$ = $$[$0-1];
+break;
+case 281:
+ this.$ = new yy.Column({columid: $$[$0], tableid: $$[$0-2], databaseid:$$[$0-4]});
+break;
+case 282:
+ this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2]});
+break;
+case 283:
+ this.$ = new yy.Column({columnid:$$[$0]});
+break;
+case 284:
+ this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2], databaseid:$$[$0-4]});
+break;
+case 285: case 286:
+ this.$ = new yy.Column({columnid: $$[$0], tableid: $$[$0-2]});
+break;
+case 287:
+ this.$ = new yy.Column({columnid: $$[$0]});
+break;
+case 302:
+ this.$ = new yy.DomainValueValue();
+break;
+case 303:
+ this.$ = new yy.Json({value:$$[$0]});
+break;
+case 306: case 307: case 308:
+
+ if(!yy.queries) yy.queries = [];
+ yy.queries.push($$[$0-1]);
+ $$[$0-1].queriesidx = yy.queries.length;
+ this.$ = $$[$0-1];
+
+break;
+case 309:
+this.$ = $$[$0]
+break;
+case 310:
+ this.$ = new yy.FuncValue({funcid:'CURRENT_TIMESTAMP'});
+break;
+case 311:
+ this.$ = new yy.JavaScript({value:$$[$0].substr(2,$$[$0].length-4)});
+break;
+case 312:
+ this.$ = new yy.JavaScript({value:'alasql.fn["'+$$[$0-2]+'"] = '+$$[$0].substr(2,$$[$0].length-4)});
+break;
+case 313:
+ this.$ = new yy.JavaScript({value:'alasql.aggr["'+$$[$0-2]+'"] = '+$$[$0].substr(2,$$[$0].length-4)});
+break;
+case 314:
+ this.$ = new yy.FuncValue({funcid:$$[$0], newid:true});
+break;
+case 315:
+ this.$ = $$[$0]; yy.extend(this.$,{newid:true});
+break;
+case 316:
+ this.$ = new yy.Convert({expression:$$[$0-3]}) ; yy.extend(this.$,$$[$0-1]) ;
+break;
+case 317:
+ this.$ = new yy.Convert({expression:$$[$0-5], style:$$[$0-1]}) ; yy.extend(this.$,$$[$0-3]) ;
+break;
+case 318:
+ this.$ = new yy.Convert({expression:$$[$0-1]}) ; yy.extend(this.$,$$[$0-3]) ;
+break;
+case 319:
+ this.$ = new yy.Convert({expression:$$[$0-3], style:$$[$0-1]}) ; yy.extend(this.$,$$[$0-5]) ;
+break;
+case 326:
+ this.$ = new yy.FuncValue({funcid:'CURRENT_TIMESTAMP'});
+break;
+case 327:
+
+ if($$[$0-2].length > 1 && ($$[$0-4].toUpperCase() == 'MAX' || $$[$0-4].toUpperCase() == 'MIN')) {
+ this.$ = new yy.FuncValue({funcid:$$[$0-4],args:$$[$0-2]});
+ } else {
+ this.$ = new yy.AggrValue({aggregatorid: $$[$0-4].toUpperCase(), expression: $$[$0-2].pop(), over:$$[$0]});
+ }
+
+break;
+case 328:
+ this.$ = new yy.AggrValue({aggregatorid: $$[$0-5].toUpperCase(), expression: $$[$0-2], distinct:true, over:$$[$0]});
+break;
+case 329:
+ this.$ = new yy.AggrValue({aggregatorid: $$[$0-5].toUpperCase(), expression: $$[$0-2],
+ over:$$[$0]});
+break;
+case 331: case 332:
+ this.$ = new yy.Over(); yy.extend(this.$,$$[$0-1]);
+break;
+case 333:
+ this.$ = new yy.Over(); yy.extend(this.$,$$[$0-2]); yy.extend(this.$,$$[$0-1]);
+break;
+case 334:
+ this.$ = {partition:$$[$0]};
+break;
+case 335:
+ this.$ = {order:$$[$0]};
+break;
+case 336:
+ this.$ = "SUM";
+break;
+case 337:
+ this.$ = "COUNT";
+break;
+case 338:
+ this.$ = "MIN";
+break;
+case 339: case 544:
+ this.$ = "MAX";
+break;
+case 340:
+ this.$ = "AVG";
+break;
+case 341:
+ this.$ = "FIRST";
+break;
+case 342:
+ this.$ = "LAST";
+break;
+case 343:
+ this.$ = "AGGR";
+break;
+case 344:
+ this.$ = "ARRAY";
+break;
+case 345:
+
+ var funcid = $$[$0-4];
+ var exprlist = $$[$0-1];
+ if(exprlist.length > 1 && (funcid.toUpperCase() == 'MIN' || funcid.toUpperCase() == 'MAX')) {
+ this.$ = new yy.FuncValue({funcid: funcid, args: exprlist});
+ } else if(alasql.aggr[$$[$0-4]]) {
+ this.$ = new yy.AggrValue({aggregatorid: 'REDUCE',
+ funcid: funcid, expression: exprlist.pop(),distinct:($$[$0-2]=='DISTINCT') });
+ } else {
+ this.$ = new yy.FuncValue({funcid: funcid, args: exprlist});
+ };
+
+break;
+case 346:
+ this.$ = new yy.FuncValue({ funcid: $$[$0-2] })
+break;
+case 347:
+ this.$ = new yy.FuncValue({ funcid: 'IIF', args:$$[$0-1] })
+break;
+case 348:
+ this.$ = new yy.FuncValue({ funcid: 'REPLACE', args:$$[$0-1] })
+break;
+case 349:
+ this.$ = new yy.FuncValue({ funcid: 'DATEADD', args:[new yy.StringValue({value:$$[$0-5]}),$$[$0-3],$$[$0-1]]})
+break;
+case 350:
+ this.$ = new yy.FuncValue({ funcid: 'DATEADD', args:[$$[$0-5],$$[$0-3],$$[$0-1]]})
+break;
+case 351:
+ this.$ = new yy.FuncValue({ funcid: 'DATEDIFF', args:[new yy.StringValue({value:$$[$0-5]}),$$[$0-3],$$[$0-1]]})
+break;
+case 352:
+ this.$ = new yy.FuncValue({ funcid: 'DATEDIFF', args:[$$[$0-5],$$[$0-3],$$[$0-1]]})
+break;
+case 353:
+ this.$ = new yy.FuncValue({ funcid: 'INTERVAL', args:[$$[$0-1],new yy.StringValue({value:($$[$0]).toLowerCase()})]});
+break;
+case 355:
+ $$[$0-2].push($$[$0]); this.$ = $$[$0-2]
+break;
+case 356:
+ this.$ = new yy.NumValue({value:+$$[$0]});
+break;
+case 357:
+ this.$ = new yy.LogicValue({value:true});
+break;
+case 358:
+ this.$ = new yy.LogicValue({value:false});
+break;
+case 359:
+ this.$ = new yy.StringValue({value: $$[$0].substr(1,$$[$0].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});
+break;
+case 360:
+ this.$ = new yy.StringValue({value: $$[$0].substr(2,$$[$0].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});
+break;
+case 361:
+ this.$ = new yy.NullValue({value:undefined});
+break;
+case 362:
+ this.$ = new yy.VarValue({variable:$$[$0]});
+break;
+case 363:
+
+ if(!yy.exists) yy.exists = [];
+ this.$ = new yy.ExistsValue({value:$$[$0-1], existsidx:yy.exists.length});
+ yy.exists.push($$[$0-1]);
+
+break;
+case 364:
+ this.$ = new yy.ArrayValue({value:$$[$0-1]});
+break;
+case 365: case 366:
+ this.$ = new yy.ParamValue({param: $$[$0]});
+break;
+case 367:
+
+ if(typeof yy.question == 'undefined') yy.question = 0;
+ this.$ = new yy.ParamValue({param: yy.question++});
+
+break;
+case 368:
+
+ if(typeof yy.question == 'undefined') yy.question = 0;
+ this.$ = new yy.ParamValue({param: yy.question++, array:true});
+
+break;
+case 369:
+ this.$ = new yy.CaseValue({expression:$$[$0-3], whens: $$[$0-2], elses: $$[$0-1]});
+break;
+case 370:
+ this.$ = new yy.CaseValue({whens: $$[$0-2], elses: $$[$0-1]});
+break;
+case 371: case 699: case 700:
+ this.$ = $$[$0-1]; this.$.push($$[$0]);
+break;
+case 373:
+ this.$ = {when: $$[$0-2], then: $$[$0] };
+break;
+case 376: case 377:
+ this.$ = new yy.Op({left:$$[$0-2], op:'REGEXP', right:$$[$0]});
+break;
+case 378:
+ this.$ = new yy.Op({left:$$[$0-2], op:'GLOB', right:$$[$0]});
+break;
+case 379:
+ this.$ = new yy.Op({left:$$[$0-2], op:'LIKE', right:$$[$0]});
+break;
+case 380:
+ this.$ = new yy.Op({left:$$[$0-4], op:'LIKE', right:$$[$0-2], escape:$$[$0]});
+break;
+case 381:
+ this.$ = new yy.Op({left:$$[$0-2], op:'NOT LIKE', right:$$[$0] });
+break;
+case 382:
+ this.$ = new yy.Op({left:$$[$0-4], op:'NOT LIKE', right:$$[$0-2], escape:$$[$0] });
+break;
+case 383:
+ this.$ = new yy.Op({left:$$[$0-2], op:'||', right:$$[$0]});
+break;
+case 384:
+ this.$ = new yy.Op({left:$$[$0-2], op:'+', right:$$[$0]});
+break;
+case 385:
+ this.$ = new yy.Op({left:$$[$0-2], op:'-', right:$$[$0]});
+break;
+case 386:
+ this.$ = new yy.Op({left:$$[$0-2], op:'*', right:$$[$0]});
+break;
+case 387:
+ this.$ = new yy.Op({left:$$[$0-2], op:'/', right:$$[$0]});
+break;
+case 388:
+ this.$ = new yy.Op({left:$$[$0-2], op:'%', right:$$[$0]});
+break;
+case 389:
+ this.$ = new yy.Op({left:$$[$0-2], op:'^', right:$$[$0]});
+break;
+case 390:
+ this.$ = new yy.Op({left:$$[$0-2], op:'>>', right:$$[$0]});
+break;
+case 391:
+ this.$ = new yy.Op({left:$$[$0-2], op:'<<', right:$$[$0]});
+break;
+case 392:
+ this.$ = new yy.Op({left:$$[$0-2], op:'&', right:$$[$0]});
+break;
+case 393:
+ this.$ = new yy.Op({left:$$[$0-2], op:'|', right:$$[$0]});
+break;
+case 394: case 395: case 397:
+ this.$ = new yy.Op({left:$$[$0-2], op:'->' , right:$$[$0]});
+break;
+case 396:
+ this.$ = new yy.Op({left:$$[$0-4], op:'->' , right:$$[$0-1]});
+break;
+case 398: case 399: case 401:
+ this.$ = new yy.Op({left:$$[$0-2], op:'!' , right:$$[$0]});
+break;
+case 400:
+ this.$ = new yy.Op({left:$$[$0-4], op:'!' , right:$$[$0-1]});
+break;
+case 402:
+ this.$ = new yy.Op({left:$$[$0-2], op:'>' , right:$$[$0]});
+break;
+case 403:
+ this.$ = new yy.Op({left:$$[$0-2], op:'>=' , right:$$[$0]});
+break;
+case 404:
+ this.$ = new yy.Op({left:$$[$0-2], op:'<' , right:$$[$0]});
+break;
+case 405:
+ this.$ = new yy.Op({left:$$[$0-2], op:'<=' , right:$$[$0]});
+break;
+case 406:
+ this.$ = new yy.Op({left:$$[$0-2], op:'=' , right:$$[$0]});
+break;
+case 407:
+ this.$ = new yy.Op({left:$$[$0-2], op:'==' , right:$$[$0]});
+break;
+case 408:
+ this.$ = new yy.Op({left:$$[$0-2], op:'===' , right:$$[$0]});
+break;
+case 409:
+ this.$ = new yy.Op({left:$$[$0-2], op:'!=' , right:$$[$0]});
+break;
+case 410:
+ this.$ = new yy.Op({left:$$[$0-2], op:'!==' , right:$$[$0]});
+break;
+case 411:
+ this.$ = new yy.Op({left:$$[$0-2], op:'!===' , right:$$[$0]});
+break;
+case 412:
+
+ if(!yy.queries) yy.queries = [];
+ this.$ = new yy.Op({left:$$[$0-5], op:$$[$0-4] , allsome:$$[$0-3], right:$$[$0-1], queriesidx: yy.queries.length});
+ yy.queries.push($$[$0-1]);
+
+break;
+case 413:
+
+ this.$ = new yy.Op({left:$$[$0-5], op:$$[$0-4] , allsome:$$[$0-3], right:$$[$0-1]});
+
+break;
+case 414:
+
+ if($$[$0-2].op == 'BETWEEN1') {
+
+ if($$[$0-2].left.op == 'AND') {
+ this.$ = new yy.Op({left:$$[$0-2].left.left,op:'AND',right:
+ new yy.Op({left:$$[$0-2].left.right, op:'BETWEEN',
+ right1:$$[$0-2].right, right2:$$[$0]})
+ });
+ } else {
+ this.$ = new yy.Op({left:$$[$0-2].left, op:'BETWEEN',
+ right1:$$[$0-2].right, right2:$$[$0]});
+ }
+
+ } else if($$[$0-2].op == 'NOT BETWEEN1') {
+ if($$[$0-2].left.op == 'AND') {
+ this.$ = new yy.Op({left:$$[$0-2].left.left,op:'AND',right:
+ new yy.Op({left:$$[$0-2].left.right, op:'NOT BETWEEN',
+ right1:$$[$0-2].right, right2:$$[$0]})
+ });
+ } else {
+ this.$ = new yy.Op({left:$$[$0-2].left, op:'NOT BETWEEN',
+ right1:$$[$0-2].right, right2:$$[$0]});
+ }
+ } else {
+ this.$ = new yy.Op({left:$$[$0-2], op:'AND', right:$$[$0]});
+ }
+
+break;
+case 415:
+ this.$ = new yy.Op({left:$$[$0-2], op:'OR' , right:$$[$0]});
+break;
+case 416:
+ this.$ = new yy.UniOp({op:'NOT' , right:$$[$0]});
+break;
+case 417:
+ this.$ = new yy.UniOp({op:'-' , right:$$[$0]});
+break;
+case 418:
+ this.$ = new yy.UniOp({op:'+' , right:$$[$0]});
+break;
+case 419:
+ this.$ = new yy.UniOp({op:'~' , right:$$[$0]});
+break;
+case 420:
+ this.$ = new yy.UniOp({op:'#' , right:$$[$0]});
+break;
+case 421:
+ this.$ = new yy.UniOp({right: $$[$0-1]});
+break;
+case 422:
+
+ if(!yy.queries) yy.queries = [];
+ this.$ = new yy.Op({left: $$[$0-4], op:'IN', right:$$[$0-1], queriesidx: yy.queries.length});
+ yy.queries.push($$[$0-1]);
+
+break;
+case 423:
+
+ if(!yy.queries) yy.queries = [];
+ this.$ = new yy.Op({left: $$[$0-5], op:'NOT IN', right:$$[$0-1], queriesidx: yy.queries.length});
+ yy.queries.push($$[$0-1]);
+
+break;
+case 424:
+ this.$ = new yy.Op({left: $$[$0-4], op:'IN', right:$$[$0-1]});
+break;
+case 425:
+ this.$ = new yy.Op({left: $$[$0-5], op:'NOT IN', right:$$[$0-1]});
+break;
+case 426:
+ this.$ = new yy.Op({left: $$[$0-3], op:'IN', right:[]});
+break;
+case 427:
+ this.$ = new yy.Op({left: $$[$0-4], op:'NOT IN', right:[]});
+break;
+case 428: case 430:
+ this.$ = new yy.Op({left: $$[$0-2], op:'IN', right:$$[$0]});
+break;
+case 429: case 431:
+ this.$ = new yy.Op({left: $$[$0-3], op:'NOT IN', right:$$[$0]});
+break;
+case 432:
+
+/* var expr = $$[$0];
+ if(expr.left && expr.left.op == 'AND') {
+ this.$ = new yy.Op({left:new yy.Op({left:$$[$0-2], op:'BETWEEN', right:expr.left}), op:'AND', right:expr.right });
+ } else {
+*/
+ this.$ = new yy.Op({left:$$[$0-2], op:'BETWEEN1', right:$$[$0] });
+
+break;
+case 433:
+
+ this.$ = new yy.Op({left:$$[$0-2], op:'NOT BETWEEN1', right:$$[$0] });
+
+break;
+case 434:
+ this.$ = new yy.Op({op:'IS' , left:$$[$0-2], right:$$[$0]});
+break;
+case 435:
+
+ this.$ = new yy.Op({
+ op:'IS',
+ left:$$[$0-2],
+ right: new yy.UniOp({
+ op:'NOT',
+ right:new yy.NullValue({value:undefined})
+ })
+ });
+
+break;
+case 436:
+ this.$ = new yy.Convert({expression:$$[$0-2]}) ; yy.extend(this.$,$$[$0]) ;
+break;
+case 437: case 438:
+ this.$ = $$[$0];
+break;
+case 439:
+ this.$ = $$[$0-1];
+break;
+case 446:
+ this.$ = 'ALL';
+break;
+case 447:
+ this.$ = 'SOME';
+break;
+case 448:
+ this.$ = 'ANY';
+break;
+case 449:
+ this.$ = new yy.Update({table:$$[$0-4], columns:$$[$0-2], where:$$[$0]});
+break;
+case 450:
+ this.$ = new yy.Update({table:$$[$0-2], columns:$$[$0]});
+break;
+case 453:
+ this.$ = new yy.SetColumn({column:$$[$0-2], expression:$$[$0]})
+break;
+case 454:
+ this.$ = new yy.SetColumn({variable:$$[$0-2], expression:$$[$0], method:$$[$0-3]})
+break;
+case 455:
+ this.$ = new yy.Delete({table:$$[$0-2], where:$$[$0]});
+break;
+case 456:
+ this.$ = new yy.Delete({table:$$[$0]});
+break;
+case 457:
+ this.$ = new yy.Insert({into:$$[$0-2], values: $$[$0]});
+break;
+case 458:
+ this.$ = new yy.Insert({into:$$[$0-1], values: $$[$0]});
+break;
+case 459: case 461:
+ this.$ = new yy.Insert({into:$$[$0-2], values: $$[$0], orreplace:true});
+break;
+case 460: case 462:
+ this.$ = new yy.Insert({into:$$[$0-1], values: $$[$0], orreplace:true});
+break;
+case 463:
+ this.$ = new yy.Insert({into:$$[$0-2], "default": true}) ;
+break;
+case 464:
+ this.$ = new yy.Insert({into:$$[$0-5], columns: $$[$0-3], values: $$[$0]});
+break;
+case 465:
+ this.$ = new yy.Insert({into:$$[$0-4], columns: $$[$0-2], values: $$[$0]});
+break;
+case 466:
+ this.$ = new yy.Insert({into:$$[$0-1], select: $$[$0]});
+break;
+case 467:
+ this.$ = new yy.Insert({into:$$[$0-1], select: $$[$0], orreplace:true});
+break;
+case 468:
+ this.$ = new yy.Insert({into:$$[$0-4], columns: $$[$0-2], select: $$[$0]});
+break;
+case 473:
+ this.$ = [$$[$0-1]];
+break;
+case 476:
+this.$ = $$[$0-4]; $$[$0-4].push($$[$0-1])
+break;
+case 477: case 478: case 480: case 488:
+this.$ = $$[$0-2]; $$[$0-2].push($$[$0])
+break;
+case 489:
+
+ this.$ = new yy.CreateTable({table:$$[$0-4]});
+ yy.extend(this.$,$$[$0-7]);
+ yy.extend(this.$,$$[$0-6]);
+ yy.extend(this.$,$$[$0-5]);
+ yy.extend(this.$,$$[$0-2]);
+ yy.extend(this.$,$$[$0]);
+
+break;
+case 490:
+
+ this.$ = new yy.CreateTable({table:$$[$0]});
+ yy.extend(this.$,$$[$0-3]);
+ yy.extend(this.$,$$[$0-2]);
+ yy.extend(this.$,$$[$0-1]);
+
+break;
+case 492:
+ this.$ = {"class":true};
+break;
+case 502:
+ this.$ = {temporary:true};
+break;
+case 504:
+ this.$ = {ifnotexists: true};
+break;
+case 505:
+ this.$ = {columns: $$[$0-2], constraints: $$[$0]};
+break;
+case 506:
+ this.$ = {columns: $$[$0]};
+break;
+case 507:
+ this.$ = {as: $$[$0]}
+break;
+case 508: case 532:
+ this.$ = [$$[$0]];
+break;
+case 510: case 511: case 512: case 513: case 514:
+ $$[$0].constraintid = $$[$0-1]; this.$ = $$[$0];
+break;
+case 517:
+ this.$ = {type: 'CHECK', expression: $$[$0-1]};
+break;
+case 518:
+ this.$ = {type: 'PRIMARY KEY', columns: $$[$0-1], clustered:($$[$0-3]+'').toUpperCase()};
+break;
+case 519:
+ this.$ = {type: 'FOREIGN KEY', columns: $$[$0-5], fktable: $$[$0-2], fkcolumns: $$[$0-1]};
+break;
+case 525:
+
+ this.$ = {type: 'UNIQUE', columns: $$[$0-1], clustered:($$[$0-3]+'').toUpperCase()};
+
+break;
+case 534:
+ this.$ = new yy.ColumnDef({columnid:$$[$0-2]}); yy.extend(this.$,$$[$0-1]); yy.extend(this.$,$$[$0]);
+break;
+case 535:
+ this.$ = new yy.ColumnDef({columnid:$$[$0-1]}); yy.extend(this.$,$$[$0]);
+break;
+case 536:
+ this.$ = new yy.ColumnDef({columnid:$$[$0], dbtypeid: ''});
+break;
+case 537:
+ this.$ = {dbtypeid: $$[$0-5], dbsize: $$[$0-3], dbprecision: +$$[$0-1]}
+break;
+case 538:
+ this.$ = {dbtypeid: $$[$0-3], dbsize: $$[$0-1]}
+break;
+case 539:
+ this.$ = {dbtypeid: $$[$0]}
+break;
+case 540:
+ this.$ = {dbtypeid: 'ENUM', enumvalues: $$[$0-1]}
+break;
+case 541:
+ this.$ = $$[$0-1]; $$[$0-1].dbtypeid += '[' + $$[$0] + ']';
+break;
+case 543: case 750:
+ this.$ = +$$[$0];
+break;
+case 545:
+this.$ = undefined
+break;
+case 547:
+
+ yy.extend($$[$0-1],$$[$0]); this.$ = $$[$0-1];
+
+break;
+case 550:
+this.$ = {primarykey:true};
+break;
+case 551: case 552:
+this.$ = {foreignkey:{table:$$[$0-1], columnid: $$[$0]}};
+break;
+case 553:
+ this.$ = {identity: {value:$$[$0-3],step:$$[$0-1]}}
+break;
+case 554:
+ this.$ = {identity: {value:1,step:1}}
+break;
+case 555: case 557:
+this.$ = {"default":$$[$0]};
+break;
+case 556:
+this.$ = {"default":$$[$0-1]};
+break;
+case 558:
+this.$ = {"null":true};
+break;
+case 559:
+this.$ = {notnull:true};
+break;
+case 560:
+this.$ = {check:$$[$0]};
+break;
+case 561:
+this.$ = {unique:true};
+break;
+case 562:
+this.$ = {"onupdate":$$[$0]};
+break;
+case 563:
+this.$ = {"onupdate":$$[$0-1]};
+break;
+case 564:
+ this.$ = new yy.DropTable({tables:$$[$0],type:$$[$0-2]}); yy.extend(this.$, $$[$0-1]);
+break;
+case 568:
+ this.$ = {ifexists: true};
+break;
+case 569:
+ this.$ = new yy.AlterTable({table:$$[$0-3], renameto: $$[$0]});
+break;
+case 570:
+ this.$ = new yy.AlterTable({table:$$[$0-3], addcolumn: $$[$0]});
+break;
+case 571:
+ this.$ = new yy.AlterTable({table:$$[$0-3], modifycolumn: $$[$0]});
+break;
+case 572:
+ this.$ = new yy.AlterTable({table:$$[$0-5], renamecolumn: $$[$0-2], to: $$[$0]});
+break;
+case 573:
+ this.$ = new yy.AlterTable({table:$$[$0-3], dropcolumn: $$[$0]});
+break;
+case 574:
+ this.$ = new yy.AlterTable({table:$$[$0-2], renameto: $$[$0]});
+break;
+case 575:
+ this.$ = new yy.AttachDatabase({databaseid:$$[$0], engineid:$$[$0-2].toUpperCase() });
+break;
+case 576:
+ this.$ = new yy.AttachDatabase({databaseid:$$[$0-3], engineid:$$[$0-5].toUpperCase(), args:$$[$0-1] });
+break;
+case 577:
+ this.$ = new yy.AttachDatabase({databaseid:$$[$0-2], engineid:$$[$0-4].toUpperCase(), as:$$[$0] });
+break;
+case 578:
+ this.$ = new yy.AttachDatabase({databaseid:$$[$0-5], engineid:$$[$0-7].toUpperCase(), as:$$[$0], args:$$[$0-3]});
+break;
+case 579:
+ this.$ = new yy.DetachDatabase({databaseid:$$[$0]});
+break;
+case 580:
+ this.$ = new yy.CreateDatabase({databaseid:$$[$0] }); yy.extend(this.$,$$[$0]);
+break;
+case 581:
+ this.$ = new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(), databaseid:$$[$0-1], as:$$[$0] }); yy.extend(this.$,$$[$0-2]);
+break;
+case 582:
+ this.$ = new yy.CreateDatabase({engineid:$$[$0-7].toUpperCase(), databaseid:$$[$0-4], args:$$[$0-2], as:$$[$0] }); yy.extend(this.$,$$[$0-5]);
+break;
+case 583:
+ this.$ = new yy.CreateDatabase({engineid:$$[$0-4].toUpperCase(),
+ as:$$[$0], args:[$$[$0-1]] }); yy.extend(this.$,$$[$0-2]);
+break;
+case 584:
+this.$ = undefined;
+break;
+case 586: case 587:
+ this.$ = new yy.UseDatabase({databaseid: $$[$0] });
+break;
+case 588:
+ this.$ = new yy.DropDatabase({databaseid: $$[$0] }); yy.extend(this.$,$$[$0-1]);
+break;
+case 589: case 590:
+ this.$ = new yy.DropDatabase({databaseid: $$[$0], engineid:$$[$0-3].toUpperCase() }); yy.extend(this.$,$$[$0-1]);
+break;
+case 591:
+ this.$ = new yy.CreateIndex({indexid:$$[$0-5], table:$$[$0-3], columns:$$[$0-1]})
+break;
+case 592:
+ this.$ = new yy.CreateIndex({indexid:$$[$0-5], table:$$[$0-3], columns:$$[$0-1], unique:true})
+break;
+case 593:
+ this.$ = new yy.DropIndex({indexid:$$[$0]});
+break;
+case 594:
+ this.$ = new yy.ShowDatabases();
+break;
+case 595:
+ this.$ = new yy.ShowDatabases({like:$$[$0]});
+break;
+case 596:
+ this.$ = new yy.ShowDatabases({engineid:$$[$0-1].toUpperCase() });
+break;
+case 597:
+ this.$ = new yy.ShowDatabases({engineid:$$[$0-3].toUpperCase() , like:$$[$0]});
+break;
+case 598:
+ this.$ = new yy.ShowTables();
+break;
+case 599:
+ this.$ = new yy.ShowTables({like:$$[$0]});
+break;
+case 600:
+ this.$ = new yy.ShowTables({databaseid: $$[$0]});
+break;
+case 601:
+ this.$ = new yy.ShowTables({like:$$[$0], databaseid: $$[$0-2]});
+break;
+case 602:
+ this.$ = new yy.ShowColumns({table: $$[$0]});
+break;
+case 603:
+ this.$ = new yy.ShowColumns({table: $$[$0-2], databaseid:$$[$0]});
+break;
+case 604:
+ this.$ = new yy.ShowIndex({table: $$[$0]});
+break;
+case 605:
+ this.$ = new yy.ShowIndex({table: $$[$0-2], databaseid: $$[$0]});
+break;
+case 606:
+ this.$ = new yy.ShowCreateTable({table: $$[$0]});
+break;
+case 607:
+ this.$ = new yy.ShowCreateTable({table: $$[$0-2], databaseid:$$[$0]});
+break;
+case 608:
+
+ this.$ = new yy.CreateTable({table:$$[$0-6],view:true,select:$$[$0-1],viewcolumns:$$[$0-4]});
+ yy.extend(this.$,$$[$0-9]);
+ yy.extend(this.$,$$[$0-7]);
+
+break;
+case 609:
+
+ this.$ = new yy.CreateTable({table:$$[$0-3],view:true,select:$$[$0-1]});
+ yy.extend(this.$,$$[$0-6]);
+ yy.extend(this.$,$$[$0-4]);
+
+break;
+case 613:
+ this.$ = new yy.DropTable({tables:$$[$0], view:true}); yy.extend(this.$, $$[$0-1]);
+break;
+case 614: case 760:
+ this.$ = new yy.ExpressionStatement({expression:$$[$0]});
+break;
+case 615:
+ this.$ = new yy.Source({url:$$[$0].value});
+break;
+case 616:
+ this.$ = new yy.Assert({value:$$[$0]});
+break;
+case 617:
+ this.$ = new yy.Assert({value:$$[$0].value});
+break;
+case 618:
+ this.$ = new yy.Assert({value:$$[$0], message:$$[$0-2]});
+break;
+case 620: case 631: case 633:
+ this.$ = $$[$0].value;
+break;
+case 621: case 629:
+ this.$ = +$$[$0].value;
+break;
+case 622:
+ this.$ = (!!$$[$0].value);
+break;
+case 630:
+ this.$ = ""+$$[$0].value;
+break;
+case 639:
+ this.$ = {};
+break;
+case 642:
+ this.$ = [];
+break;
+case 643:
+ yy.extend($$[$0-2],$$[$0]); this.$ = $$[$0-2];
+break;
+case 645:
+ this.$ = {}; this.$[$$[$0-2].substr(1,$$[$0-2].length-2)] = $$[$0];
+break;
+case 646: case 647:
+ this.$ = {}; this.$[$$[$0-2]] = $$[$0];
+break;
+case 650:
+ this.$ = new yy.SetVariable({variable:$$[$0-2].toLowerCase(), value:$$[$0]});
+break;
+case 651:
+ this.$ = new yy.SetVariable({variable:$$[$0-1].toLowerCase(), value:$$[$0]});
+break;
+case 652:
+ this.$ = new yy.SetVariable({variable:$$[$0-2], expression:$$[$0]});
+break;
+case 653:
+ this.$ = new yy.SetVariable({variable:$$[$0-3], props: $$[$0-2], expression:$$[$0]});
+break;
+case 654:
+ this.$ = new yy.SetVariable({variable:$$[$0-2], expression:$$[$0], method:$$[$0-3]});
+break;
+case 655:
+ this.$ = new yy.SetVariable({variable:$$[$0-3], props: $$[$0-2], expression:$$[$0], method:$$[$0-4]});
+break;
+case 656:
+this.$ = '@';
+break;
+case 657:
+this.$ = '$';
+break;
+case 663:
+ this.$ = true;
+break;
+case 664:
+ this.$ = false;
+break;
+case 665:
+ this.$ = new yy.CommitTransaction();
+break;
+case 666:
+ this.$ = new yy.RollbackTransaction();
+break;
+case 667:
+ this.$ = new yy.BeginTransaction();
+break;
+case 668:
+ this.$ = new yy.If({expression:$$[$0-2],thenstat:$$[$0-1], elsestat:$$[$0]});
+ if($$[$0-1].exists) this.$.exists = $$[$0-1].exists;
+ if($$[$0-1].queries) this.$.queries = $$[$0-1].queries;
+
+break;
+case 669:
+
+ this.$ = new yy.If({expression:$$[$0-1],thenstat:$$[$0]});
+ if($$[$0].exists) this.$.exists = $$[$0].exists;
+ if($$[$0].queries) this.$.queries = $$[$0].queries;
+
+break;
+case 670:
+this.$ = $$[$0];
+break;
+case 671:
+ this.$ = new yy.While({expression:$$[$0-1],loopstat:$$[$0]});
+ if($$[$0].exists) this.$.exists = $$[$0].exists;
+ if($$[$0].queries) this.$.queries = $$[$0].queries;
+
+break;
+case 672:
+ this.$ = new yy.Continue();
+break;
+case 673:
+ this.$ = new yy.Break();
+break;
+case 674:
+ this.$ = new yy.BeginEnd({statements:$$[$0-1]});
+break;
+case 675:
+ this.$ = new yy.Print({exprs:$$[$0]});
+break;
+case 676:
+ this.$ = new yy.Print({select:$$[$0]});
+break;
+case 677:
+ this.$ = new yy.Require({paths:$$[$0]});
+break;
+case 678:
+ this.$ = new yy.Require({plugins:$$[$0]});
+break;
+case 679: case 680:
+this.$ = $$[$0].toUpperCase();
+break;
+case 681:
+ this.$ = new yy.Echo({expr:$$[$0]});
+break;
+case 686:
+ this.$ = new yy.Declare({declares:$$[$0]});
+break;
+case 689:
+ this.$ = {variable: $$[$0-1]}; yy.extend(this.$,$$[$0]);
+break;
+case 690:
+ this.$ = {variable: $$[$0-2]}; yy.extend(this.$,$$[$0]);
+break;
+case 691:
+ this.$ = {variable: $$[$0-3], expression:$$[$0]}; yy.extend(this.$,$$[$0-2]);
+break;
+case 692:
+ this.$ = {variable: $$[$0-4], expression:$$[$0]}; yy.extend(this.$,$$[$0-2]);
+break;
+case 693:
+ this.$ = new yy.TruncateTable({table:$$[$0]});
+break;
+case 694:
+
+ this.$ = new yy.Merge(); yy.extend(this.$,$$[$0-4]); yy.extend(this.$,$$[$0-3]);
+ yy.extend(this.$,$$[$0-2]);
+ yy.extend(this.$,{matches:$$[$0-1]});yy.extend(this.$,$$[$0]);
+
+break;
+case 695: case 696:
+ this.$ = {into: $$[$0]};
+break;
+case 698:
+ this.$ = {on:$$[$0]};
+break;
+case 703:
+ this.$ = {matched:true, action:$$[$0]}
+break;
+case 704:
+ this.$ = {matched:true, expr: $$[$0-2], action:$$[$0]}
+break;
+case 705:
+ this.$ = {"delete":true};
+break;
+case 706:
+ this.$ = {update:$$[$0]};
+break;
+case 707: case 708:
+ this.$ = {matched:false, bytarget: true, action:$$[$0]}
+break;
+case 709: case 710:
+ this.$ = {matched:false, bytarget: true, expr:$$[$0-2], action:$$[$0]}
+break;
+case 711:
+ this.$ = {matched:false, bysource: true, action:$$[$0]}
+break;
+case 712:
+ this.$ = {matched:false, bysource: true, expr:$$[$0-2], action:$$[$0]}
+break;
+case 713:
+ this.$ = {insert:true, values:$$[$0]};
+break;
+case 714:
+ this.$ = {insert:true, values:$$[$0], columns:$$[$0-3]};
+break;
+case 715:
+ this.$ = {insert:true, defaultvalues:true};
+break;
+case 716:
+ this.$ = {insert:true, defaultvalues:true, columns:$$[$0-3]};
+break;
+case 718:
+ this.$ = {output:{columns:$$[$0]}}
+break;
+case 719:
+ this.$ = {output:{columns:$$[$0-3], intovar: $$[$0], method:$$[$0-1]}}
+break;
+case 720:
+ this.$ = {output:{columns:$$[$0-2], intotable: $$[$0]}}
+break;
+case 721:
+ this.$ = {output:{columns:$$[$0-5], intotable: $$[$0-3], intocolumns:$$[$0-1]}}
+break;
+case 722:
+
+ this.$ = new yy.CreateVertex({"class":$$[$0-3],sharp:$$[$0-2], name:$$[$0-1]});
+ yy.extend(this.$,$$[$0]);
+
+break;
+case 725:
+ this.$ = {sets:$$[$0]};
+break;
+case 726:
+ this.$ = {content:$$[$0]};
+break;
+case 727:
+ this.$ = {select:$$[$0]};
+break;
+case 728:
+
+ this.$ = new yy.CreateEdge({from:$$[$0-3],to:$$[$0-1],name:$$[$0-5]});
+ yy.extend(this.$,$$[$0]);
+
+break;
+case 729:
+ this.$ = new yy.CreateGraph({graph:$$[$0]});
+break;
+case 730:
+ this.$ = new yy.CreateGraph({from:$$[$0]});
+break;
+case 733:
+
+ this.$ = $$[$0-2];
+ if($$[$0-1]) this.$.json = new yy.Json({value:$$[$0-1]});
+ if($$[$0]) this.$.as = $$[$0];
+
+break;
+case 734:
+
+ this.$ = {source:$$[$0-6], target: $$[$0]};
+ if($$[$0-3]) this.$.json = new yy.Json({value:$$[$0-3]});
+ if($$[$0-2]) this.$.as = $$[$0-2];
+ yy.extend(this.$,$$[$0-4]);
+
+break;
+case 735:
+
+ this.$ = {source:$$[$0-5], target: $$[$0]};
+ if($$[$0-2]) this.$.json = new yy.Json({value:$$[$0-3]});
+ if($$[$0-1]) this.$.as = $$[$0-2];
+
+break;
+case 736:
+
+ this.$ = {source:$$[$0-2], target: $$[$0]};
+
+break;
+case 740:
+ this.$ = {vars:$$[$0], method:$$[$0-1]};
+break;
+case 743: case 744:
+
+ var s3 = $$[$0-1];
+ this.$ = {prop:$$[$0-3], sharp:$$[$0-2], name:(typeof s3 == 'undefined')?undefined:s3.substr(1,s3.length-2), "class":$$[$0]};
+
+break;
+case 745:
+
+ var s2 = $$[$0-1];
+ this.$ = {sharp:$$[$0-2], name:(typeof s2 == 'undefined')?undefined:s2.substr(1,s2.length-2), "class":$$[$0]};
+
+break;
+case 746:
+
+ var s1 = $$[$0-1];
+ this.$ = {name:(typeof s1 == 'undefined')?undefined:s1.substr(1,s1.length-2), "class":$$[$0]};
+
+break;
+case 747:
+
+ this.$ = {"class":$$[$0]};
+
+break;
+case 753:
+ this.$ = new yy.AddRule({left:$$[$0-2], right:$$[$0]});
+break;
+case 754:
+ this.$ = new yy.AddRule({right:$$[$0]});
+break;
+case 757:
+ this.$ = new yy.Term({termid:$$[$0]});
+break;
+case 758:
+ this.$ = new yy.Term({termid:$$[$0-3],args:$$[$0-1]});
+break;
+case 761:
+
+ this.$ = new yy.CreateTrigger({trigger:$$[$0-6], when:$$[$0-5], action:$$[$0-4], table:$$[$0-2], statement:$$[$0]});
+ if($$[$0].exists) this.$.exists = $$[$0].exists;
+ if($$[$0].queries) this.$.queries = $$[$0].queries;
+
+break;
+case 762:
+
+ this.$ = new yy.CreateTrigger({trigger:$$[$0-5], when:$$[$0-4], action:$$[$0-3], table:$$[$0-1], funcid:$$[$0]});
+
+break;
+case 763:
+
+ this.$ = new yy.CreateTrigger({trigger:$$[$0-6], when:$$[$0-4], action:$$[$0-3], table:$$[$0-5], statement:$$[$0]});
+ if($$[$0].exists) this.$.exists = $$[$0].exists;
+ if($$[$0].queries) this.$.queries = $$[$0].queries;
+
+break;
+case 764: case 765: case 767:
+ this.$ = 'AFTER';
+break;
+case 766:
+ this.$ = 'BEFORE';
+break;
+case 768:
+ this.$ = 'INSTEADOF';
+break;
+case 769:
+ this.$ = 'INSERT';
+break;
+case 770:
+ this.$ = 'DELETE';
+break;
+case 771:
+ this.$ = 'UPDATE';
+break;
+case 772:
+ this.$ = new yy.DropTrigger({trigger:$$[$0]});
+break;
+case 773:
+ this.$ = new yy.Reindex({indexid:$$[$0]});
+break;
+case 1047: case 1067: case 1069: case 1071: case 1075: case 1077: case 1079: case 1081: case 1083: case 1085:
+this.$ = [];
+break;
+case 1048: case 1062: case 1064: case 1068: case 1070: case 1072: case 1076: case 1078: case 1080: case 1082: case 1084: case 1086:
+$$[$0-1].push($$[$0]);
+break;
+case 1061: case 1063:
+this.$ = [$$[$0]];
+break;
+}
+},
+table: [o([10,602,764],$V0,{8:1,9:2,12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,2:$V1,4:$V2,5:$V3,14:$V4,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{1:[3]},{10:[1,105],11:106,602:$VH,764:$VI},o($VJ,[2,8]),o($VJ,[2,9]),o($VK,[2,12]),o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:109,2:$V1,4:$V2,5:$V3,15:[1,110],53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,14]),o($VK,[2,15]),o($VK,[2,16]),o($VK,[2,17]),o($VK,[2,18]),o($VK,[2,19]),o($VK,[2,20]),o($VK,[2,21]),o($VK,[2,22]),o($VK,[2,23]),o($VK,[2,24]),o($VK,[2,25]),o($VK,[2,26]),o($VK,[2,27]),o($VK,[2,28]),o($VK,[2,29]),o($VK,[2,30]),o($VK,[2,31]),o($VK,[2,32]),o($VK,[2,33]),o($VK,[2,34]),o($VK,[2,35]),o($VK,[2,36]),o($VK,[2,37]),o($VK,[2,38]),o($VK,[2,39]),o($VK,[2,40]),o($VK,[2,41]),o($VK,[2,42]),o($VK,[2,43]),o($VK,[2,44]),o($VK,[2,45]),o($VK,[2,46]),o($VK,[2,47]),o($VK,[2,48]),o($VK,[2,49]),o($VK,[2,50]),o($VK,[2,51]),o($VK,[2,52]),o($VK,[2,53]),o($VK,[2,54]),o($VK,[2,55]),o($VK,[2,56]),o($VK,[2,57]),o($VK,[2,58]),o($VK,[2,59]),o($VK,[2,60]),o($VK,[2,61]),o($VK,[2,62]),o($VK,[2,63]),o($VK,[2,64]),o($VK,[2,65]),o($VK,[2,66]),o($VK,[2,67]),{353:[1,111]},{2:$V1,3:112,4:$V2,5:$V3},{2:$V1,3:114,4:$V2,5:$V3,156:$VL,200:113,290:$VM,291:$VN,292:$VO,293:$VP},o($VQ,[2,501],{3:121,348:125,2:$V1,4:$V2,5:$V3,134:$VR,135:$VS,187:[1,123],193:[1,122],268:[1,129],269:[1,130],357:[1,131],405:[1,120],472:[1,124],509:[1,128]}),{145:$VT,449:132,450:133},{183:[1,135]},{405:[1,136]},{2:$V1,3:138,4:$V2,5:$V3,130:[1,144],193:[1,139],353:[1,143],397:140,405:[1,137],410:[1,141],509:[1,142]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:145,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt1,$Vu1,{340:204,171:[1,205],198:$Vv1}),o($Vt1,$Vu1,{340:207,198:$Vv1}),{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,198:[1,210],199:213,200:215,201:214,202:217,209:209,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1,453:208},{2:$V1,3:221,4:$V2,5:$V3},{353:[1,222]},o($Vz1,[2,1043],{80:223,106:224,107:[1,225]}),o($VA1,[2,1047],{90:226}),{2:$V1,3:230,4:$V2,5:$V3,190:[1,228],193:[1,231],267:[1,227],353:[1,232],405:[1,229]},{353:[1,233]},{2:$V1,3:236,4:$V2,5:$V3,73:234,75:235},o([306,602,764],$V0,{12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,9:238,2:$V1,4:$V2,5:$V3,14:$V4,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,435:[1,237],436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{435:[1,239]},{435:[1,240]},{2:$V1,3:242,4:$V2,5:$V3,405:[1,241]},{2:$V1,3:244,4:$V2,5:$V3,199:243},o($VB1,[2,311]),{113:245,132:$VW,296:$Vj1},{2:$V1,3:114,4:$V2,5:$V3,113:251,131:$VV,132:[1,248],143:$VY,144:246,145:$VC1,152:$V$,156:$VL,181:$V31,196:250,200:255,201:254,257:252,258:253,265:$VD1,274:247,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:257,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,672]),o($VK,[2,673]),{2:$V1,3:168,4:$V2,5:$V3,40:259,56:165,77:$VU,79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:258,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:266,4:$V2,5:$V3,113:263,132:$VW,296:$Vj1,444:261,445:262,446:264,447:$VE1},{2:$V1,3:267,4:$V2,5:$V3,143:$VF1,145:$VG1,431:268},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:271,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{505:[1,272]},{2:$V1,3:100,4:$V2,5:$V3,504:274,506:273},{2:$V1,3:114,4:$V2,5:$V3,156:$VL,200:275,290:$VM,291:$VN,292:$VO,293:$VP},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:276,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VH1,$VI1,{186:280,164:[1,279],185:[1,277],187:[1,278],195:$VJ1}),o($VK1,[2,757],{77:[1,282]}),o([2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],[2,152],{149:[1,283],150:[1,284],190:[1,285],191:[1,286],192:[1,287],193:[1,288],194:[1,289]}),o($VL1,[2,1]),o($VL1,[2,2]),{6:290,131:[1,439],172:[1,462],245:[1,411],285:[1,373],286:[1,407],370:[1,404],381:[1,295],402:[1,297],410:[1,549],414:[1,471],416:[1,443],417:[1,509],433:[1,442],435:[1,525],440:[1,342],460:[1,418],464:[1,448],470:[1,341],514:[1,307],515:[1,299],516:[1,399],518:[1,291],519:[1,292],520:[1,293],521:[1,294],522:[1,296],523:[1,298],524:[1,300],525:[1,301],526:[1,302],527:[1,303],528:[1,304],529:[1,305],530:[1,306],531:[1,308],532:[1,309],533:[1,310],534:[1,311],535:[1,312],536:[1,313],537:[1,314],538:[1,315],539:[1,316],540:[1,317],541:[1,318],542:[1,319],543:[1,320],544:[1,321],545:[1,322],546:[1,323],547:[1,324],548:[1,325],549:[1,326],550:[1,327],551:[1,328],552:[1,329],553:[1,330],554:[1,331],555:[1,332],556:[1,333],557:[1,334],558:[1,335],559:[1,336],560:[1,337],561:[1,338],562:[1,339],563:[1,340],564:[1,343],565:[1,344],566:[1,345],567:[1,346],568:[1,347],569:[1,348],570:[1,349],571:[1,350],572:[1,351],573:[1,352],574:[1,353],575:[1,354],576:[1,355],577:[1,356],578:[1,357],579:[1,358],580:[1,359],581:[1,360],582:[1,361],583:[1,362],584:[1,363],585:[1,364],586:[1,365],587:[1,366],588:[1,367],589:[1,368],590:[1,369],591:[1,370],592:[1,371],593:[1,372],594:[1,374],595:[1,375],596:[1,376],597:[1,377],598:[1,378],599:[1,379],600:[1,380],601:[1,381],602:[1,382],603:[1,383],604:[1,384],605:[1,385],606:[1,386],607:[1,387],608:[1,388],609:[1,389],610:[1,390],611:[1,391],612:[1,392],613:[1,393],614:[1,394],615:[1,395],616:[1,396],617:[1,397],618:[1,398],619:[1,400],620:[1,401],621:[1,402],622:[1,403],623:[1,405],624:[1,406],625:[1,408],626:[1,409],627:[1,410],628:[1,412],629:[1,413],630:[1,414],631:[1,415],632:[1,416],633:[1,417],634:[1,419],635:[1,420],636:[1,421],637:[1,422],638:[1,423],639:[1,424],640:[1,425],641:[1,426],642:[1,427],643:[1,428],644:[1,429],645:[1,430],646:[1,431],647:[1,432],648:[1,433],649:[1,434],650:[1,435],651:[1,436],652:[1,437],653:[1,438],654:[1,440],655:[1,441],656:[1,444],657:[1,445],658:[1,446],659:[1,447],660:[1,449],661:[1,450],662:[1,451],663:[1,452],664:[1,453],665:[1,454],666:[1,455],667:[1,456],668:[1,457],669:[1,458],670:[1,459],671:[1,460],672:[1,461],673:[1,463],674:[1,464],675:[1,465],676:[1,466],677:[1,467],678:[1,468],679:[1,469],680:[1,470],681:[1,472],682:[1,473],683:[1,474],684:[1,475],685:[1,476],686:[1,477],687:[1,478],688:[1,479],689:[1,480],690:[1,481],691:[1,482],692:[1,483],693:[1,484],694:[1,485],695:[1,486],696:[1,487],697:[1,488],698:[1,489],699:[1,490],700:[1,491],701:[1,492],702:[1,493],703:[1,494],704:[1,495],705:[1,496],706:[1,497],707:[1,498],708:[1,499],709:[1,500],710:[1,501],711:[1,502],712:[1,503],713:[1,504],714:[1,505],715:[1,506],716:[1,507],717:[1,508],718:[1,510],719:[1,511],720:[1,512],721:[1,513],722:[1,514],723:[1,515],724:[1,516],725:[1,517],726:[1,518],727:[1,519],728:[1,520],729:[1,521],730:[1,522],731:[1,523],732:[1,524],733:[1,526],734:[1,527],735:[1,528],736:[1,529],737:[1,530],738:[1,531],739:[1,532],740:[1,533],741:[1,534],742:[1,535],743:[1,536],744:[1,537],745:[1,538],746:[1,539],747:[1,540],748:[1,541],749:[1,542],750:[1,543],751:[1,544],752:[1,545],753:[1,546],754:[1,547],755:[1,548],756:[1,550],757:[1,551],758:[1,552],759:[1,553],760:[1,554],761:[1,555],762:[1,556],763:[1,557]},{1:[2,6]},o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:558,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VM1,[2,1041]),o($VM1,[2,1042]),o($VJ,[2,10]),{16:[1,559]},{2:$V1,3:244,4:$V2,5:$V3,199:560},{405:[1,561]},o($VK,[2,760]),{77:$VN1},{77:[1,563]},{77:$VO1},{77:[1,565]},{77:[1,566]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:567,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt1,$VP1,{350:568,156:$VQ1}),{405:[1,570]},{2:$V1,3:571,4:$V2,5:$V3},{193:[1,572]},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,183:[1,574],431:585,473:573,474:575,475:576,478:577,482:582,493:579,497:581},{130:[1,589],349:586,353:[1,588],410:[1,587]},{113:591,132:$VW,183:[2,1141],296:$Vj1,471:590},o($VU1,[2,1135],{465:592,3:593,2:$V1,4:$V2,5:$V3}),{2:$V1,3:594,4:$V2,5:$V3},{4:[1,595]},{4:[1,596]},o($VQ,[2,502]),o($VK,[2,686],{74:[1,597]}),o($VV1,[2,687]),{2:$V1,3:598,4:$V2,5:$V3},{2:$V1,3:244,4:$V2,5:$V3,199:599},{2:$V1,3:600,4:$V2,5:$V3},o($Vt1,$VW1,{398:601,156:$VX1}),{405:[1,603]},{2:$V1,3:604,4:$V2,5:$V3},o($Vt1,$VW1,{398:605,156:$VX1}),o($Vt1,$VW1,{398:606,156:$VX1}),{2:$V1,3:607,4:$V2,5:$V3},o($VY1,[2,1129]),o($VY1,[2,1130]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:608,114:625,327:637,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$V22,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V9,154:$Va2,156:$Va,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,266:$Vc,267:$Vd,290:$Ve,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VB1,[2,288]),o($VB1,[2,289]),o($VB1,[2,290]),o($VB1,[2,291]),o($VB1,[2,292]),o($VB1,[2,293]),o($VB1,[2,294]),o($VB1,[2,295]),o($VB1,[2,296]),o($VB1,[2,297]),o($VB1,[2,298]),o($VB1,[2,299]),o($VB1,[2,300]),o($VB1,[2,301]),o($VB1,[2,302]),o($VB1,[2,303]),o($VB1,[2,304]),o($VB1,[2,305]),{2:$V1,3:168,4:$V2,5:$V3,26:654,27:653,36:649,40:648,56:165,77:$VU,79:75,89:$V7,94:651,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,264:650,265:$V41,266:$Vc,267:[1,655],270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:[1,652],291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,339:$Vh,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,309]),o($VB1,[2,310]),{77:[1,656]},o([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy2,{77:$VN1,116:[1,657]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:658,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:659,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:661,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:662,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,283]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,249,265,266,267,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,300,302,303,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,415,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764,765,766],[2,356]),o($Vz2,[2,357]),o($Vz2,[2,358]),o($Vz2,$VA2),o($Vz2,[2,360]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,361]),{2:$V1,3:664,4:$V2,5:$V3,131:[1,665],301:663},{2:$V1,3:666,4:$V2,5:$V3},o($Vz2,[2,367]),o($Vz2,[2,368]),{2:$V1,3:667,4:$V2,5:$V3,77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},{77:[1,674]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:675,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,304:676,307:677,308:$VC2,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,679]},{77:[1,680]},o($VD2,[2,624]),{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,300:[1,683],302:$Vn1,419:190,420:$Vr1,421:681,422:684,423:686,424:$Vs1,427:682},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:696,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:697,4:$V2,5:$V3,156:$VL,200:698,290:$VM,291:$VN,292:$VO,293:$VP},{77:[2,336]},{77:[2,337]},{77:[2,338]},{77:[2,339]},{77:[2,340]},{77:[2,341]},{77:[2,342]},{77:[2,343]},{77:[2,344]},{2:$V1,3:704,4:$V2,5:$V3,131:$VF2,132:$VG2,425:699,426:[1,700],428:701},{2:$V1,3:244,4:$V2,5:$V3,199:705},{290:[1,706]},o($Vt1,[2,472]),{2:$V1,3:244,4:$V2,5:$V3,199:707},{231:[1,709],454:708},{231:[2,695]},{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:710,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{40:711,79:75,89:$V7,184:99,189:$Vb},o($VH2,[2,1091],{210:712,76:[1,713]}),o($VI2,[2,185],{3:714,2:$V1,4:$V2,5:$V3,76:[1,715],154:[1,716]}),o($VI2,[2,189],{3:717,2:$V1,4:$V2,5:$V3,76:[1,718]}),o($VI2,[2,190],{3:719,2:$V1,4:$V2,5:$V3,76:[1,720]}),o($VI2,[2,193]),o($VI2,[2,194],{3:721,2:$V1,4:$V2,5:$V3,76:[1,722]}),o($VI2,[2,197],{3:723,2:$V1,4:$V2,5:$V3,76:[1,724]}),o([2,4,5,10,72,74,76,78,93,98,118,128,154,162,168,169,183,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],$VJ2,{77:$VN1,116:$VK2}),o([2,4,5,10,72,74,76,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],[2,200]),o($VK,[2,773]),{2:$V1,3:244,4:$V2,5:$V3,199:726},o($VL2,$VM2,{81:727,198:$VN2}),o($Vz1,[2,1044]),o($VO2,[2,1057],{108:729,190:[1,730]}),o([10,78,183,306,310,602,764],$VM2,{419:190,81:731,117:732,3:733,114:736,144:758,158:768,160:769,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,198:$VN2,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),{353:[1,782]},{183:[1,783]},o($VK,[2,594],{112:[1,784]}),{405:[1,785]},{183:[1,786]},o($VK,[2,598],{112:[1,787],183:[1,788]}),{2:$V1,3:244,4:$V2,5:$V3,199:789},{40:790,74:[1,791],79:75,89:$V7,184:99,189:$Vb},o($Vv3,[2,70]),{76:[1,792]},o($VK,[2,667]),{11:106,306:[1,793],602:$VH,764:$VI},o($VK,[2,665]),o($VK,[2,666]),{2:$V1,3:794,4:$V2,5:$V3},o($VK,[2,587]),{146:[1,795]},o([2,4,5,10,53,72,74,76,77,78,89,95,124,128,143,145,146,148,149,152,154,156,181,183,187,189,230,266,267,290,297,302,306,310,335,338,339,343,344,356,368,369,373,374,396,400,401,402,403,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,514,515,516,517,602,764],$VJ2,{116:$VK2}),o($VK,[2,615]),o($VK,[2,616]),o($VK,[2,617]),o($VK,$VA2,{74:[1,796]}),{77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},o($Vw3,[2,320]),o($Vw3,[2,321]),o($Vw3,[2,322]),o($Vw3,[2,323]),o($Vw3,[2,324]),o($Vw3,[2,325]),o($Vw3,[2,326]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,114:625,327:637,12:797,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$V22,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V9,154:$Va2,156:$Va,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,266:$Vc,267:$Vd,290:$Ve,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,675],{74:$Vx3}),o($VK,[2,676]),o($Vy3,[2,354],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,677],{74:[1,800]}),o($VK,[2,678],{74:[1,801]}),o($VV1,[2,683]),o($VV1,[2,685]),o($VV1,[2,679]),o($VV1,[2,680]),{114:807,115:$V$1,116:$V02,124:[1,802],230:$VA3,429:803,430:804,433:$VB3},{2:$V1,3:808,4:$V2,5:$V3},o($Vt1,[2,656]),o($Vt1,[2,657]),o($VK,[2,614],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:100,4:$V2,5:$V3,504:274,506:809},o($VK,[2,754],{74:$VC3}),o($VD3,[2,756]),o($VK,[2,759]),o($VK,[2,681],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VE3,$VI1,{186:811,195:$VJ1}),o($VE3,$VI1,{186:812,195:$VJ1}),o($VE3,$VI1,{186:813,195:$VJ1}),o($VF3,[2,1087],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,188:814,174:815,253:816,94:817,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{77:[1,819],131:$VV,196:818},{2:$V1,3:100,4:$V2,5:$V3,504:274,506:820},o($VG3,[2,153]),o($VG3,[2,154]),o($VG3,[2,155]),o($VG3,[2,156]),o($VG3,[2,157]),o($VG3,[2,158]),o($VG3,[2,159]),o($VL1,[2,3]),o($VL1,[2,774]),o($VL1,[2,775]),o($VL1,[2,776]),o($VL1,[2,777]),o($VL1,[2,778]),o($VL1,[2,779]),o($VL1,[2,780]),o($VL1,[2,781]),o($VL1,[2,782]),o($VL1,[2,783]),o($VL1,[2,784]),o($VL1,[2,785]),o($VL1,[2,786]),o($VL1,[2,787]),o($VL1,[2,788]),o($VL1,[2,789]),o($VL1,[2,790]),o($VL1,[2,791]),o($VL1,[2,792]),o($VL1,[2,793]),o($VL1,[2,794]),o($VL1,[2,795]),o($VL1,[2,796]),o($VL1,[2,797]),o($VL1,[2,798]),o($VL1,[2,799]),o($VL1,[2,800]),o($VL1,[2,801]),o($VL1,[2,802]),o($VL1,[2,803]),o($VL1,[2,804]),o($VL1,[2,805]),o($VL1,[2,806]),o($VL1,[2,807]),o($VL1,[2,808]),o($VL1,[2,809]),o($VL1,[2,810]),o($VL1,[2,811]),o($VL1,[2,812]),o($VL1,[2,813]),o($VL1,[2,814]),o($VL1,[2,815]),o($VL1,[2,816]),o($VL1,[2,817]),o($VL1,[2,818]),o($VL1,[2,819]),o($VL1,[2,820]),o($VL1,[2,821]),o($VL1,[2,822]),o($VL1,[2,823]),o($VL1,[2,824]),o($VL1,[2,825]),o($VL1,[2,826]),o($VL1,[2,827]),o($VL1,[2,828]),o($VL1,[2,829]),o($VL1,[2,830]),o($VL1,[2,831]),o($VL1,[2,832]),o($VL1,[2,833]),o($VL1,[2,834]),o($VL1,[2,835]),o($VL1,[2,836]),o($VL1,[2,837]),o($VL1,[2,838]),o($VL1,[2,839]),o($VL1,[2,840]),o($VL1,[2,841]),o($VL1,[2,842]),o($VL1,[2,843]),o($VL1,[2,844]),o($VL1,[2,845]),o($VL1,[2,846]),o($VL1,[2,847]),o($VL1,[2,848]),o($VL1,[2,849]),o($VL1,[2,850]),o($VL1,[2,851]),o($VL1,[2,852]),o($VL1,[2,853]),o($VL1,[2,854]),o($VL1,[2,855]),o($VL1,[2,856]),o($VL1,[2,857]),o($VL1,[2,858]),o($VL1,[2,859]),o($VL1,[2,860]),o($VL1,[2,861]),o($VL1,[2,862]),o($VL1,[2,863]),o($VL1,[2,864]),o($VL1,[2,865]),o($VL1,[2,866]),o($VL1,[2,867]),o($VL1,[2,868]),o($VL1,[2,869]),o($VL1,[2,870]),o($VL1,[2,871]),o($VL1,[2,872]),o($VL1,[2,873]),o($VL1,[2,874]),o($VL1,[2,875]),o($VL1,[2,876]),o($VL1,[2,877]),o($VL1,[2,878]),o($VL1,[2,879]),o($VL1,[2,880]),o($VL1,[2,881]),o($VL1,[2,882]),o($VL1,[2,883]),o($VL1,[2,884]),o($VL1,[2,885]),o($VL1,[2,886]),o($VL1,[2,887]),o($VL1,[2,888]),o($VL1,[2,889]),o($VL1,[2,890]),o($VL1,[2,891]),o($VL1,[2,892]),o($VL1,[2,893]),o($VL1,[2,894]),o($VL1,[2,895]),o($VL1,[2,896]),o($VL1,[2,897]),o($VL1,[2,898]),o($VL1,[2,899]),o($VL1,[2,900]),o($VL1,[2,901]),o($VL1,[2,902]),o($VL1,[2,903]),o($VL1,[2,904]),o($VL1,[2,905]),o($VL1,[2,906]),o($VL1,[2,907]),o($VL1,[2,908]),o($VL1,[2,909]),o($VL1,[2,910]),o($VL1,[2,911]),o($VL1,[2,912]),o($VL1,[2,913]),o($VL1,[2,914]),o($VL1,[2,915]),o($VL1,[2,916]),o($VL1,[2,917]),o($VL1,[2,918]),o($VL1,[2,919]),o($VL1,[2,920]),o($VL1,[2,921]),o($VL1,[2,922]),o($VL1,[2,923]),o($VL1,[2,924]),o($VL1,[2,925]),o($VL1,[2,926]),o($VL1,[2,927]),o($VL1,[2,928]),o($VL1,[2,929]),o($VL1,[2,930]),o($VL1,[2,931]),o($VL1,[2,932]),o($VL1,[2,933]),o($VL1,[2,934]),o($VL1,[2,935]),o($VL1,[2,936]),o($VL1,[2,937]),o($VL1,[2,938]),o($VL1,[2,939]),o($VL1,[2,940]),o($VL1,[2,941]),o($VL1,[2,942]),o($VL1,[2,943]),o($VL1,[2,944]),o($VL1,[2,945]),o($VL1,[2,946]),o($VL1,[2,947]),o($VL1,[2,948]),o($VL1,[2,949]),o($VL1,[2,950]),o($VL1,[2,951]),o($VL1,[2,952]),o($VL1,[2,953]),o($VL1,[2,954]),o($VL1,[2,955]),o($VL1,[2,956]),o($VL1,[2,957]),o($VL1,[2,958]),o($VL1,[2,959]),o($VL1,[2,960]),o($VL1,[2,961]),o($VL1,[2,962]),o($VL1,[2,963]),o($VL1,[2,964]),o($VL1,[2,965]),o($VL1,[2,966]),o($VL1,[2,967]),o($VL1,[2,968]),o($VL1,[2,969]),o($VL1,[2,970]),o($VL1,[2,971]),o($VL1,[2,972]),o($VL1,[2,973]),o($VL1,[2,974]),o($VL1,[2,975]),o($VL1,[2,976]),o($VL1,[2,977]),o($VL1,[2,978]),o($VL1,[2,979]),o($VL1,[2,980]),o($VL1,[2,981]),o($VL1,[2,982]),o($VL1,[2,983]),o($VL1,[2,984]),o($VL1,[2,985]),o($VL1,[2,986]),o($VL1,[2,987]),o($VL1,[2,988]),o($VL1,[2,989]),o($VL1,[2,990]),o($VL1,[2,991]),o($VL1,[2,992]),o($VL1,[2,993]),o($VL1,[2,994]),o($VL1,[2,995]),o($VL1,[2,996]),o($VL1,[2,997]),o($VL1,[2,998]),o($VL1,[2,999]),o($VL1,[2,1000]),o($VL1,[2,1001]),o($VL1,[2,1002]),o($VL1,[2,1003]),o($VL1,[2,1004]),o($VL1,[2,1005]),o($VL1,[2,1006]),o($VL1,[2,1007]),o($VL1,[2,1008]),o($VL1,[2,1009]),o($VL1,[2,1010]),o($VL1,[2,1011]),o($VL1,[2,1012]),o($VL1,[2,1013]),o($VL1,[2,1014]),o($VL1,[2,1015]),o($VL1,[2,1016]),o($VL1,[2,1017]),o($VL1,[2,1018]),o($VL1,[2,1019]),o($VL1,[2,1020]),o($VL1,[2,1021]),o($VL1,[2,1022]),o($VL1,[2,1023]),o($VL1,[2,1024]),o($VL1,[2,1025]),o($VL1,[2,1026]),o($VL1,[2,1027]),o($VL1,[2,1028]),o($VL1,[2,1029]),o($VL1,[2,1030]),o($VL1,[2,1031]),o($VL1,[2,1032]),o($VL1,[2,1033]),o($VL1,[2,1034]),o($VL1,[2,1035]),o($VL1,[2,1036]),o($VL1,[2,1037]),o($VL1,[2,1038]),o($VL1,[2,1039]),o($VL1,[2,1040]),o($VJ,[2,7]),o($VJ,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:821,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),{396:[1,825],401:[1,822],402:[1,823],403:[1,824]},{2:$V1,3:826,4:$V2,5:$V3},o($VE3,[2,1111],{289:827,767:829,78:[1,828],164:[1,831],185:[1,830]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:832,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:833,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:834,4:$V2,5:$V3,132:[1,835]},{2:$V1,3:836,4:$V2,5:$V3,132:[1,837]},{2:$V1,3:838,4:$V2,5:$V3,99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:839,4:$V2,5:$V3},{154:[1,840]},o($VH3,$VP1,{350:841,156:$VQ1}),{230:[1,842]},{2:$V1,3:843,4:$V2,5:$V3},o($VK,[2,729],{74:$VI3}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:845,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD3,[2,732]),o($VJ3,[2,1143],{419:190,476:846,144:847,139:$VK3,141:$VK3,145:$VC1,420:$Vr1,424:$Vs1}),{139:[1,848],141:[1,849]},o($VL3,$VM3,{490:851,493:852,77:[1,850],137:$VS1}),o($VN3,[2,1167],{494:853,132:[1,854]}),o($VO3,[2,1171],{496:855,497:856,152:$VT1}),o($VO3,[2,747]),o($VP3,[2,739]),{2:$V1,3:857,4:$V2,5:$V3,131:[1,858]},{2:$V1,3:859,4:$V2,5:$V3},{2:$V1,3:860,4:$V2,5:$V3},o($Vt1,$VP1,{350:861,156:$VQ1}),o($Vt1,$VP1,{350:862,156:$VQ1}),o($VY1,[2,491]),o($VY1,[2,492]),{183:[1,863]},{183:[2,1142]},o($VQ3,[2,1137],{466:864,469:865,137:[1,866]}),o($VU1,[2,1136]),o($VR3,$VS3,{510:867,95:$VT3,230:[1,868],514:$VU3,515:$VV3,516:$VW3}),{76:[1,873]},{76:[1,874]},{145:$VT,450:875},{4:$VX3,7:879,76:[1,877],272:876,387:878,389:$VY3},o($VK,[2,456],{128:[1,882]}),o($VK,[2,579]),{2:$V1,3:883,4:$V2,5:$V3},{298:[1,884]},o($VH3,$VW1,{398:885,156:$VX1}),o($VK,[2,593]),{2:$V1,3:244,4:$V2,5:$V3,199:887,399:886},{2:$V1,3:244,4:$V2,5:$V3,199:887,399:888},o($VK,[2,772]),o($VJ,[2,669],{438:889,310:[1,890]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:891,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:892,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:893,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:894,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:895,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:896,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:897,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:898,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:899,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:900,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:901,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:902,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:903,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:904,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:905,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:906,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:907,4:$V2,5:$V3,77:[1,909],131:$VV,156:$VL,196:908,200:910,290:$VM,291:$VN,292:$VO,293:$VP},{2:$V1,3:911,4:$V2,5:$V3,77:[1,913],131:$VV,156:$VL,196:912,200:914,290:$VM,291:$VN,292:$VO,293:$VP},o($VZ3,[2,440],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:915,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,441],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:916,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,442],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:917,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,[2,443],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:918,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),o($VZ3,$V_3,{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:919,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:920,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:921,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VZ3,[2,445],{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:922,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:923,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:924,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{164:[1,926],166:[1,928],328:925,334:[1,927]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:929,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:930,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:[1,931],111:934,145:$V$3,156:$VL,200:935,202:933,290:$VM,291:$VN,292:$VO,293:$VP,329:932},{99:[1,937],297:[1,938]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:939,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:940,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:941,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:942,387:878,389:$VY3},o($V04,[2,88]),o($V04,[2,89]),{78:[1,943]},{78:[1,944]},{78:[1,945]},{78:[1,946],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vt1,$Vu1,{340:207,77:$VO1,198:$Vv1}),{78:[2,1107]},{78:[2,1108]},{134:$VR,135:$VS},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:947,152:$V$,154:$V01,156:$VL,158:167,164:[1,949],179:$V11,180:$V21,181:$V31,185:[1,948],196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:950,4:$V2,5:$V3,149:$V14,180:[1,952]},o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,416],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o($V24,[2,417],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V24,[2,418],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V34,[2,419],{114:625,327:637,316:$Vj2}),o($V34,[2,420],{114:625,327:637,316:$Vj2}),o($Vz2,[2,365]),o($Vz2,[2,1113]),o($Vz2,[2,1114]),o($Vz2,[2,366]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,362]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:953,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD2,[2,620]),o($VD2,[2,621]),o($VD2,[2,622]),o($VD2,[2,623]),o($VD2,[2,625]),{40:954,79:75,89:$V7,184:99,189:$Vb},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,304:955,307:677,308:$VC2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{305:956,306:$V44,307:957,308:$VC2,310:$V54},o($V64,[2,372]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:959,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:960,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:961,387:878,389:$VY3},o($VD2,[2,626]),{74:[1,963],300:[1,962]},o($VD2,[2,642]),o($V74,[2,649]),o($V84,[2,627]),o($V84,[2,628]),o($V84,[2,629]),o($V84,[2,630]),o($V84,[2,631]),o($V84,[2,632]),o($V84,[2,633]),o($V84,[2,634]),o($V84,[2,635]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:964,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],$Vy2,{77:$VN1,116:$V94}),{74:$Vx3,300:[1,966]},o($Va4,[2,314],{77:$VN1}),o($VB1,[2,315]),{74:[1,968],426:[1,967]},o($VD2,[2,639]),o($Vb4,[2,644]),{152:[1,969]},{152:[1,970]},{152:[1,971]},{40:976,77:[1,975],79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:972,342:973,343:[1,974],344:$Vd4,419:190,420:$Vr1,424:$Vs1},o($Vt1,$Vu1,{340:981,198:$Vv1}),{77:$Ve4,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,201:980,302:$Vn1,341:982,342:983,344:$Vd4,419:190,420:$Vr1,424:$Vs1},{230:[1,986],455:985},{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:987,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{231:[2,696]},{78:[1,988]},o($VI2,[2,1093],{211:989,3:990,2:$V1,4:$V2,5:$V3}),o($VH2,[2,1092]),o($VI2,[2,183]),{2:$V1,3:991,4:$V2,5:$V3},{212:[1,992]},o($VI2,[2,187]),{2:$V1,3:993,4:$V2,5:$V3},o($VI2,[2,191]),{2:$V1,3:994,4:$V2,5:$V3},o($VI2,[2,195]),{2:$V1,3:995,4:$V2,5:$V3},o($VI2,[2,198]),{2:$V1,3:996,4:$V2,5:$V3},{2:$V1,3:997,4:$V2,5:$V3},{148:[1,998]},o($Vf4,[2,172],{82:999,183:[1,1000]}),{2:$V1,3:219,4:$V2,5:$V3,132:[1,1005],143:$VY,145:[1,1006],152:$V$,156:$VL,181:$V31,199:1001,200:1002,201:1003,202:1004,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1},{2:$V1,3:1011,4:$V2,5:$V3,109:1007,110:1008,111:1009,112:$Vg4},o($VO2,[2,1058]),o($Vh4,[2,1049],{91:1012,182:1013,183:[1,1014]}),o($VA1,[2,1048],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o([2,4,5,10,72,74,76,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,90],{77:[1,1019]}),{119:[1,1020]},o($Vl4,[2,93]),{2:$V1,3:1021,4:$V2,5:$V3},o($Vl4,[2,95]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1022,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1023,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1025,118:$VT2,122:$VU2,123:$VV2,124:$VW2,125:1024,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{77:[1,1026]},{77:[1,1027]},{77:[1,1028]},{77:[1,1029]},o($Vl4,[2,104]),o($Vl4,[2,105]),o($Vl4,[2,106]),o($Vl4,[2,107]),o($Vl4,[2,108]),o($Vl4,[2,109]),{2:$V1,3:1030,4:$V2,5:$V3},{2:$V1,3:1031,4:$V2,5:$V3,133:[1,1032]},o($Vl4,[2,113]),o($Vl4,[2,114]),o($Vl4,[2,115]),o($Vl4,[2,116]),o($Vl4,[2,117]),o($Vl4,[2,118]),{2:$V1,3:1033,4:$V2,5:$V3,77:$VB2,113:669,131:$VV,132:$VW,143:$VY,152:$V$,181:$V31,196:670,201:672,257:671,294:$Vh1,295:$Vi1,296:$Vj1,302:$Vn1,419:673,424:$Vs1},{145:[1,1034]},{77:[1,1035]},{145:[1,1036]},o($Vl4,[2,123]),{77:[1,1037]},{2:$V1,3:1038,4:$V2,5:$V3},{77:[1,1039]},{77:[1,1040]},{77:[1,1041]},{77:[1,1042]},{77:[1,1043],164:[1,1044]},{77:[1,1045]},{77:[1,1046]},{77:[1,1047]},{77:[1,1048]},{77:[1,1049]},{77:[1,1050]},{77:[1,1051]},{77:[1,1052]},{77:[1,1053]},{77:[2,1073]},{77:[2,1074]},{2:$V1,3:244,4:$V2,5:$V3,199:1054},{2:$V1,3:244,4:$V2,5:$V3,199:1055},{113:1056,132:$VW,296:$Vj1},o($VK,[2,596],{112:[1,1057]}),{2:$V1,3:244,4:$V2,5:$V3,199:1058},{113:1059,132:$VW,296:$Vj1},{2:$V1,3:1060,4:$V2,5:$V3},o($VK,[2,693]),o($VK,[2,68]),{2:$V1,3:236,4:$V2,5:$V3,75:1061},{77:[1,1062]},o($VK,[2,674]),o($VK,[2,586]),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1063,336:1064,337:1066},{144:1069,145:$VC1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,671]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1070,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VZ3,$V_3,{255:146,200:147,256:148,111:149,254:150,196:151,257:152,113:153,258:154,201:155,202:156,259:157,260:158,261:159,144:161,262:162,263:163,56:165,158:167,3:168,419:190,94:1071,2:$V1,4:$V2,5:$V3,77:$VU,131:$VV,132:$VW,137:$VX,143:$VY,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,179:$V11,180:$V21,181:$V31,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,420:$Vr1,424:$Vs1}),{113:1072,132:$VW,296:$Vj1},{2:$V1,3:266,4:$V2,5:$V3,446:1073,447:$VE1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1075,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,230:$VA3,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1,429:1074,433:$VB3},o($VK,[2,651]),{114:1077,115:$V$1,116:$V02,124:[1,1076]},o($VK,[2,663]),o($VK,[2,664]),{2:$V1,3:1079,4:$V2,5:$V3,77:$Vo4,131:$Vp4,432:1078},{114:807,115:$V$1,116:$V02,124:[1,1082],430:1083},o($VK,[2,753],{74:$VC3}),{2:$V1,3:100,4:$V2,5:$V3,504:1084},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1085,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1086,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1087,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VF3,[2,151]),o($VF3,[2,1088],{74:$Vq4}),o($Vr4,[2,273]),o($Vr4,[2,280],{114:625,327:637,3:1090,113:1092,2:$V1,4:$V2,5:$V3,76:[1,1089],99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,131:[1,1091],132:$VW,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,296:$Vj1,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VH1,[2,1089],{197:1093,765:[1,1094]}),{131:$VV,196:1095},{74:$VC3,78:[1,1096]},o($VJ,[2,11]),{148:[1,1097],190:[1,1098]},{190:[1,1099]},{190:[1,1100]},{190:[1,1101]},o($VK,[2,575],{76:[1,1103],77:[1,1102]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1104,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vz2,[2,346]),o($VE3,[2,1112]),o($VE3,[2,1109]),o($VE3,[2,1110]),{74:$Vx3,78:[1,1105]},{74:$Vx3,78:[1,1106]},{74:[1,1107]},{74:[1,1108]},{74:[1,1109]},{74:[1,1110]},o($Vz2,[2,353]),o($VK,[2,580]),{298:[1,1111]},{2:$V1,3:1112,4:$V2,5:$V3,113:1113,132:$VW,296:$Vj1},{2:$V1,3:244,4:$V2,5:$V3,199:1114},{230:[1,1115]},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,474:1116,475:576,478:577,482:582,493:579,497:581},o($VK,[2,730],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VD3,[2,1145],{477:1117,483:1118,76:$Vs4}),o($VJ3,[2,1144]),{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,144:1121,145:$VC1,152:$VT1,419:190,420:$Vr1,424:$Vs1,475:1120,493:579,497:581},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1123,482:582,493:579,497:581},{2:$V1,3:578,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,473:1125,474:575,475:576,478:577,482:582,493:579,497:581},o($VN3,[2,1163],{491:1126,132:[1,1127]}),o($VL3,[2,1162]),o($VO3,[2,1169],{495:1128,497:1129,152:$VT1}),o($VN3,[2,1168]),o($VO3,[2,746]),o($VO3,[2,1172]),o($VL3,[2,749]),o($VL3,[2,750]),o($VO3,[2,748]),o($VP3,[2,740]),{2:$V1,3:244,4:$V2,5:$V3,199:1130},{2:$V1,3:244,4:$V2,5:$V3,199:1131},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1132,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vt4,[2,1139],{467:1133,113:1134,132:$VW,296:$Vj1}),o($VQ3,[2,1138]),{2:$V1,3:1135,4:$V2,5:$V3},{335:$Vu4,338:$Vv4,339:$Vw4,511:1136},{2:$V1,3:244,4:$V2,5:$V3,199:1140},o($VR3,[2,765]),o($VR3,[2,766]),o($VR3,[2,767]),{129:[1,1141]},{266:[1,1142]},{266:[1,1143]},o($VV1,[2,688]),o($VV1,[2,689],{124:[1,1144]}),{4:$VX3,7:879,272:1145,387:878,389:$VY3},o([2,4,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,542],{5:[1,1146]}),o([2,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,539],{4:[1,1148],77:[1,1147]}),{77:[1,1149]},o($Vx4,[2,4]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1150,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,588]),o($VH3,[2,568]),{2:$V1,3:1151,4:$V2,5:$V3,113:1152,132:$VW,296:$Vj1},o($VK,[2,564],{74:$Vy4}),o($VV1,[2,566]),o($VK,[2,613],{74:$Vy4}),o($VK,[2,668]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1154,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($Vz4,[2,376],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($V34,[2,377],{114:625,327:637,316:$Vj2}),o($Vz4,[2,378],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VA4,[2,379],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,314:[1,1155],316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VA4,[2,381],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,314:[1,1156],316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,383],{114:625,327:637}),o($V24,[2,384],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($V24,[2,385],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,180:$Ve2,312:$Vg2,316:$Vj2}),o($VB4,[2,386],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o($VB4,[2,387],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o($VB4,[2,388],{114:625,327:637,115:$V$1,116:$V02,123:$V12,136:$V42,312:$Vg2,316:$Vj2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,123,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,389],{114:625,327:637,115:$V$1,116:$V02,136:$V42,312:$Vg2,316:$Vj2}),o($VC4,[2,390],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,391],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,392],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($VC4,[2,393],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2}),o($Va4,[2,394],{77:$VN1}),o($VB1,[2,395]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1157,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,397]),o($Va4,[2,398],{77:$VN1}),o($VB1,[2,399]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1158,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,401]),o($VD4,[2,402],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,403],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,404],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,405],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o([2,4,5,10,53,72,89,99,124,139,140,146,154,156,170,171,189,266,267,290,306,310,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],$VE4,{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,407],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,408],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,409],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,410],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VD4,[2,411],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),{77:[1,1159]},{77:[2,446]},{77:[2,447]},{77:[2,448]},o($VF4,[2,414],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,415],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2}),{2:$V1,3:168,4:$V2,5:$V3,40:1160,56:165,77:$VU,78:[1,1162],79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1161,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,428]),o($VB1,[2,430]),o($VB1,[2,437]),o($VB1,[2,438]),{2:$V1,3:667,4:$V2,5:$V3,77:[1,1163]},{2:$V1,3:695,4:$V2,5:$V3,77:[1,1164],111:934,145:$V$3,156:$VL,200:935,202:1166,290:$VM,291:$VN,292:$VO,293:$VP,329:1165},o($VB1,[2,435]),o($VF4,[2,432],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o($VF4,[2,433],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,332:$Vw2}),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],[2,434],{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,436]),o($VB1,[2,306]),o($VB1,[2,307]),o($VB1,[2,308]),o($VB1,[2,421]),{74:$Vx3,78:[1,1167]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1168,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1169,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,$VG4),o($VH4,[2,286]),o($VB1,[2,282]),{78:[1,1171],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1172]},{305:1173,306:$V44,307:957,308:$VC2,310:$V54},{306:[1,1174]},o($V64,[2,371]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1175,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1176],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{76:[1,1177],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1178]},o($VD2,[2,640]),{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,300:[1,1179],302:$Vn1,419:190,420:$Vr1,422:1180,423:686,424:$Vs1},{78:[1,1181],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1182,4:$V2,5:$V3,149:$V14},o($VB1,[2,364]),o($VD2,[2,637]),{2:$V1,3:704,4:$V2,5:$V3,131:$VF2,132:$VG2,426:[1,1183],428:1184},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1185,423:686,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1186,423:686,424:$Vs1},{2:$V1,3:695,4:$V2,5:$V3,77:$VE2,111:690,113:688,131:$VV,132:$VW,143:$VY,144:685,145:$VC1,152:$V$,156:$VL,181:$V31,196:687,200:693,201:692,257:689,258:691,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1,419:190,420:$Vr1,422:1187,423:686,424:$Vs1},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1188,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,458],{74:$VJ4}),{149:$Vc4,341:1190,344:$Vd4},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,100:1191,111:1193,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1192,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,466]),o($VK4,[2,469]),o($VK4,[2,470]),o($VL4,[2,474]),o($VL4,[2,475]),{2:$V1,3:244,4:$V2,5:$V3,199:1195},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1196,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,462],{74:$VJ4}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1192,419:190,420:$Vr1,424:$Vs1},{308:$VM4,456:1197,458:1198,459:1199},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1201,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{230:[2,697]},o($VI2,[2,181],{3:1202,2:$V1,4:$V2,5:$V3,76:[1,1203]}),o($VI2,[2,182]),o($VI2,[2,1094]),o($VI2,[2,184]),o($VI2,[2,186]),o($VI2,[2,188]),o($VI2,[2,192]),o($VI2,[2,196]),o($VI2,[2,199]),o([2,4,5,10,53,72,74,76,77,78,89,93,95,98,118,124,128,143,145,146,148,149,152,154,156,162,168,169,181,183,187,189,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,266,267,290,297,302,306,310,335,338,339,343,344,356,368,369,373,374,396,400,401,402,403,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,514,515,516,517,602,764],[2,201]),{2:$V1,3:1204,4:$V2,5:$V3},o($VN4,[2,1045],{83:1205,92:1206,93:[1,1207],98:[1,1208]}),{2:$V1,3:219,4:$V2,5:$V3,77:[1,1210],132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,203:1209,209:1211,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($VL2,[2,164]),o($VL2,[2,165]),o($VL2,[2,166]),o($VL2,[2,167]),o($VL2,[2,168]),{2:$V1,3:667,4:$V2,5:$V3},o($Vz1,[2,83],{74:[1,1212]}),o($VO4,[2,85]),o($VO4,[2,86]),{113:1213,132:$VW,296:$Vj1},o([10,72,74,78,93,98,118,124,128,162,168,169,183,198,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],$Vy2,{116:$V94}),o($Vh4,[2,73]),o($Vh4,[2,1050]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1214,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,126]),o($Vl4,[2,144]),o($Vl4,[2,145]),o($Vl4,[2,146]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,78:[2,1065],94:260,111:149,113:153,127:1215,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1216,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1217]},o($Vl4,[2,94]),o([2,4,5,10,72,74,76,77,78,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,96],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o([2,4,5,10,72,74,76,77,78,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],[2,97],{114:625,327:637,99:$VZ1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1218],112:$VS2,114:736,115:$V$1,116:$V02,117:1219,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},o($VP4,[2,1061],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1221,118:$VT2,122:$VU2,123:$VV2,124:$VW2,126:1220,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1222,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1223,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1224,4:$V2,5:$V3},o($Vl4,[2,110]),o($Vl4,[2,111]),o($Vl4,[2,112]),o($Vl4,[2,119]),{2:$V1,3:1225,4:$V2,5:$V3},{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1226,336:1064,337:1066},{2:$V1,3:1227,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1228,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,125]),o($VP4,[2,1067],{155:1229}),o($VP4,[2,1069],{157:1230}),o($VP4,[2,1071],{159:1231}),o($VP4,[2,1075],{161:1232}),o($VQ4,$VR4,{163:1233,178:1234}),{77:[1,1235]},o($VP4,[2,1077],{165:1236}),o($VP4,[2,1079],{167:1237}),o($VQ4,$VR4,{178:1234,163:1238}),o($VQ4,$VR4,{178:1234,163:1239}),o($VQ4,$VR4,{178:1234,163:1240}),o($VQ4,$VR4,{178:1234,163:1241}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1242,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1243,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VS4,[2,1081],{176:1244}),o($VK,[2,606],{183:[1,1245]}),o($VK,[2,602],{183:[1,1246]}),o($VK,[2,595]),{113:1247,132:$VW,296:$Vj1},o($VK,[2,604],{183:[1,1248]}),o($VK,[2,599]),o($VK,[2,600],{112:[1,1249]}),o($Vv3,[2,69]),{40:1250,79:75,89:$V7,184:99,189:$Vb},o($VK,[2,450],{74:$VT4,128:[1,1251]}),o($VU4,[2,451]),{124:[1,1253]},{2:$V1,3:1254,4:$V2,5:$V3},o($Vt1,[2,1115]),o($Vt1,[2,1116]),o($VK,[2,618]),o($Vy3,[2,355],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VD4,$VE4,{114:625,327:637,112:$V_1,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,332:$Vw2}),o($VV1,[2,682]),o($VV1,[2,684]),o($VK,[2,650]),o($VK,[2,652],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1255,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1079,4:$V2,5:$V3,77:$Vo4,131:$Vp4,432:1256},o($VV4,[2,659]),o($VV4,[2,660]),o($VV4,[2,661]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1257,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1258,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{114:1077,115:$V$1,116:$V02,124:[1,1259]},o($VD3,[2,755]),o($VF3,[2,148],{74:$Vq4}),o($VF3,[2,149],{74:$Vq4}),o($VF3,[2,150],{74:$Vq4}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:1260,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1261,4:$V2,5:$V3,113:1263,131:[1,1262],132:$VW,296:$Vj1},o($Vr4,[2,275]),o($Vr4,[2,277]),o($Vr4,[2,279]),o($VH1,[2,160]),o($VH1,[2,1090]),{78:[1,1264]},o($VK1,[2,758]),{2:$V1,3:1265,4:$V2,5:$V3},{2:$V1,3:1266,4:$V2,5:$V3},{2:$V1,3:1268,4:$V2,5:$V3,384:1267},{2:$V1,3:1268,4:$V2,5:$V3,384:1269},{2:$V1,3:1270,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1271,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1272,4:$V2,5:$V3},{74:$Vx3,78:[1,1273]},o($Vz2,[2,347]),o($Vz2,[2,348]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1274,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1275,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1276,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1277,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VH3,[2,504]),o($VK,$VW4,{407:1278,76:$VX4,77:[1,1279]}),o($VK,$VW4,{407:1281,76:$VX4}),{77:[1,1282]},{2:$V1,3:244,4:$V2,5:$V3,199:1283},o($VD3,[2,731]),o($VD3,[2,733]),o($VD3,[2,1146]),{143:$VF1,145:$VG1,431:1284},o($VY4,[2,1147],{419:190,479:1285,144:1286,145:$VC1,420:$Vr1,424:$Vs1}),{76:$Vs4,139:[2,1151],481:1287,483:1288},o([10,74,76,78,132,139,145,152,306,310,420,424,602,764],$VM3,{490:851,493:852,137:$VS1}),o($VD3,[2,736]),o($VD3,$VK3),{74:$VI3,78:[1,1289]},o($VO3,[2,1165],{492:1290,497:1291,152:$VT1}),o($VN3,[2,1164]),o($VO3,[2,745]),o($VO3,[2,1170]),o($VK,[2,490],{77:[1,1292]}),{76:[1,1294],77:[1,1293]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,148:[1,1295],154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VI4,$VZ4,{79:75,184:99,468:1296,40:1299,89:$V7,146:$V_4,189:$Vb,470:$V$4}),o($Vt4,[2,1140]),o($VQ3,[2,723]),{230:[1,1300]},o($V05,[2,769]),o($V05,[2,770]),o($V05,[2,771]),o($VR3,$VS3,{510:1301,95:$VT3,514:$VU3,515:$VV3,516:$VW3}),o($VR3,[2,768]),o($VK,[2,312]),o($VK,[2,313]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1302,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VV1,[2,690],{124:[1,1303]}),o($Vx4,[2,541]),{131:[1,1305],388:1304,390:[1,1306]},o($Vx4,[2,5]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1307,419:190,420:$Vr1,424:$Vs1},o($VK,[2,455],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,589]),o($VK,[2,590]),{2:$V1,3:244,4:$V2,5:$V3,199:1308},o($VK,[2,670]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1309,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1310,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1311],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1312],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:168,4:$V2,5:$V3,40:1313,56:165,77:$VU,79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1314,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1315]},{74:$Vx3,78:[1,1316]},o($VB1,[2,426]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1317,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,40:1318,56:165,77:$VU,78:[1,1320],79:75,89:$V7,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1319,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,184:99,189:$Vb,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,429]),o($VB1,[2,431]),o($VB1,$V15,{275:1321,276:$V25}),{78:[1,1323],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1324],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1325,4:$V2,5:$V3,180:[1,1326]},o($VD2,[2,619]),o($VB1,[2,363]),{306:[1,1327]},o($VB1,[2,370]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,306:[2,374],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1328,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{4:$VX3,7:879,272:1329,387:878,389:$VY3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1330,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VD2,[2,641]),o($V74,[2,648]),o($V84,[2,636]),o($VH4,$VG4),o($VD2,[2,638]),o($Vb4,[2,643]),o($Vb4,[2,645]),o($Vb4,[2,646]),o($Vb4,[2,647]),o($VI4,[2,457],{74:$VJ4}),{77:[1,1332],143:$VY,144:1333,145:$VC1,152:$V$,181:$V31,201:1334,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,463]),{74:$V35,78:[1,1335]},{74:$V45,78:[1,1337]},o([74,78,99,112,115,116,123,124,133,136,138,139,140,141,142,154,170,171,179,180,311,312,313,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333],$V55),o($V65,[2,479],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{40:1341,77:$Ve4,79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:1339,342:1340,344:$Vd4,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,461],{74:$VJ4}),o($VK,[2,717],{457:1342,458:1343,459:1344,308:$VM4,464:[1,1345]}),o($V75,[2,701]),o($V75,[2,702]),{154:[1,1347],460:[1,1346]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,308:[2,698],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VI2,[2,179]),{2:$V1,3:1348,4:$V2,5:$V3},o($VK,[2,574]),o($V85,[2,238],{84:1349,128:[1,1350]}),o($VN4,[2,1046]),{77:[1,1351]},{77:[1,1352]},o($Vf4,[2,169],{204:1353,215:1355,205:1356,216:1357,221:1360,74:$V95,206:$Va5,208:$Vb5,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5}),{2:$V1,3:219,4:$V2,5:$V3,40:711,77:$Vw1,79:75,89:$V7,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,184:99,189:$Vb,199:213,200:215,201:214,202:217,203:1369,209:1211,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($Vk5,[2,177]),{2:$V1,3:1011,4:$V2,5:$V3,110:1370,111:1009,112:$Vg4},o($VO4,[2,87]),o($Vh4,[2,147],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{78:[1,1371]},{74:$Vx3,78:[2,1066]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,78:[2,1059],94:1376,111:149,113:153,120:1372,121:1373,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,242:[1,1375],254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,98]),o($VP4,[2,1062],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1377],112:$VS2,114:736,115:$V$1,116:$V02,117:1378,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},o($VP4,[2,1063],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{78:[1,1379],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1380],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1381]},o($Vl4,[2,120]),{74:$VT4,78:[1,1382]},o($Vl4,[2,122]),{74:$Vx3,78:[1,1383]},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1384],112:$VS2,114:736,115:$V$1,116:$V02,117:1385,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1386],112:$VS2,114:736,115:$V$1,116:$V02,117:1387,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1388],112:$VS2,114:736,115:$V$1,116:$V02,117:1389,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1390],112:$VS2,114:736,115:$V$1,116:$V02,117:1391,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{74:$Vl5,78:[1,1392]},o($V65,[2,143],{419:190,3:733,114:736,144:758,158:768,160:769,117:1394,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),o($VQ4,$VR4,{178:1234,163:1395}),{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1396],112:$VS2,114:736,115:$V$1,116:$V02,117:1397,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,78:[1,1398],112:$VS2,114:736,115:$V$1,116:$V02,117:1399,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{74:$Vl5,78:[1,1400]},{74:$Vl5,78:[1,1401]},{74:$Vl5,78:[1,1402]},{74:$Vl5,78:[1,1403]},{78:[1,1404],153:1015,179:$Vi4,180:$Vj4,181:$Vk4},{74:$Vq4,78:[1,1405]},{2:$V1,3:733,4:$V2,5:$V3,72:$VP2,74:[1,1406],76:$VQ2,77:$VR2,112:$VS2,114:736,115:$V$1,116:$V02,117:1407,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,144:758,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,158:768,160:769,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1408,4:$V2,5:$V3},{2:$V1,3:1409,4:$V2,5:$V3},o($VK,[2,597]),{2:$V1,3:1410,4:$V2,5:$V3},{113:1411,132:$VW,296:$Vj1},{78:[1,1412]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1413,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,336:1414,337:1066},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1415,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{124:[1,1416]},o($VK,[2,653],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VV4,[2,658]),{78:[1,1417],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,[2,654],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1418,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vr4,[2,272]),o($Vr4,[2,274]),o($Vr4,[2,276]),o($Vr4,[2,278]),o($VH1,[2,161]),o($VK,[2,569]),{148:[1,1419]},o($VK,[2,570]),o($VD3,[2,536],{387:878,7:879,272:1420,4:$VX3,386:[1,1421],389:$VY3}),o($VK,[2,571]),o($VK,[2,573]),{74:$Vx3,78:[1,1422]},o($VK,[2,577]),o($Vz2,[2,345]),{74:[1,1423],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1424],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1425],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{74:[1,1426],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,[2,581]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1427,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1428,4:$V2,5:$V3},o($VK,[2,583]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1429,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1430]},{2:$V1,3:1431,4:$V2,5:$V3},{76:$Vs4,139:[2,1149],480:1432,483:1433},o($VY4,[2,1148]),{139:[1,1434]},{139:[2,1152]},o($VD3,[2,737]),o($VO3,[2,744]),o($VO3,[2,1166]),{2:$V1,3:1268,4:$V2,5:$V3,76:[1,1437],351:1435,358:1436,384:1438},{2:$V1,3:1011,4:$V2,5:$V3,100:1439,111:1440},{40:1441,79:75,89:$V7,184:99,189:$Vb},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1442,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,722]),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1443,336:1064,337:1066},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1444,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,727]),{2:$V1,3:244,4:$V2,5:$V3,199:1445},{335:$Vu4,338:$Vv4,339:$Vw4,511:1446},o($VV1,[2,691],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1447,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:[1,1448],78:[1,1449]},o($V65,[2,543]),o($V65,[2,544]),{74:$V45,78:[1,1450]},o($VV1,[2,565]),o($Vz4,[2,380],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($Vz4,[2,382],{114:625,327:637,115:$V$1,116:$V02,123:$V12,133:$V32,136:$V42,138:$V52,141:$V82,142:$V92,179:$Vd2,180:$Ve2,312:$Vg2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2}),o($VB1,[2,396]),o($VB1,[2,400]),{78:[1,1451]},{74:$Vx3,78:[1,1452]},o($VB1,[2,422]),o($VB1,[2,424]),{78:[1,1453],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1454]},{74:$Vx3,78:[1,1455]},o($VB1,[2,427]),o($VB1,[2,327]),{77:[1,1456]},o($VB1,$V15,{275:1457,276:$V25}),o($VB1,$V15,{275:1458,276:$V25}),o($VH4,[2,284]),o($VB1,[2,281]),o($VB1,[2,369]),o($V64,[2,373],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{74:[1,1460],78:[1,1459]},{74:[1,1462],78:[1,1461],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{2:$V1,3:1325,4:$V2,5:$V3},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1194,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,345:1463,419:190,420:$Vr1,424:$Vs1},o($VL4,[2,477]),o($VL4,[2,478]),{40:1466,77:$Ve4,79:75,89:$V7,143:$VY,144:979,145:$VC1,149:$Vc4,152:$V$,181:$V31,184:99,189:$Vb,201:980,302:$Vn1,341:1464,342:1465,344:$Vd4,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,111:1467},o($VL4,[2,473]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1468,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1469,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,460],{74:$VJ4}),o($VI4,[2,467]),o($VK,[2,694]),o($V75,[2,699]),o($V75,[2,700]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:817,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,174:1470,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{170:[1,1472],309:[1,1471]},{460:[1,1473]},o($VI2,[2,180]),o($Vm5,[2,240],{85:1474,232:[1,1475]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1476,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1477,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1478,4:$V2,5:$V3},o($Vf4,[2,170],{216:1357,221:1360,215:1479,205:1480,206:$Va5,208:$Vb5,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5}),{2:$V1,3:219,4:$V2,5:$V3,77:$Vw1,132:$Vx1,143:$VY,144:212,145:$VZ,152:$V$,156:$VL,181:$V31,199:213,200:215,201:214,202:217,209:1481,213:$Vy1,214:218,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},o($Vn5,[2,205]),o($Vn5,[2,206]),{2:$V1,3:219,4:$V2,5:$V3,77:[1,1486],143:$VY,144:1484,145:$VZ,152:$V$,156:$VL,181:$V31,199:1483,200:1487,201:1485,202:1488,217:1482,290:$VM,291:$VN,292:$VO,293:$VP,302:$Vn1,419:190,420:$Vr1,424:$Vs1},{207:[1,1489],223:$Vo5},{207:[1,1491],223:$Vp5},o($Vq5,[2,222]),{206:[1,1495],208:[1,1494],221:1493,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($Vq5,[2,224]),{223:[1,1496]},{208:[1,1498],223:[1,1497]},{208:[1,1500],223:[1,1499]},{208:[1,1501]},{223:[1,1502]},{223:[1,1503]},{74:$V95,204:1504,205:1356,206:$Va5,208:$Vb5,215:1355,216:1357,221:1360,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($VO4,[2,84]),o($Vl4,[2,100]),{74:$Vr5,78:[1,1505]},{78:[1,1507]},o($Vs5,[2,261]),{78:[2,1060]},o($Vs5,[2,263],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,242:[1,1508],243:[1,1509],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($Vl4,[2,99]),o($VP4,[2,1064],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,101]),o($Vl4,[2,102]),o($Vl4,[2,103]),o($Vl4,[2,121]),o($Vl4,[2,124]),o($Vl4,[2,127]),o($VP4,[2,1068],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,128]),o($VP4,[2,1070],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,129]),o($VP4,[2,1072],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,130]),o($VP4,[2,1076],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,131]),o($VQ4,[2,1083],{177:1510}),o($VQ4,[2,1086],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),{74:$Vl5,78:[1,1511]},o($Vl4,[2,133]),o($VP4,[2,1078],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,134]),o($VP4,[2,1080],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,135]),o($Vl4,[2,136]),o($Vl4,[2,137]),o($Vl4,[2,138]),o($Vl4,[2,139]),o($Vl4,[2,140]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:260,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,151:1512,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VS4,[2,1082],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($VK,[2,607]),o($VK,[2,603]),o($VK,[2,605]),o($VK,[2,601]),o($Vv3,[2,71]),o($VK,[2,449],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VU4,[2,452]),o($VU4,[2,453],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1513,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VV4,[2,662]),o($VK,[2,655],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:1514,4:$V2,5:$V3},o($VD3,[2,545],{385:1515,391:1516,392:1517,366:1525,154:$Vt5,187:$Vu5,230:$Vv5,297:$Vw5,343:$Vx5,356:$Vy5,368:$Vz5,369:$VA5,373:$VB5,374:$VC5}),o($VD3,[2,535]),o($VK,[2,576],{76:[1,1529]}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1530,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1531,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1532,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1533,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:$Vx3,78:[1,1534]},o($VK,[2,585]),{74:$Vr5,78:[1,1535]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1536,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o([10,74,78,139,306,310,602,764],[2,741]),{139:[1,1537]},{139:[2,1150]},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1538,482:582,493:579,497:581},{78:[1,1539]},{74:[1,1540],78:[2,506]},{40:1541,79:75,89:$V7,184:99,189:$Vb},o($V65,[2,532]),{74:$V35,78:[1,1542]},o($Vk5,$V55),o($VK,[2,1133],{412:1543,413:1544,72:$VD5}),o($VI4,$VZ4,{79:75,184:99,114:625,327:637,40:1299,468:1546,89:$V7,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,146:$V_4,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,189:$Vb,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2,470:$V$4}),o($VI4,[2,725],{74:$VT4}),o($VI4,[2,726],{74:$Vx3}),o([10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],[2,1181],{512:1547,3:1548,2:$V1,4:$V2,5:$V3,76:[1,1549]}),o($VE5,[2,1183],{513:1550,76:[1,1551]}),o($VV1,[2,692],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{131:[1,1552]},o($Vx4,[2,538]),o($Vx4,[2,540]),o($VB1,[2,412]),o($VB1,[2,413]),o($VB1,[2,439]),o($VB1,[2,423]),o($VB1,[2,425]),{118:$VF5,277:1553,278:1554,279:[1,1555]},o($VB1,[2,328]),o($VB1,[2,329]),o($VB1,[2,316]),{131:[1,1557]},o($VB1,[2,318]),{131:[1,1558]},{74:$V45,78:[1,1559]},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1560,419:190,420:$Vr1,424:$Vs1},o($VI4,[2,465],{74:$VJ4}),o($VI4,[2,468]),o($Vk5,[2,488]),o($V65,[2,480],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VI4,[2,459],{74:$VJ4}),o($VK,[2,718],{74:$Vq4,198:[1,1561]}),{335:$VG5,338:$VH5,461:1562},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1565,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{119:[1,1567],170:[1,1568],309:[1,1566]},o($VI5,[2,259],{86:1569,118:[1,1570]}),{119:[1,1571]},o($V85,[2,239],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{95:[1,1572],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{95:[1,1573]},o($Vn5,[2,203]),o($Vn5,[2,204]),o($Vk5,[2,178]),o($Vn5,[2,237],{218:1574,230:[1,1575],231:[1,1576]}),o($VJ5,[2,208],{3:1577,2:$V1,4:$V2,5:$V3,76:[1,1578]}),o($VK5,[2,1095],{219:1579,76:[1,1580]}),{2:$V1,3:1581,4:$V2,5:$V3,76:[1,1582]},{40:1583,79:75,89:$V7,184:99,189:$Vb},o($VJ5,[2,216],{3:1584,2:$V1,4:$V2,5:$V3,76:[1,1585]}),o($VJ5,[2,219],{3:1586,2:$V1,4:$V2,5:$V3,76:[1,1587]}),{77:[1,1588]},o($Vq5,[2,234]),{77:[1,1589]},o($Vq5,[2,230]),o($Vq5,[2,223]),{223:$Vp5},{223:$Vo5},o($Vq5,[2,225]),o($Vq5,[2,226]),{223:[1,1590]},o($Vq5,[2,228]),{223:[1,1591]},{223:[1,1592]},o($Vq5,[2,232]),o($Vq5,[2,233]),{78:[1,1593],205:1480,206:$Va5,208:$Vb5,215:1479,216:1357,221:1360,222:$Vc5,223:$Vd5,224:$Ve5,225:$Vf5,226:$Vg5,227:$Vh5,228:$Vi5,229:$Vj5},o($Vl4,[2,91]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1594,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vl4,[2,92]),o($Vs5,[2,264]),{244:[1,1595]},o($V65,[2,142],{419:190,3:733,114:736,144:758,158:768,160:769,117:1596,2:$V1,4:$V2,5:$V3,72:$VP2,76:$VQ2,77:$VR2,112:$VS2,115:$V$1,116:$V02,118:$VT2,122:$VU2,123:$VV2,124:$VW2,128:$VX2,129:$VY2,130:$VZ2,131:$V_2,132:$V$2,133:$V03,134:$V13,135:$V23,136:$V33,137:$V43,138:$V53,139:$V63,140:$V73,141:$V83,142:$V93,143:$Va3,145:$Vb3,146:$Vc3,148:$Vd3,149:$Ve3,150:$Vf3,152:$Vg3,154:$Vh3,156:$Vi3,162:$Vj3,164:$Vk3,166:$Vl3,168:$Vm3,169:$Vn3,170:$Vo3,171:$Vp3,172:$Vq3,173:$Vr3,175:$Vs3,185:$Vt3,187:$Vu3,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,420:$Vr1,424:$Vs1}),o($Vl4,[2,132]),{74:$Vx3,78:[1,1597]},o($VU4,[2,454],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($VK,[2,572]),o($VD3,[2,534]),o($VD3,[2,546],{366:1525,392:1598,154:$Vt5,187:$Vu5,230:$Vv5,297:$Vw5,343:$Vx5,356:$Vy5,368:$Vz5,369:$VA5,373:$VB5,374:$VC5}),o($Vw3,[2,548]),{370:[1,1599]},{370:[1,1600]},{2:$V1,3:244,4:$V2,5:$V3,199:1601},o($Vw3,[2,554],{77:[1,1602]}),{2:$V1,3:114,4:$V2,5:$V3,77:[1,1604],113:251,131:$VV,132:$VW,143:$VY,152:$V$,156:$VL,181:$V31,196:250,200:1605,201:254,257:252,258:253,265:$VD1,274:1603,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1},o($Vw3,[2,558]),{297:[1,1606]},o($Vw3,[2,560]),o($Vw3,[2,561]),{335:[1,1607]},{77:[1,1608]},{2:$V1,3:1609,4:$V2,5:$V3},{78:[1,1610],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1611],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1612],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{78:[1,1613],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VK,$VW4,{407:1614,76:$VX4}),o($VK,[2,591]),{74:$Vr5,78:[1,1615]},{2:$V1,3:1122,4:$V2,5:$V3,132:$VR1,137:$VS1,143:$VF1,145:$VG1,152:$VT1,431:585,475:1124,478:1616,482:582,493:579,497:581},o($VD3,[2,735]),o($VK,[2,493],{352:1617,354:1618,355:1619,4:$VL5,243:$VM5,343:$VN5,356:$VO5}),o($VP5,$VQ5,{3:1268,359:1624,384:1625,360:1626,361:1627,2:$V1,4:$V2,5:$V3,367:$VR5}),{78:[2,507]},{76:[1,1629]},o($VK,[2,609]),o($VK,[2,1134]),{368:[1,1631],414:[1,1630]},o($VI4,[2,728]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1632,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VK,[2,762]),o($VE5,[2,1182]),o($VK,$V0,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1633,2:$V1,4:$V2,5:$V3,53:$V5,72:$V6,89:$V7,124:$V8,146:$V9,156:$Va,189:$Vb,266:$Vc,267:$Vd,290:$Ve,335:$Vf,338:$Vg,339:$Vh,396:$Vi,400:$Vj,401:$Vk,404:$Vl,406:$Vm,408:$Vn,409:$Vo,417:$Vp,418:$Vq,434:$Vr,436:$Vs,437:$Vt,439:$Vu,440:$Vv,441:$Vw,442:$Vx,443:$Vy,447:$Vz,448:$VA,451:$VB,452:$VC,505:$VD,507:$VE,508:$VF,517:$VG}),o($VE5,[2,1184]),{78:[1,1634]},{78:[1,1635],118:$VF5,278:1636},{78:[1,1637]},{119:[1,1638]},{119:[1,1639]},{78:[1,1640]},{78:[1,1641]},o($VL4,[2,476]),o($VI4,[2,464],{74:$VJ4}),{2:$V1,3:244,4:$V2,5:$V3,143:$VF1,145:$VG1,199:1643,431:1642},o($V75,[2,703]),o($V75,[2,705]),{146:[1,1644]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1645],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},{339:$VS5,462:1646},{417:[1,1649],463:[1,1648]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1650,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VT5,[2,267],{87:1651,245:[1,1652],247:[1,1653]}),{119:[1,1654]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1655,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1661,4:$V2,5:$V3},{2:$V1,3:1662,4:$V2,5:$V3},o($Vn5,[2,207]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1663,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1664,111:1440},o($VJ5,[2,209]),{2:$V1,3:1665,4:$V2,5:$V3},o($VJ5,[2,1097],{220:1666,3:1667,2:$V1,4:$V2,5:$V3}),o($VK5,[2,1096]),o($VJ5,[2,212]),{2:$V1,3:1668,4:$V2,5:$V3},{78:[1,1669]},o($VJ5,[2,217]),{2:$V1,3:1670,4:$V2,5:$V3},o($VJ5,[2,220]),{2:$V1,3:1671,4:$V2,5:$V3},{40:1672,79:75,89:$V7,184:99,189:$Vb},{40:1673,79:75,89:$V7,184:99,189:$Vb},o($Vq5,[2,227]),o($Vq5,[2,229]),o($Vq5,[2,231]),o($Vf4,[2,171]),o($Vs5,[2,262]),o($Vs5,[2,265],{242:[1,1674]}),o($VQ4,[2,1084],{153:1015,179:$Vi4,180:$Vj4,181:$Vk4}),o($Vl4,[2,141]),o($Vw3,[2,547]),o($Vw3,[2,550]),{374:[1,1675]},o($Vw3,[2,1127],{395:1676,393:1677,77:$VX5}),{131:$VV,196:1679},o($Vw3,[2,555]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1680,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vw3,[2,557]),o($Vw3,[2,559]),{2:$V1,3:114,4:$V2,5:$V3,77:[1,1682],113:251,131:$VV,132:$VW,143:$VY,152:$V$,156:$VL,181:$V31,196:250,200:255,201:254,257:252,258:253,265:$VD1,274:1681,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,302:$Vn1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1683,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VK,[2,578]),o($Vz2,[2,349]),o($Vz2,[2,350]),o($Vz2,[2,351]),o($Vz2,[2,352]),o($VK,[2,582]),o($VK,[2,592]),o($VD3,[2,734]),o($VK,[2,489]),o($VK,[2,494],{355:1684,4:$VL5,243:$VM5,343:$VN5,356:$VO5}),o($VY5,[2,496]),o($VY5,[2,497]),{124:[1,1685]},{124:[1,1686]},{124:[1,1687]},{74:[1,1688],78:[2,505]},o($V65,[2,533]),o($V65,[2,508]),{187:[1,1696],193:[1,1697],362:1689,363:1690,364:1691,365:1692,366:1693,368:$Vz5,369:[1,1694],370:[1,1698],373:[1,1695]},{2:$V1,3:1699,4:$V2,5:$V3},{40:1700,79:75,89:$V7,184:99,189:$Vb},{415:[1,1701]},{416:[1,1702]},o($VK,[2,761]),o($VK,[2,763]),o($Vx4,[2,537]),o($VB1,[2,331]),{78:[1,1703]},o($VB1,[2,332]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1704,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1705,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($VB1,[2,317]),o($VB1,[2,319]),{2:$V1,3:1706,4:$V2,5:$V3},o($VK,[2,720],{77:[1,1707]}),{2:$V1,3:1011,4:$V2,5:$V3,111:1065,143:$Vm4,145:$Vn4,147:1708,336:1064,337:1066},{335:$VG5,338:$VH5,461:1709},o($V75,[2,707]),{77:[1,1711],343:[1,1712],344:[1,1710]},{170:[1,1714],309:[1,1713]},{170:[1,1716],309:[1,1715]},{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1717],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vh4,[2,250],{88:1718,162:[1,1719],168:[1,1721],169:[1,1720]}),{131:$VV,196:1722},{131:$VV,196:1723},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1376,111:149,113:153,120:1724,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},o($Vm5,[2,248],{234:1725,74:$VZ5,239:[1,1727]}),o($V_5,[2,242]),{146:[1,1728]},{77:[1,1729]},{77:[1,1730]},o($V_5,[2,247],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{78:[2,1051],96:1731,99:[1,1733],102:1732},{99:[1,1734]},o($Vn5,[2,235],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),o($Vn5,[2,236],{74:$V35}),o($VJ5,[2,210]),o($VJ5,[2,211]),o($VJ5,[2,1098]),o($VJ5,[2,213]),{2:$V1,3:1735,4:$V2,5:$V3,76:[1,1736]},o($VJ5,[2,218]),o($VJ5,[2,221]),{78:[1,1737]},{78:[1,1738]},o($Vs5,[2,266]),{2:$V1,3:244,4:$V2,5:$V3,199:1739},o($Vw3,[2,552]),o($Vw3,[2,1128]),{2:$V1,3:1740,4:$V2,5:$V3},{74:[1,1741]},{78:[1,1742],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vw3,[2,562]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1743,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1744],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($VY5,[2,495]),{2:$V1,3:1745,4:$V2,5:$V3},{131:$VV,196:1746},{2:$V1,3:1747,4:$V2,5:$V3},o($VP5,$VQ5,{361:1627,360:1748,367:$VR5}),o($VD3,[2,510]),o($VD3,[2,511]),o($VD3,[2,512]),o($VD3,[2,513]),o($VD3,[2,514]),{370:[1,1749]},{370:[1,1750]},o($V$5,[2,1121],{382:1751,370:[1,1752]}),{2:$V1,3:1753,4:$V2,5:$V3},{2:$V1,3:1754,4:$V2,5:$V3},o($VP5,[2,516]),o($VK,[2,1131],{411:1755,413:1756,72:$VD5}),o($VK,[2,610]),o($VK,[2,611],{367:[1,1757]}),o($VB1,[2,333]),o([78,118],[2,334],{74:$VZ5}),{74:$Vr5,78:[2,335]},o($VK,[2,719]),{2:$V1,3:1011,4:$V2,5:$V3,100:1758,111:1440},o($V75,[2,706],{74:$VT4}),o($V75,[2,704]),{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1759,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1760,111:1440},{344:[1,1761]},{339:$VS5,462:1762},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1763,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{339:$VS5,462:1764},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1765,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{339:$VS5,462:1766},o($Vh4,[2,72]),{40:1767,79:75,89:$V7,164:[1,1768],184:99,189:$Vb,240:[1,1769]},{40:1770,79:75,89:$V7,184:99,189:$Vb,240:[1,1771]},{40:1772,79:75,89:$V7,184:99,189:$Vb,240:[1,1773]},o($VT5,[2,270],{246:1774,247:[1,1775]}),{248:1776,249:[2,1099],766:[1,1777]},o($VI5,[2,260],{74:$Vr5}),o($Vm5,[2,241]),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,235:1778,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1779,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{77:[1,1780]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1781,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1782,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{78:[1,1783]},{78:[2,1052]},{77:[1,1784]},{77:[1,1785]},o($VJ5,[2,214]),{2:$V1,3:1786,4:$V2,5:$V3},{2:$V1,3:1787,4:$V2,5:$V3,76:[1,1788]},{2:$V1,3:1789,4:$V2,5:$V3,76:[1,1790]},o($Vw3,[2,1125],{394:1791,393:1792,77:$VX5}),{78:[1,1793]},{131:$VV,196:1794},o($Vw3,[2,556]),{78:[1,1795],99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($Vw3,[2,517]),o($VY5,[2,498]),o($VY5,[2,499]),o($VY5,[2,500]),o($V65,[2,509]),{2:$V1,3:1797,4:$V2,5:$V3,77:[2,1117],371:1796},{77:[1,1798]},{2:$V1,3:1800,4:$V2,5:$V3,77:[2,1123],383:1799},o($V$5,[2,1122]),{77:[1,1801]},{77:[1,1802]},o($VK,[2,608]),o($VK,[2,1132]),o($VP5,$VQ5,{361:1627,360:1803,367:$VR5}),{74:$V35,78:[1,1804]},o($V75,[2,713],{74:$VJ4}),{74:$V35,78:[1,1805]},o($V75,[2,715]),o($V75,[2,708]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1806],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($V75,[2,711]),{99:$VZ1,112:$V_1,114:625,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,309:[1,1807],311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,327:637,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2},o($V75,[2,709]),o($Vh4,[2,251]),{40:1808,79:75,89:$V7,184:99,189:$Vb,240:[1,1809]},{40:1810,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,253]),{40:1811,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,254]),{40:1812,79:75,89:$V7,184:99,189:$Vb},o($VT5,[2,268]),{131:$VV,196:1813},{249:[1,1814]},{249:[2,1100]},o($V_5,[2,243]),o($Vm5,[2,249],{114:625,327:637,99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1660,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,233:1815,235:1656,236:$VU5,237:$VV5,238:$VW5,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{74:$VZ5,78:[1,1816]},{74:$VZ5,78:[1,1817]},o($VN4,[2,1053],{97:1818,104:1819,3:1821,2:$V1,4:$V2,5:$V3,76:$V06}),{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1824,103:1822,105:1823,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1011,4:$V2,5:$V3,100:1825,111:1440},o($VJ5,[2,215]),o($Vn5,[2,173]),{2:$V1,3:1826,4:$V2,5:$V3},o($Vn5,[2,175]),{2:$V1,3:1827,4:$V2,5:$V3},o($Vw3,[2,551]),o($Vw3,[2,1126]),o($Vw3,[2,549]),{78:[1,1828]},o($Vw3,[2,563]),{77:[1,1829]},{77:[2,1118]},{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1830},{77:[1,1833]},{77:[2,1124]},{2:$V1,3:1011,4:$V2,5:$V3,100:1834,111:1440},{2:$V1,3:1011,4:$V2,5:$V3,100:1835,111:1440},o($VK,[2,612]),o($VK,[2,721]),{343:[1,1837],344:[1,1836]},{339:$VS5,462:1838},{335:$VG5,338:$VH5,461:1839},o($Vh4,[2,252]),{40:1840,79:75,89:$V7,184:99,189:$Vb},o($Vh4,[2,255]),o($Vh4,[2,257]),o($Vh4,[2,258]),o($VT5,[2,271]),{131:[2,1101],250:1841,645:[1,1842]},{74:$VZ5,78:[1,1843]},o($V_5,[2,245]),o($V_5,[2,246]),o($VN4,[2,74]),o($VN4,[2,1054]),{2:$V1,3:1844,4:$V2,5:$V3},o($VN4,[2,78]),{74:[1,1846],78:[1,1845]},o($V65,[2,80]),o($V65,[2,81],{114:625,327:637,76:[1,1847],99:$VZ1,112:$V_1,115:$V$1,116:$V02,123:$V12,124:$Vz3,133:$V32,136:$V42,138:$V52,139:$V62,140:$V72,141:$V82,142:$V92,154:$Va2,170:$Vb2,171:$Vc2,179:$Vd2,180:$Ve2,311:$Vf2,312:$Vg2,313:$Vh2,315:$Vi2,316:$Vj2,317:$Vk2,318:$Vl2,319:$Vm2,320:$Vn2,321:$Vo2,322:$Vp2,323:$Vq2,324:$Vr2,325:$Vs2,326:$Vt2,330:$Vu2,331:$Vv2,332:$Vw2,333:$Vx2}),{74:$V35,78:[1,1848]},o($Vn5,[2,174]),o($Vn5,[2,176]),o($Vw3,[2,553]),{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1849},{74:$V26,78:[1,1850]},o($V65,[2,528]),o($V65,[2,529]),{2:$V1,3:1011,4:$V2,5:$V3,100:1852,111:1440},{74:$V35,78:[1,1853]},{74:$V35,78:[1,1854]},{77:$Ve4,143:$VY,144:979,145:$VC1,152:$V$,181:$V31,201:980,302:$Vn1,342:1855,419:190,420:$Vr1,424:$Vs1},{344:[1,1856]},o($V75,[2,710]),o($V75,[2,712]),o($Vh4,[2,256]),{131:$VV,196:1857},{131:[2,1102]},o($V_5,[2,244]),o($VN4,[2,77]),{78:[2,76]},{2:$V1,3:168,4:$V2,5:$V3,56:165,77:$VU,94:1824,105:1858,111:149,113:153,131:$VV,132:$VW,137:$VX,143:$VY,144:161,145:$VZ,149:$V_,152:$V$,154:$V01,156:$VL,158:167,179:$V11,180:$V21,181:$V31,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:$V41,266:$Vc,270:$V51,271:$V61,273:$V71,280:$V81,281:$V91,282:$Va1,283:$Vb1,284:$Vc1,285:$Vd1,286:$Ve1,287:$Vf1,288:$Vg1,290:$VM,291:$VN,292:$VO,293:$VP,294:$Vh1,295:$Vi1,296:$Vj1,297:$Vk1,298:$Vl1,299:$Vm1,302:$Vn1,303:$Vo1,312:$Vp1,317:$Vq1,419:190,420:$Vr1,424:$Vs1},{2:$V1,3:1859,4:$V2,5:$V3},{78:[1,1860]},{74:$V26,78:[1,1861]},{374:[1,1862]},{2:$V1,3:1863,4:$V2,5:$V3,132:[1,1864]},{74:$V35,78:[1,1865]},o($VD3,[2,526]),o($VD3,[2,527]),o($V75,[2,714],{74:$VJ4}),o($V75,[2,716]),o($V36,[2,1103],{251:1866,766:[1,1867]}),o($V65,[2,79]),o($V65,[2,82]),o($VN4,[2,1055],{3:1821,101:1868,104:1869,2:$V1,4:$V2,5:$V3,76:$V06}),o($VD3,[2,518]),{2:$V1,3:244,4:$V2,5:$V3,199:1870},o($V65,[2,530]),o($V65,[2,531]),o($VD3,[2,525]),o($VT5,[2,1105],{252:1871,415:[1,1872]}),o($V36,[2,1104]),o($VN4,[2,75]),o($VN4,[2,1056]),o($V46,[2,1119],{375:1873,377:1874,77:[1,1875]}),o($VT5,[2,269]),o($VT5,[2,1106]),o($VD3,[2,521],{376:1876,378:1877,230:[1,1878]}),o($V46,[2,1120]),{2:$V1,3:1831,4:$V2,5:$V3,132:$V16,372:1879},o($VD3,[2,519]),{230:[1,1881],379:1880},{338:[1,1882]},{74:$V26,78:[1,1883]},o($VD3,[2,522]),{335:[1,1884]},{380:[1,1885]},o($V46,[2,520]),{380:[1,1886]},{381:[1,1887]},{381:[1,1888]},{230:[2,523]},o($VD3,[2,524])],
+defaultActions: {105:[2,6],194:[2,336],195:[2,337],196:[2,338],197:[2,339],198:[2,340],199:[2,341],200:[2,342],201:[2,343],202:[2,344],209:[2,695],591:[2,1142],653:[2,1107],654:[2,1108],710:[2,696],780:[2,1073],781:[2,1074],926:[2,446],927:[2,447],928:[2,448],987:[2,697],1288:[2,1152],1375:[2,1060],1433:[2,1150],1541:[2,507],1732:[2,1052],1777:[2,1100],1797:[2,1118],1800:[2,1124],1842:[2,1102],1845:[2,76],1887:[2,523]},
+parseError: function parseError(str, hash) {
+ if (hash.recoverable) {
+ this.trace(str);
+ } else {
+ var error = new Error(str);
+ error.hash = hash;
+ throw error;
+ }
+},
+parse: function parse(input) {
+ var self = this,
+ stack = [0],
+ tstack = [], // token stack
+ vstack = [null], // semantic value stack
+ lstack = [], // location stack
+ table = this.table,
+ yytext = '',
+ yylineno = 0,
+ yyleng = 0,
+ recovering = 0,
+ TERROR = 2,
+ EOF = 1;
+
+ var args = lstack.slice.call(arguments, 1);
+
+ //this.reductionCount = this.shiftCount = 0;
+
+ var lexer = Object.create(this.lexer);
+ var sharedState = { yy: {} };
+ // copy state
+ for (var k in this.yy) {
+ if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+ sharedState.yy[k] = this.yy[k];
+ }
+ }
+
+ lexer.setInput(input, sharedState.yy);
+ sharedState.yy.lexer = lexer;
+ sharedState.yy.parser = this;
+ if (typeof lexer.yylloc == 'undefined') {
+ lexer.yylloc = {};
+ }
+ var yyloc = lexer.yylloc;
+ lstack.push(yyloc);
+
+ var ranges = lexer.options && lexer.options.ranges;
+
+ if (typeof sharedState.yy.parseError === 'function') {
+ this.parseError = sharedState.yy.parseError;
+ } else {
+ this.parseError = Object.getPrototypeOf(this).parseError;
+ }
+
+ function popStack (n) {
+ stack.length = stack.length - 2 * n;
+ vstack.length = vstack.length - n;
+ lstack.length = lstack.length - n;
+ }
+
+_token_stack:
+ var lex = function () {
+ var token;
+ token = lexer.lex() || EOF;
+ // if token isn't its numeric value, convert
+ if (typeof token !== 'number') {
+ token = self.symbols_[token] || token;
+ }
+ return token;
+ }
+
+ var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+ while (true) {
+ // retreive state number from top of stack
+ state = stack[stack.length - 1];
+
+ // use default actions if available
+ if (this.defaultActions[state]) {
+ action = this.defaultActions[state];
+ } else {
+ if (symbol === null || typeof symbol == 'undefined') {
+ symbol = lex();
+ }
+ // read action for current state and first input
+ action = table[state] && table[state][symbol];
+ }
+
+_handle_error:
+ // handle parse error
+ if (typeof action === 'undefined' || !action.length || !action[0]) {
+ var error_rule_depth;
+ var errStr = '';
+
+ // Return the rule stack depth where the nearest error rule can be found.
+ // Return FALSE when no error recovery rule was found.
+ function locateNearestErrorRecoveryRule(state) {
+ var stack_probe = stack.length - 1;
+ var depth = 0;
+
+ // try to recover from error
+ for(;;) {
+ // check for error recovery rule in this state
+ if ((TERROR.toString()) in table[state]) {
+ return depth;
+ }
+ if (state === 0 || stack_probe < 2) {
+ return false; // No suitable error recovery rule available.
+ }
+ stack_probe -= 2; // popStack(1): [symbol, action]
+ state = stack[stack_probe];
+ ++depth;
+ }
+ }
+
+ if (!recovering) {
+ // first see if there's any chance at hitting an error recovery rule:
+ error_rule_depth = locateNearestErrorRecoveryRule(state);
+
+ // Report error
+ expected = [];
+ for (p in table[state]) {
+ if (this.terminals_[p] && p > TERROR) {
+ expected.push("'"+this.terminals_[p]+"'");
+ }
+ }
+ if (lexer.showPosition) {
+ errStr = 'Parse error on line '+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + (this.terminals_[symbol] || symbol)+ "'";
+ } else {
+ errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
+ (symbol == EOF ? "end of input" :
+ ("'"+(this.terminals_[symbol] || symbol)+"'"));
+ }
+ this.parseError(errStr, {
+ text: lexer.match,
+ token: this.terminals_[symbol] || symbol,
+ line: lexer.yylineno,
+ loc: yyloc,
+ expected: expected,
+ recoverable: (error_rule_depth !== false)
+ });
+ } else if (preErrorSymbol !== EOF) {
+ error_rule_depth = locateNearestErrorRecoveryRule(state);
+ }
+
+ // just recovered from another error
+ if (recovering == 3) {
+ if (symbol === EOF || preErrorSymbol === EOF) {
+ throw new Error(errStr || 'Parsing halted while starting to recover from another error.');
+ }
+
+ // discard current lookahead and grab another
+ yyleng = lexer.yyleng;
+ yytext = lexer.yytext;
+ yylineno = lexer.yylineno;
+ yyloc = lexer.yylloc;
+ symbol = lex();
+ }
+
+ // try to recover from error
+ if (error_rule_depth === false) {
+ throw new Error(errStr || 'Parsing halted. No suitable error recovery rule available.');
+ }
+ popStack(error_rule_depth);
+
+ preErrorSymbol = (symbol == TERROR ? null : symbol); // save the lookahead token
+ symbol = TERROR; // insert generic error symbol as new lookahead
+ state = stack[stack.length-1];
+ action = table[state] && table[state][TERROR];
+ recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
+ }
+
+ // this shouldn't happen, unless resolve defaults are off
+ if (action[0] instanceof Array && action.length > 1) {
+ throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
+ }
+
+ switch (action[0]) {
+ case 1: // shift
+ //this.shiftCount++;
+
+ stack.push(symbol);
+ vstack.push(lexer.yytext);
+ lstack.push(lexer.yylloc);
+ stack.push(action[1]); // push state
+ symbol = null;
+ if (!preErrorSymbol) { // normal execution/no error
+ yyleng = lexer.yyleng;
+ yytext = lexer.yytext;
+ yylineno = lexer.yylineno;
+ yyloc = lexer.yylloc;
+ if (recovering > 0) {
+ recovering--;
+ }
+ } else {
+ // error just occurred, resume old lookahead f/ before error
+ symbol = preErrorSymbol;
+ preErrorSymbol = null;
+ }
+ break;
+
+ case 2:
+ // reduce
+ //this.reductionCount++;
+
+ len = this.productions_[action[1]][1];
+
+ // perform semantic action
+ yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
+ // default location, uses first token for firsts, last for lasts
+ yyval._$ = {
+ first_line: lstack[lstack.length-(len||1)].first_line,
+ last_line: lstack[lstack.length-1].last_line,
+ first_column: lstack[lstack.length-(len||1)].first_column,
+ last_column: lstack[lstack.length-1].last_column
+ };
+ if (ranges) {
+ yyval._$.range = [lstack[lstack.length-(len||1)].range[0], lstack[lstack.length-1].range[1]];
+ }
+ r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
+
+ if (typeof r !== 'undefined') {
+ return r;
+ }
+
+ // pop off stack
+ if (len) {
+ stack = stack.slice(0,-1*len*2);
+ vstack = vstack.slice(0, -1*len);
+ lstack = lstack.slice(0, -1*len);
+ }
+
+ stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)
+ vstack.push(yyval.$);
+ lstack.push(yyval._$);
+ // goto new state = table[STATE][NONTERMINAL]
+ newState = table[stack[stack.length-2]][stack[stack.length-1]];
+ stack.push(newState);
+ break;
+
+ case 3:
+ // accept
+ return true;
+ }
+
+ }
+
+ return true;
+}};
+
+// from https://www.postgresql.org/docs/current/static/sql-keywords-appendix.html
+// JSON.stringify([].slice.call(document.querySelectorAll('tr')).filter(x => x.children.length == 5 && x.children[2].innerText == 'reserved').map(x => x.children[0].innerText))
+
+var nonReserved = ["A","ABSENT","ABSOLUTE","ACCORDING","ACTION","ADA","ADD","ADMIN","AFTER","ALWAYS","ASC","ASSERTION","ASSIGNMENT","ATTRIBUTE","ATTRIBUTES","BASE64","BEFORE","BERNOULLI","BLOCKED","BOM","BREADTH","C","CASCADE","CATALOG","CATALOG_NAME","CHAIN","CHARACTERISTICS","CHARACTERS","CHARACTER_SET_CATALOG","CHARACTER_SET_NAME","CHARACTER_SET_SCHEMA","CLASS_ORIGIN","COBOL","COLLATION","COLLATION_CATALOG","COLLATION_NAME","COLLATION_SCHEMA","COLUMNS","COLUMN_NAME","COMMAND_FUNCTION","COMMAND_FUNCTION_CODE","COMMITTED","CONDITION_NUMBER","CONNECTION","CONNECTION_NAME","CONSTRAINTS","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONSTRUCTOR","CONTENT","CONTINUE","CONTROL","CURSOR_NAME","DATA","DATETIME_INTERVAL_CODE","DATETIME_INTERVAL_PRECISION","DB","DEFAULTS","DEFERRABLE","DEFERRED","DEFINED","DEFINER","DEGREE","DEPTH","DERIVED","DESC","DESCRIPTOR","DIAGNOSTICS","DISPATCH","DOCUMENT","DOMAIN","DYNAMIC_FUNCTION","DYNAMIC_FUNCTION_CODE","EMPTY","ENCODING","ENFORCED","EXCLUDE","EXCLUDING","EXPRESSION","FILE","FINAL","FIRST","FLAG","FOLLOWING","FORTRAN","FOUND","FS","G","GENERAL","GENERATED","GO","GOTO","GRANTED","HEX","HIERARCHY","ID","IGNORE","IMMEDIATE","IMMEDIATELY","IMPLEMENTATION","INCLUDING","INCREMENT","INDENT","INITIALLY","INPUT","INSTANCE","INSTANTIABLE","INSTEAD","INTEGRITY","INVOKER","ISOLATION","K","KEY","KEY_MEMBER","KEY_TYPE","LAST","LENGTH","LEVEL","LIBRARY","LIMIT","LINK","LOCATION","LOCATOR","M","MAP","MAPPING","MATCHED","MAXVALUE","MESSAGE_LENGTH","MESSAGE_OCTET_LENGTH","MESSAGE_TEXT","MINVALUE","MORE","MUMPS","NAME","NAMES","NAMESPACE","NESTING","NEXT","NFC","NFD","NFKC","NFKD","NIL","NORMALIZED","NULLABLE","NULLS","NUMBER","OBJECT","OCTETS","OFF","OPTION","OPTIONS","ORDERING","ORDINALITY","OTHERS","OUTPUT","OVERRIDING","P","PAD","PARAMETER_MODE","PARAMETER_NAME","PARAMETER_ORDINAL_POSITION","PARAMETER_SPECIFIC_CATALOG","PARAMETER_SPECIFIC_NAME","PARAMETER_SPECIFIC_SCHEMA","PARTIAL","PASCAL","PASSING","PASSTHROUGH","PATH","PERMISSION","PLACING","PLI","PRECEDING","PRESERVE","PRIOR","PRIVILEGES","PUBLIC","READ","RECOVERY","RELATIVE","REPEATABLE","REQUIRING","RESPECT","RESTART","RESTORE","RESTRICT","RETURNED_CARDINALITY","RETURNED_LENGTH","RETURNED_OCTET_LENGTH","RETURNED_SQLSTATE","RETURNING","ROLE","ROUTINE","ROUTINE_CATALOG","ROUTINE_NAME","ROUTINE_SCHEMA","ROW_COUNT","SCALE","SCHEMA","SCHEMA_NAME","SCOPE_CATALOG","SCOPE_NAME","SCOPE_SCHEMA","SECTION","SECURITY","SELECTIVE","SELF","SEQUENCE","SERIALIZABLE","SERVER","SERVER_NAME","SESSION","SETS","SIMPLE","SIZE","SOURCE","SPACE","SPECIFIC_NAME","STANDALONE","STATE","STATEMENT","STRIP","STRUCTURE","STYLE","SUBCLASS_ORIGIN","T","TABLE_NAME","TEMPORARY","TIES","TOKEN","TOP_LEVEL_COUNT","TRANSACTION","TRANSACTIONS_COMMITTED","TRANSACTIONS_ROLLED_BACK","TRANSACTION_ACTIVE","TRANSFORM","TRANSFORMS","TRIGGER_CATALOG","TRIGGER_NAME","TRIGGER_SCHEMA","TYPE","UNBOUNDED","UNCOMMITTED","UNDER","UNLINK","UNNAMED","UNTYPED","URI","USAGE","USER_DEFINED_TYPE_CATALOG","USER_DEFINED_TYPE_CODE","USER_DEFINED_TYPE_NAME","USER_DEFINED_TYPE_SCHEMA","VALID","VERSION","VIEW","WHITESPACE","WORK","WRAPPER","WRITE","XMLDECLARATION","XMLSCHEMA","YES","ZONE"]
+
+parser.parseError = function(str, hash) {
+ if (hash.expected && hash.expected.indexOf("'LITERAL'") > -1 && /[a-zA-Z_][a-zA-Z_0-9]*/.test(hash.token) && nonReserved.indexOf(hash.token) > -1) {
+ return
+ }
+ throw new SyntaxError(str)
+}
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+ if (this.yy.parser) {
+ this.yy.parser.parseError(str, hash);
+ } else {
+ throw new Error(str);
+ }
+ },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+ this.yy = yy || this.yy || {};
+ this._input = input;
+ this._more = this._backtrack = this.done = false;
+ this.yylineno = this.yyleng = 0;
+ this.yytext = this.matched = this.match = '';
+ this.conditionStack = ['INITIAL'];
+ this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0
+ };
+ if (this.options.ranges) {
+ this.yylloc.range = [0,0];
+ }
+ this.offset = 0;
+ return this;
+ },
+
+// consumes and returns one char from the input
+input:function () {
+ var ch = this._input[0];
+ this.yytext += ch;
+ this.yyleng++;
+ this.offset++;
+ this.match += ch;
+ this.matched += ch;
+ var lines = ch.match(/(?:\r\n?|\n).*/g);
+ if (lines) {
+ this.yylineno++;
+ this.yylloc.last_line++;
+ } else {
+ this.yylloc.last_column++;
+ }
+ if (this.options.ranges) {
+ this.yylloc.range[1]++;
+ }
+
+ this._input = this._input.slice(1);
+ return ch;
+ },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+ var len = ch.length;
+ var lines = ch.split(/(?:\r\n?|\n)/g);
+
+ this._input = ch + this._input;
+ this.yytext = this.yytext.substr(0, this.yytext.length - len);
+ //this.yyleng -= len;
+ this.offset -= len;
+ var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+ this.match = this.match.substr(0, this.match.length - 1);
+ this.matched = this.matched.substr(0, this.matched.length - 1);
+
+ if (lines.length - 1) {
+ this.yylineno -= lines.length - 1;
+ }
+ var r = this.yylloc.range;
+
+ this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: lines ?
+ (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+ + oldLines[oldLines.length - lines.length].length - lines[0].length :
+ this.yylloc.first_column - len
+ };
+
+ if (this.options.ranges) {
+ this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+ }
+ this.yyleng = this.yytext.length;
+ return this;
+ },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+ this._more = true;
+ return this;
+ },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+ if (this.options.backtrack_lexer) {
+ this._backtrack = true;
+ } else {
+ return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+
+ }
+ return this;
+ },
+
+// retain first n characters of the match
+less:function (n) {
+ this.unput(this.match.slice(n));
+ },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+ var past = this.matched.substr(0, this.matched.length - this.match.length);
+ return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+ },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+ var next = this.match;
+ if (next.length < 20) {
+ next += this._input.substr(0, 20-next.length);
+ }
+ return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+ },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+ var pre = this.pastInput();
+ var c = new Array(pre.length + 1).join("-");
+ return pre + this.upcomingInput() + "\n" + c + "^";
+ },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function (match, indexed_rule) {
+ var token,
+ lines,
+ backup;
+
+ if (this.options.backtrack_lexer) {
+ // save context
+ backup = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done
+ };
+ if (this.options.ranges) {
+ backup.yylloc.range = this.yylloc.range.slice(0);
+ }
+ }
+
+ lines = match[0].match(/(?:\r\n?|\n).*/g);
+ if (lines) {
+ this.yylineno += lines.length;
+ }
+ this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: lines ?
+ lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+ this.yylloc.last_column + match[0].length
+ };
+ this.yytext += match[0];
+ this.match += match[0];
+ this.matches = match;
+ this.yyleng = this.yytext.length;
+ if (this.options.ranges) {
+ this.yylloc.range = [this.offset, this.offset += this.yyleng];
+ }
+ this._more = false;
+ this._backtrack = false;
+ this._input = this._input.slice(match[0].length);
+ this.matched += match[0];
+ token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+ if (this.done && this._input) {
+ this.done = false;
+ }
+ if (token) {
+ return token;
+ } else if (this._backtrack) {
+ // recover context
+ for (var k in backup) {
+ this[k] = backup[k];
+ }
+ return false; // rule action called reject() implying the next rule should be tested instead.
+ }
+ return false;
+ },
+
+// return next match in input
+next:function () {
+ if (this.done) {
+ return this.EOF;
+ }
+ if (!this._input) {
+ this.done = true;
+ }
+
+ var token,
+ match,
+ tempMatch,
+ index;
+ if (!this._more) {
+ this.yytext = '';
+ this.match = '';
+ }
+ var rules = this._currentRules();
+ for (var i = 0; i < rules.length; i++) {
+ tempMatch = this._input.match(this.rules[rules[i]]);
+ if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+ match = tempMatch;
+ index = i;
+ if (this.options.backtrack_lexer) {
+ token = this.test_match(tempMatch, rules[i]);
+ if (token !== false) {
+ return token;
+ } else if (this._backtrack) {
+ match = false;
+ continue; // rule action called reject() implying a rule MISmatch.
+ } else {
+ // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+ return false;
+ }
+ } else if (!this.options.flex) {
+ break;
+ }
+ }
+ }
+ if (match) {
+ token = this.test_match(match, rules[index]);
+ if (token !== false) {
+ return token;
+ }
+ // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+ return false;
+ }
+ if (this._input === "") {
+ return this.EOF;
+ } else {
+ return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+ }
+ },
+
+// return next match that has a token
+lex:function lex() {
+ var r = this.next();
+ if (r) {
+ return r;
+ } else {
+ return this.lex();
+ }
+ },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin(condition) {
+ this.conditionStack.push(condition);
+ },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState() {
+ var n = this.conditionStack.length - 1;
+ if (n > 0) {
+ return this.conditionStack.pop();
+ } else {
+ return this.conditionStack[0];
+ }
+ },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules() {
+ if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+ return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+ } else {
+ return this.conditions["INITIAL"].rules;
+ }
+ },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState(n) {
+ n = this.conditionStack.length - 1 - Math.abs(n || 0);
+ if (n >= 0) {
+ return this.conditionStack[n];
+ } else {
+ return "INITIAL";
+ }
+ },
+
+// alias for begin(condition)
+pushState:function pushState(condition) {
+ this.begin(condition);
+ },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+ return this.conditionStack.length;
+ },
+options: {"case-insensitive":true},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0:return 266
+break;
+case 1:return 302
+break;
+case 2:return 420
+break;
+case 3:return 299
+break;
+case 4:return 5
+break;
+case 5:return 5
+break;
+case 6:return 296
+break;
+case 7:return 296
+break;
+case 8:return 132
+break;
+case 9:return 132
+break;
+case 10:return /* its a COMMENT */
+break;
+case 11:/* skip whitespace */
+break;
+case 12:return 316
+break;
+case 13:return 319
+break;
+case 14:yy_.yytext = 'VALUE';return 89
+break;
+case 15:yy_.yytext = 'VALUE';return 189
+break;
+case 16:yy_.yytext = 'ROW';return 189
+break;
+case 17:yy_.yytext = 'COLUMN';return 189
+break;
+case 18:yy_.yytext = 'MATRIX';return 189
+break;
+case 19:yy_.yytext = 'INDEX';return 189
+break;
+case 20:yy_.yytext = 'RECORDSET';return 189
+break;
+case 21:yy_.yytext = 'TEXT';return 189
+break;
+case 22:yy_.yytext = 'SELECT';return 189
+break;
+case 23:return 520
+break;
+case 24:return 381
+break;
+case 25:return 402
+break;
+case 26:return 515
+break;
+case 27:return 287
+break;
+case 28:return 269
+break;
+case 29:return 269
+break;
+case 30:return 164
+break;
+case 31:return 400
+break;
+case 32:return 170
+break;
+case 33:return 229
+break;
+case 34:return 166
+break;
+case 35:return 207
+break;
+case 36:return 288
+break;
+case 37:return 76
+break;
+case 38:return 418
+break;
+case 39:return 242
+break;
+case 40:return 404
+break;
+case 41:return 356
+break;
+case 42:return 284
+break;
+case 43:return 514
+break;
+case 44:return 437
+break;
+case 45:return 330
+break;
+case 46:return 441
+break;
+case 47:return 331
+break;
+case 48:return 315
+break;
+case 49:return 119
+break;
+case 50:return 112
+break;
+case 51:return 315
+break;
+case 52:return 112
+break;
+case 53:return 315
+break;
+case 54:return 112
+break;
+case 55:return 315
+break;
+case 56:return 508
+break;
+case 57:return 303
+break;
+case 58:return 271
+break;
+case 59:return 368
+break;
+case 60:return 130
+break;
+case 61:return 'CLOSE'
+break;
+case 62:return 243
+break;
+case 63:return 190
+break;
+case 64:return 190
+break;
+case 65:return 434
+break;
+case 66:return 367
+break;
+case 67:return 470
+break;
+case 68:return 440
+break;
+case 69:return 273
+break;
+case 70:return 240
+break;
+case 71:return 281
+break;
+case 72:return 267
+break;
+case 73:return 206
+break;
+case 74:return 238
+break;
+case 75:return 265
+break;
+case 76:return 'CURSOR'
+break;
+case 77:return 405
+break;
+case 78:return 291
+break;
+case 79:return 292
+break;
+case 80:return 448
+break;
+case 81:return 343
+break;
+case 82:return 338
+break;
+case 83:return 'DELETED'
+break;
+case 84:return 242
+break;
+case 85:return 406
+break;
+case 86:return 185
+break;
+case 87:return 396
+break;
+case 88:return 447
+break;
+case 89:return 135
+break;
+case 90:return 306
+break;
+case 91:return 389
+break;
+case 92:return 310
+break;
+case 93:return 314
+break;
+case 94:return 169
+break;
+case 95:return 508
+break;
+case 96:return 508
+break;
+case 97:return 298
+break;
+case 98:return 14
+break;
+case 99:return 295
+break;
+case 100:return 249
+break;
+case 101:return 285
+break;
+case 102:return 95
+break;
+case 103:return 373
+break;
+case 104:return 183
+break;
+case 105:return 227
+break;
+case 106:return 268
+break;
+case 107:return 313
+break;
+case 108:return 602
+break;
+case 109:return 472
+break;
+case 110:return 232
+break;
+case 111:return 236
+break;
+case 112:return 239
+break;
+case 113:return 156
+break;
+case 114:return 356
+break;
+case 115:return 332
+break;
+case 116:return 99
+break;
+case 117:return 193
+break;
+case 118:return 212
+break;
+case 119:return 224
+break;
+case 120:return 516
+break;
+case 121:return 339
+break;
+case 122:return 213
+break;
+case 123:return 168
+break;
+case 124:return 293
+break;
+case 125:return 198
+break;
+case 126:return 223
+break;
+case 127:return 370
+break;
+case 128:return 286
+break;
+case 129:return 'LET'
+break;
+case 130:return 225
+break;
+case 131:return 112
+break;
+case 132:return 245
+break;
+case 133:return 460
+break;
+case 134:return 191
+break;
+case 135:return 283
+break;
+case 136:return 390
+break;
+case 137:return 282
+break;
+case 138:return 452
+break;
+case 139:return 169
+break;
+case 140:return 403
+break;
+case 141:return 222
+break;
+case 142:return 645
+break;
+case 143:return 270
+break;
+case 144:return 244
+break;
+case 145:return 380
+break;
+case 146:return 154
+break;
+case 147:return 297
+break;
+case 148:return 433
+break;
+case 149:return 230
+break;
+case 150:return 415
+break;
+case 151:return 129
+break;
+case 152:return 247
+break;
+case 153:return 'OPEN'
+break;
+case 154:return 416
+break;
+case 155:return 171
+break;
+case 156:return 118
+break;
+case 157:return 208
+break;
+case 158:return 276
+break;
+case 159:return 172
+break;
+case 160:return 279
+break;
+case 161:return 765
+break;
+case 162:return 93
+break;
+case 163:return 16
+break;
+case 164:return 369
+break;
+case 165:return 442
+break;
+case 166:return 678
+break;
+case 167:return 15
+break;
+case 168:return 414
+break;
+case 169:return 194
+break;
+case 170:return 'REDUCE'
+break;
+case 171:return 374
+break;
+case 172:return 311
+break;
+case 173:return 517
+break;
+case 174:return 682
+break;
+case 175:return 107
+break;
+case 176:return 401
+break;
+case 177:return 175
+break;
+case 178:return 290
+break;
+case 179:return 443
+break;
+case 180:return 687
+break;
+case 181:return 173
+break;
+case 182:return 173
+break;
+case 183:return 226
+break;
+case 184:return 436
+break;
+case 185:return 237
+break;
+case 186:return 150
+break;
+case 187:return 766
+break;
+case 188:return 405
+break;
+case 189:return 89
+break;
+case 190:return 228
+break;
+case 191:return 146
+break;
+case 192:return 146
+break;
+case 193:return 409
+break;
+case 194:return 334
+break;
+case 195:return 417
+break;
+case 196:return 'STRATEGY'
+break;
+case 197:return 'STORE'
+break;
+case 198:return 280
+break;
+case 199:return 353
+break;
+case 200:return 353
+break;
+case 201:return 463
+break;
+case 202:return 357
+break;
+case 203:return 357
+break;
+case 204:return 192
+break;
+case 205:return 309
+break;
+case 206:return 'TIMEOUT'
+break;
+case 207:return 148
+break;
+case 208:return 195
+break;
+case 209:return 435
+break;
+case 210:return 435
+break;
+case 211:return 509
+break;
+case 212:return 294
+break;
+case 213:return 451
+break;
+case 214:return 162
+break;
+case 215:return 187
+break;
+case 216:return 98
+break;
+case 217:return 335
+break;
+case 218:return 408
+break;
+case 219:return 231
+break;
+case 220:return 149
+break;
+case 221:return 344
+break;
+case 222:return 134
+break;
+case 223:return 410
+break;
+case 224:return 308
+break;
+case 225:return 128
+break;
+case 226:return 439
+break;
+case 227:return 72
+break;
+case 228:return 435 /* Is this keyword required? */
+break;
+case 229:return 131
+break;
+case 230:return 131
+break;
+case 231:return 115
+break;
+case 232:return 137
+break;
+case 233:return 179
+break;
+case 234:return 317
+break;
+case 235:return 180
+break;
+case 236:return 133
+break;
+case 237:return 138
+break;
+case 238:return 326
+break;
+case 239:return 323
+break;
+case 240:return 325
+break;
+case 241:return 322
+break;
+case 242:return 320
+break;
+case 243:return 318
+break;
+case 244:return 319
+break;
+case 245:return 142
+break;
+case 246:return 141
+break;
+case 247:return 139
+break;
+case 248:return 321
+break;
+case 249:return 324
+break;
+case 250:return 140
+break;
+case 251:return 124
+break;
+case 252:return 324
+break;
+case 253:return 77
+break;
+case 254:return 78
+break;
+case 255:return 145
+break;
+case 256:return 424
+break;
+case 257:return 426
+break;
+case 258:return 300
+break;
+case 259:return 505
+break;
+case 260:return 507
+break;
+case 261:return 122
+break;
+case 262:return 116
+break;
+case 263:return 74
+break;
+case 264:return 333
+break;
+case 265:return 152
+break;
+case 266:return 764
+break;
+case 267:return 143
+break;
+case 268:return 181
+break;
+case 269:return 136
+break;
+case 270:return 123
+break;
+case 271:return 312
+break;
+case 272:return 4
+break;
+case 273:return 10
+break;
+case 274:return 'INVALID'
+break;
+}
+},
+rules: [/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:ARRAY\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:\|)/i,/^(?:VALUE\s+OF\s+SEARCH\b)/i,/^(?:VALUE\s+OF\s+SELECT\b)/i,/^(?:ROW\s+OF\s+SELECT\b)/i,/^(?:COLUMN\s+OF\s+SELECT\b)/i,/^(?:MATRIX\s+OF\s+SELECT\b)/i,/^(?:INDEX\s+OF\s+SELECT\b)/i,/^(?:RECORDSET\s+OF\s+SELECT\b)/i,/^(?:TEXT\s+OF\s+SELECT\b)/i,/^(?:SELECT\b)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AFTER\b)/i,/^(?:AGGR\b)/i,/^(?:AGGREGATE\b)/i,/^(?:AGGREGATOR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTO(_)?INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEFORE\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:~~\*)/i,/^(?:!~~\*)/i,/^(?:~~)/i,/^(?:!~~)/i,/^(?:ILIKE\b)/i,/^(?:NOT\s+ILIKE\b)/i,/^(?:CALL\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHECK\b)/i,/^(?:CLASS\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTENT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:CORRESPONDING\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE(S)?)/i,/^(?:DATEADD\b)/i,/^(?:DATEDIFF\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:ECHO\b)/i,/^(?:EDGE\b)/i,/^(?:END\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:ESCAPE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXEC\b)/i,/^(?:EXECUTE\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOR\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:FULL\b)/i,/^(?:FUNCTION\b)/i,/^(?:GLOB\b)/i,/^(?:GO\b)/i,/^(?:GRAPH\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INDEXED\b)/i,/^(?:INNER\b)/i,/^(?:INSTEAD\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTERVAL\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LET\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX(\s+)?(?=\())/i,/^(?:MAX(\s+)?(?=(,|\))))/i,/^(?:MIN(\s+)?(?=\())/i,/^(?:MERGE\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:ONLY\b)/i,/^(?:OF\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OPTION\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PATH\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PIVOT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:READ\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:REGEXP\b)/i,/^(?:REINDEX\b)/i,/^(?:RELATIVE\b)/i,/^(?:REMOVE\b)/i,/^(?:RENAME\b)/i,/^(?:REPEAT\b)/i,/^(?:REPLACE\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RETURN\b)/i,/^(?:RETURNS\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:ROWS\b)/i,/^(?:SCHEMA(S)?)/i,/^(?:SEARCH\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:SOURCE\b)/i,/^(?:STRATEGY\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TEMP\b)/i,/^(?:TEMPORARY\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:THEN\b)/i,/^(?:TIMEOUT\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRIGGER\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UNPIVOT\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE\b)/i,/^(?:VALUES\b)/i,/^(?:VERTEX\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:#)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:&)/i,/^(?:\|)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?::-)/i,/^(?:\?-)/i,/^(?:\.\.)/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:!)/i,/^(?:\^)/i,/^(?:~)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],
+conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+ this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
+exports.parser = alasqlparser;
+exports.Parser = alasqlparser.Parser;
+exports.parse = function () { return alasqlparser.parse.apply(alasqlparser, arguments); };
+exports.main = function commonjsMain(args) {
+ if (!args[1]) {
+ console.log('Usage: '+args[0]+' FILE');
+ process.exit(1);
+ }
+ var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8");
+ return exports.parser.parse(source);
+};
+if (typeof module !== 'undefined' && require.main === module) {
+ exports.main(process.argv.slice(1));
+}
+}
+/**
+ 12prettyflag.js - prettify
+ @todo move this functionality to plugin
+*/
+
+/**
+ Pretty flag - nice HTML output or standard text without any tags
+ @type {boolean}
+*/
+
+alasql.prettyflag = false;
+
+/**
+ Pretty output of SQL functions
+ @function
+ @param {string} sql SQL statement
+ @param {boolean} flag value
+ @return {string} HTML or text string with pretty output
+*/
+
+alasql.pretty = function(sql, flag) {
+ var pf = alasql.prettyflag;
+ alasql.prettyflag = !flag;
+ var s = alasql.parse(sql).toString();
+ alasql.prettyflag = pf;
+ return s;
+};
+
+/*jshint unused:false*/
+/*
+ Utilities for Alasql.js
+
+ @todo Review the list of utilities
+ @todo Find more effective utilities
+*/
+
+/**
+ Alasql utility functions
+ @type {object}
+ */
+var utils = (alasql.utils = {});
+
+/**
+ Convert NaN to undefined
+ @function
+ @param {string} s JavaScript string to be modified
+ @return {string} Covered expression
+
+ @example
+
+ 123 => 123
+ undefined => undefined
+ NaN => undefined
+
+ */
+function n2u(s) {
+ return '(y=' + s + ',y===y?y:undefined)';
+}
+
+/**
+ Return undefined if s undefined
+ @param {string} s JavaScript string to be modified
+ @return {string} Covered expression
+
+ @example
+
+ 123,a => a
+ undefined,a => undefined
+ NaN,a => undefined
+
+ */
+function und(s, r) {
+ return '(y=' + s + ',typeof y=="undefined"?undefined:' + r + ')';
+}
+
+/**
+ Return always true. Stub for non-ecisting WHERE clause, because is faster then if(whenrfn) whenfn()
+ @function
+ @return {boolean} Always true
+ */
+function returnTrue() {
+ return true;
+}
+
+/**
+ Return undefined. Stub for non-ecisting WHERE clause, because is faster then if(whenrfn) whenfn()
+ @function
+ @return {undefined} Always undefined
+ */
+function returnUndefined() {}
+
+/**
+ Escape string
+ @function
+ @param {string} s Source string
+ @return {string} Escaped string
+ @example
+
+ Pit\er's => Pit\\er\'s
+
+ */
+// based on joliss/js-string-escape
+var escapeq = (utils.escapeq = function(s) {
+
+ return ('' + s).replace(/["'\\\n\r\u2028\u2029]/g, function(character) {
+ // Escape all characters not included in SingleStringCharacters and
+ // DoubleStringCharacters on
+ // http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4
+ switch (character) {
+ case '"':
+ case "'":
+ case '\\':
+ return '\\' + character;
+ // Four possible LineTerminator characters need to be escaped:
+ case '\n':
+ return '\\n';
+ case '\r':
+ return '\\r';
+ case '\u2028':
+ return '\\u2028';
+ case '\u2029':
+ return '\\u2029';
+ }
+ });
+});
+
+/**
+ Double quotes for SQL statements
+ @param {string} s Source string
+ @return {string} Escaped string
+
+ @example
+
+ Piter's => Piter''s
+
+ */
+var escapeqq = (utils.undoubleq = function(s) {
+ return s.replace(/(\')/g, "''");
+});
+
+/**
+ Replace double quotes with single quote
+ @param {string} s Source string
+ @return {string} Replaced string
+ @example
+
+ Piter''s => Piter's
+
+ */
+var doubleq = (utils.doubleq = function(s) {
+ return s.replace(/(\'\')/g, "\\'");
+});
+
+/**
+ Replace sigle quote to escaped single quote
+ @param {string} s Source string
+ @return {string} Replaced string
+
+ @todo Chack this functions
+
+ */
+var doubleqq = (utils.doubleqq = function(s) {
+ return s.replace(/\'/g, "'");
+});
+
+/**
+ Cut BOM first character for UTF-8 files (for merging two files)
+ @param {string} s Source string
+ @return {string} Replaced string
+ */
+
+var cutbom = function(s) {
+ if (s[0] === String.fromCharCode(65279)) {
+ s = s.substr(1);
+ }
+ return s;
+};
+
+/**
+ Get the global scope
+ Inspired by System.global
+ @return {object} The global scope
+ */
+utils.global = (function() {
+ if (typeof self !== 'undefined') {
+ return self;
+ }
+ if (typeof window !== 'undefined') {
+ return window;
+ }
+ if (typeof global !== 'undefined') {
+ return global;
+ }
+ return Function('return this')();
+})();
+
+/**
+ Find out if a function is native to the enviroment
+ @param {function} Function to check
+ @return {boolean} True if function is native
+ */
+var isNativeFunction = (utils.isNativeFunction = function(fn) {
+ return typeof fn === 'function' && !!~fn.toString().indexOf('[native code]');
+});
+
+/**
+ Find out if code is running in a web worker enviroment
+ @return {boolean} True if code is running in a web worker enviroment
+ */
+utils.isWebWorker = (function() {
+ try {
+ var importScripts = utils.global.importScripts;
+ return utils.isNativeFunction(importScripts);
+ } catch (e) {
+ return false;
+ }
+})();
+
+/**
+ Find out if code is running in a node enviroment
+ @return {boolean} True if code is running in a node enviroment
+ */
+utils.isNode = (function() {
+ try {
+ return utils.isNativeFunction(utils.global.process.reallyExit);
+ } catch (e) {
+ return false;
+ }
+})();
+
+/**
+ Find out if code is running in a browser enviroment
+ @return {boolean} True if code is running in a browser enviroment
+ */
+utils.isBrowser = (function() {
+ try {
+ return utils.isNativeFunction(utils.global.location.reload);
+ } catch (e) {
+ return false;
+ }
+})();
+
+/**
+ Find out if code is running in a browser with a browserify setup
+ @return {boolean} True if code is running in a browser with a browserify setup
+ */
+utils.isBrowserify = (function() {
+ return utils.isBrowser && typeof process !== 'undefined' && process.browser;
+})();
+
+/**
+ Find out if code is running in a browser with a requireJS setup
+ @return {boolean} True if code is running in a browser with a requireJS setup
+ */
+utils.isRequireJS = (function() {
+ return (
+ utils.isBrowser && typeof require === 'function' && typeof require.specified === 'function'
+ );
+})();
+
+/**
+ Find out if code is running with Meteor in the enviroment
+ @return {boolean} True if code is running with Meteor in the enviroment
+
+ @todo Find out if this is the best way to do this
+ */
+utils.isMeteor = (function() {
+ return typeof Meteor !== 'undefined' && Meteor.release;
+})();
+
+/**
+ Find out if code is running on a Meteor client
+ @return {boolean} True if code is running on a Meteor client
+ */
+utils.isMeteorClient = utils.isMeteorClient = (function() {
+ return utils.isMeteor && Meteor.isClient;
+})();
+
+/**
+ Find out if code is running on a Meteor server
+ @return {boolean} True if code is running on a Meteor server
+ */
+utils.isMeteorServer = (function() {
+ return utils.isMeteor && Meteor.isServer;
+})();
+
+/**
+ Find out code is running in a cordovar enviroment
+ @return {boolean} True if code is running in a web worker enviroment
+
+ @todo Find out if this is the best way to do this
+ */
+utils.isCordova = (function() {
+ return typeof cordova === 'object';
+})();
+
+utils.isReactNative = (function() {
+ var isReact = false;
+ /*not-for-browser/*
+ try {
+ if (typeof require('react-native') === 'object') {
+ isReact = true;
+ }
+ } catch (e) {
+ void 0;
+ }
+ //*/
+ return isReact;
+})();
+
+utils.hasIndexedDB = (function() {
+ return !!utils.global.indexedDB;
+})();
+
+utils.isArray = function(obj) {
+ return '[object Array]' === Object.prototype.toString.call(obj);
+};
+/**
+ Load text file from anywhere
+ @param {string|object} path File path or HTML event
+ @param {boolean} asy True - async call, false - sync call
+ @param {function} success Success function
+ @param {function} error Error function
+ @return {string} Read data
+
+ @todo Define Event type
+ @todo Smaller if-else structures.
+ */
+var loadFile = (utils.loadFile = function(path, asy, success, error) {
+ var data, fs;
+ if (utils.isNode || utils.isMeteorServer) {
+ /*not-for-browser/*
+ fs = require('fs');
+
+ // If path is empty, than read data from stdin (for Node)
+ if (typeof path === 'undefined') {
+ var buff = '';
+ process.stdin.setEncoding('utf8');
+ process.stdin.on('readable', function() {
+ var chunk = process.stdin.read();
+ if (chunk !== null) {
+ buff += chunk.toString();
+ }
+ });
+ process.stdin.on('end', function() {
+ success(cutbom(buff));
+ });
+ } else {
+ if (/^[a-z]+:\/\//i.test(path)) {
+ var request = require('request');
+ request(path, function(err, response, body) {
+ if (err) {
+ return error(err, null);
+ }
+ success(cutbom(body.toString()));
+ });
+ } else {
+ //If async callthen call async
+ if (asy) {
+ fs.readFile(path, function(err, data) {
+ if (err) {
+ return error(err, null);
+ }
+ success(cutbom(data.toString()));
+ });
+ } else {
+ // Call sync version
+ try {
+ data = fs.readFileSync(path);
+ } catch (e) {
+ return error(err, null);
+ }
+ success(cutbom(data.toString()));
+ }
+ }
+ }
+ } else if (utils.isReactNative) {
+ // If ReactNative
+ var RNFS = require('react-native-fs');
+ RNFS.readFile(path, 'utf8')
+ .then(function(contents) {
+ success(cutbom(contents));
+ })["catch"](function(err) {
+ return error(err, null);
+ });
+ //*/
+ } else if (utils.isCordova) {
+ /* If Cordova */
+ utils.global.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
+ fileSystem.root.getFile(path, {create: false}, function(fileEntry) {
+ fileEntry.file(function(file) {
+ var fileReader = new FileReader();
+ fileReader.onloadend = function(e) {
+ success(cutbom(this.result));
+ };
+ fileReader.readAsText(file);
+ });
+ });
+ });
+
+ /** @todo Check eliminated code below */
+
+ } else {
+ /* For string */
+ if (typeof path === 'string') {
+ // For browser read from tag
+ /*
+ SELECT * FROM TXT('#one') -- read data from HTML element with id="one"
+ */
+ if (path.substr(0, 1) === '#' && typeof document !== 'undefined') {
+ data = document.querySelector(path).textContent;
+ success(data);
+ } else {
+ /*
+ Simply read file from HTTP request, like:
+ SELECT * FROM TXT('http://alasql.org/README.md');
+ */
+ var xhr = new XMLHttpRequest();
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState === 4) {
+ if (xhr.status === 200) {
+ if (success) {
+ success(cutbom(xhr.responseText));
+ }
+ } else if (error) {
+ return error(xhr);
+ }
+ // Todo: else...?
+ }
+ };
+ xhr.open('GET', path, asy); // Async
+ xhr.responseType = 'text';
+ xhr.send();
+ }
+ } else if (path instanceof Event) {
+ /*
+ For browser read from files input element
+
+
+ */
+ /** @type {array} List of files from element */
+ var files = path.target.files;
+ /** type {object} */
+ var reader = new FileReader();
+ /** type {string} */
+ var name = files[0].name;
+ reader.onload = function(e) {
+ var data = e.target.result;
+ success(cutbom(data));
+ };
+ reader.readAsText(files[0]);
+ }
+ }
+});
+
+/**
+ @function Load binary file from anywhere
+ @param {string} path File path
+ @param {boolean} asy True - async call, false - sync call
+ @param {function} success Success function
+ @param {function} error Error function
+ @return 1 for Async, data - for sync version
+
+ @todo merge functionality from loadFile and LoadBinaryFile
+ */
+
+var loadBinaryFile = (utils.loadBinaryFile = function(path, asy, success, error) {
+ var fs;
+ if (utils.isNode || utils.isMeteorServer) {
+ /*not-for-browser/*
+ fs = require('fs');
+
+ if (/^[a-z]+:\/\//i.test(path)) {
+ var request = require('request');
+ request({url: path, encoding: null}, function(err, response, data) {
+ if (err) {
+ throw err;
+ }
+ var arr = [];
+ for (var i = 0; i < data.length; ++i) {
+ arr[i] = String.fromCharCode(data[i]);
+ }
+ success(arr.join(''));
+ });
+ } else {
+ if (asy) {
+ fs.readFile(path, function(err, data) {
+ if (err) {
+ throw err;
+ }
+ var arr = [];
+ for (var i = 0; i < data.length; ++i) {
+ arr[i] = String.fromCharCode(data[i]);
+ }
+ success(arr.join(''));
+ });
+ } else {
+ var data = fs.readFileSync(path);
+ var arr = [];
+ for (var i = 0; i < data.length; ++i) {
+ arr[i] = String.fromCharCode(data[i]);
+ }
+ success(arr.join(''));
+ }
+ }
+ } else if (utils.isReactNative) {
+ // If ReactNative
+ //var RNFS = require('react-native-fs');
+ var RNFetchBlob = require('react-native-fetch-blob')["default"];
+ var dirs = RNFetchBlob.fs.dirs;
+ //should use readStream instead if the file is large
+ RNFetchBlob.fs.readFile(path, 'base64').then(function(data) {
+ //RNFetchBlob.base64.decode(data) //need more test on excel
+ success(data);
+ });
+ //*/
+ } else {
+ if (typeof path === 'string') {
+ // For browser
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', path, asy); // Async
+ xhr.responseType = 'arraybuffer';
+ xhr.onload = function() {
+ var data = new Uint8Array(xhr.response);
+ var arr = [];
+ for (var i = 0; i < data.length; ++i) {
+ arr[i] = String.fromCharCode(data[i]);
+ }
+ success(arr.join(''));
+ };
+ // xhr.responseType = "blob";
+ xhr.send();
+ } else if (path instanceof Event) {
+
+ var files = path.target.files;
+ var reader = new FileReader();
+ var name = files[0].name;
+ reader.onload = function(e) {
+ var data = e.target.result;
+ success(data);
+ };
+ reader.readAsArrayBuffer(files[0]);
+ } else if (path instanceof Blob) {
+ success(path);
+ }
+ }
+});
+
+var removeFile = (utils.removeFile = function(path, cb) {
+ if (utils.isNode) {
+ /*not-for-browser/*
+ var fs = require('fs');
+ fs.remove(path, cb);
+ } else if (utils.isCordova) {
+ utils.global.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
+ fileSystem.root.getFile(
+ path,
+ {create: false},
+ function(fileEntry) {
+ fileEntry.remove(cb);
+ cb && cb(); // jshint ignore:line
+ },
+ function() {
+ cb && cb(); // jshint ignore:line
+ }
+ );
+ });
+ } else if (utils.isReactNative) {
+ // If ReactNative
+ var RNFS = require('react-native-fs');
+ RNFS.unlink(path)
+ .then(function() {
+ cb && cb();
+ })["catch"](function(err) {
+ throw err;
+ });
+ //*/
+ } else {
+ throw new Error('You can remove files only in Node.js and Apache Cordova');
+ }
+});
+
+// Todo: check if it makes sense to support cordova and Meteor server
+var deleteFile = (utils.deleteFile = function(path, cb) {
+ /*not-for-browser/*
+ if (utils.isNode) {
+ var fs = require('fs');
+ fs.unlink(path, cb);
+ } else if (utils.isReactNative) {
+ // If ReactNative
+ var RNFS = require('react-native-fs');
+ RNFS.unlink(path)
+ .then(function() {
+ cb && cb();
+ })["catch"](function(err) {
+ throw err;
+ });
+ }
+ //*/
+});
+
+utils.autoExtFilename = function(filename, ext, config) {
+ config = config || {};
+ if (
+ typeof filename !== 'string' ||
+ filename.match(/^[A-z]+:\/\/|\n|\..{2,4}$/) ||
+ config.autoExt === 0 ||
+ config.autoExt === false
+ ) {
+ return filename;
+ }
+ return filename + '.' + ext;
+};
+
+var fileExists = (utils.fileExists = function(path, cb) {
+ if (utils.isNode) {
+ /*not-for-browser/*
+ var fs = require('fs');
+ fs.exists(path, cb);
+ } else if (utils.isCordova) {
+ utils.global.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
+ fileSystem.root.getFile(
+ path,
+ {create: false},
+ function(fileEntry) {
+ cb(true);
+ },
+ function() {
+ cb(false);
+ }
+ );
+ });
+ } else if (utils.isReactNative) {
+ // If ReactNative
+ var RNFS = require('react-native-fs');
+ RNFS.exists(path)
+ .then(function(yes) {
+ cb && cb(yes);
+ })["catch"](function(err) {
+ throw err;
+ });
+ //*/
+ } else {
+ // TODO Cordova, etc.
+ throw new Error('You can use exists() only in Node.js or Apach Cordova');
+ }
+});
+
+/**
+ Save text file from anywhere
+ @param {string} path File path
+ @param {array} data Data object
+ @param {function} cb Callback
+ @param {object=} opts
+ */
+
+var saveFile = (utils.saveFile = function(path, data, cb, opts) {
+ var res = 1;
+ if (path === undefined) {
+ //
+ // Return data into result variable
+ // like: alasql('SELECT * INTO TXT() FROM ?',[data]);
+ //
+ res = data;
+ if (cb) {
+ res = cb(res);
+ }
+ } else {
+ if (utils.isNode) {
+ /*not-for-browser/*
+ var fs = require('fs');
+ data = fs.writeFileSync(path, data);
+ if (cb) {
+ res = cb(res);
+ }
+ } else if (utils.isReactNative) {
+ var RNFS = require('react-native-fs');
+ RNFS.writeFile(path, data)
+ .then(function(success) {
+ //, 'utf8'
+ if (cb) res = cb(res);
+ })["catch"](function(err) {
+ console.error(err.message);
+ });
+ } else if (utils.isCordova) {
+ utils.global.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
+ // alasql.utils.removeFile(path,function(){
+ fileSystem.root.getFile(path, {create: true}, function(fileEntry) {
+ fileEntry.createWriter(function(fileWriter) {
+ fileWriter.onwriteend = function() {
+ if (cb) {
+ res = cb(res);
+ }
+ };
+ fileWriter.write(data);
+ });
+ });
+ });
+ //*/
+
+ // });
+ // });
+ // });
+ } else {
+ if (isIE() === 9) {
+ // Solution was taken from
+ // http://megatuto.com/formation-JAVASCRIPT.php?JAVASCRIPT_Example=Javascript+Save+CSV+file+in+IE+8/IE+9+without+using+window.open()+Categorie+javascript+internet-explorer-8&category=&article=7993
+ // var URI = 'data:text/plain;charset=utf-8,';
+
+ // Prepare data
+ var ndata = data.replace(/\r\n/g, 'A;D;');
+ ndata = ndata.replace(/\n/g, 'D;');
+ ndata = ndata.replace(/\t/g, ' ');
+ var testlink = utils.global.open('about:blank', '_blank');
+ testlink.document.write(ndata); //fileData has contents for the file
+ testlink.document.close();
+ testlink.document.execCommand('SaveAs', false, path);
+ testlink.close();
+ } else {
+ var opt = {
+ disableAutoBom: false,
+ };
+ alasql.utils.extend(opt, opts);
+ var blob = new Blob([data], {type: 'text/plain;charset=utf-8'});
+ saveAs(blob, path, opt.disableAutoBom);
+ if (cb) {
+ res = cb(res);
+ }
+ }
+ }
+ }
+
+ return res;
+});
+
+/**
+ @function Is this IE9
+ @return {boolean} True for IE9 and false for other browsers
+
+ For IE9 compatibility issues
+ */
+function isIE() {
+ var myNav = navigator.userAgent.toLowerCase();
+ return myNav.indexOf('msie') !== -1 ? parseInt(myNav.split('msie')[1]) : false;
+}
+
+/**
+ @function Hash a string to signed integer
+ @param {string} source string
+ @return {integer} hash number
+ */
+
+// FNV-1a inspired hashing
+var hash = (utils.hash = function(str) {
+ var hash = 0x811c9dc5,
+ i = str.length;
+ while (i) {
+ hash ^= str.charCodeAt(--i);
+ hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);
+ }
+ return hash;
+});
+
+/**
+ Union arrays
+ @function
+ @param {array} a
+ @param {array} b
+ @return {array}
+ */
+var arrayUnion = (utils.arrayUnion = function(a, b) {
+ var r = b.slice(0);
+ a.forEach(function(i) {
+ if (r.indexOf(i) < 0) {
+ r.push(i);
+ }
+ });
+ return r;
+});
+
+/**
+ Array Difference
+ */
+var arrayDiff = (utils.arrayDiff = function(a, b) {
+ return a.filter(function(i) {
+ return b.indexOf(i) < 0;
+ });
+});
+
+/**
+ Arrays deep intersect (with records)
+ */
+var arrayIntersect = (utils.arrayIntersect = function(a, b) {
+ var r = [];
+ a.forEach(function(ai) {
+ var found = false;
+
+ b.forEach(function(bi) {
+ found = found || ai === bi;
+ });
+
+ if (found) {
+ r.push(ai);
+ }
+ });
+ return r;
+});
+
+/**
+ Arrays deep union (with records)
+ */
+var arrayUnionDeep = (utils.arrayUnionDeep = function(a, b) {
+ var r = b.slice(0);
+ a.forEach(function(ai) {
+ var found = false;
+
+ r.forEach(function(ri) {
+ // found = found || equalDeep(ai, ri, true);
+ found = found || deepEqual(ai, ri);
+ });
+
+ if (!found) {
+ r.push(ai);
+ }
+ });
+ return r;
+});
+
+/**
+ Arrays deep union (with records)
+ */
+var arrayExceptDeep = (utils.arrayExceptDeep = function(a, b) {
+ var r = [];
+ a.forEach(function(ai) {
+ var found = false;
+
+ b.forEach(function(bi) {
+ // found = found || equalDeep(ai, bi, true);
+ found = found || deepEqual(ai, bi);
+ });
+
+ if (!found) {
+ r.push(ai);
+ }
+ });
+ return r;
+});
+
+/**
+ Arrays deep intersect (with records)
+ */
+var arrayIntersectDeep = (utils.arrayIntersectDeep = function(a, b) {
+ var r = [];
+ a.forEach(function(ai) {
+ var found = false;
+
+ b.forEach(function(bi) {
+ // found = found || equalDeep(ai, bi, true);
+ found = found || deepEqual(ai, bi, true);
+ });
+
+ if (found) {
+ r.push(ai);
+ }
+ });
+ return r;
+});
+
+/**
+ Deep clone objects
+ */
+var cloneDeep = (utils.cloneDeep = function cloneDeep(obj) {
+ if (null === obj || typeof obj !== 'object') {
+ return obj;
+ }
+
+ if (obj instanceof Date) {
+ return new Date(obj);
+ }
+
+ var temp = obj.constructor(); // changed
+
+ for (var key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ temp[key] = cloneDeep(obj[key]);
+ }
+ }
+ return temp;
+});
+
+/**
+ Check equality of objects
+ */
+
+/**
+ Compare two objects in deep
+ */
+var deepEqual = (utils.deepEqual = function(x, y) {
+ if (x === y) {
+ return true;
+ }
+
+ if (typeof x === 'object' && null !== x && (typeof y === 'object' && null !== y)) {
+ if (Object.keys(x).length !== Object.keys(y).length) {
+ return false;
+ }
+ for (var prop in x) {
+ if (!deepEqual(x[prop], y[prop])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ return false;
+});
+/**
+ Array with distinct records
+ @param {array} data
+ @return {array}
+ */
+var distinctArray = (utils.distinctArray = function(data) {
+ var uniq = {};
+ // TODO: Speedup, because Object.keys is slow
+ for (var i = 0, ilen = data.length; i < ilen; i++) {
+ var uix;
+ if (typeof data[i] === 'object') {
+ uix = Object.keys(data[i])
+ .sort()
+ .map(function(k) {
+ return k + '`' + data[i][k];
+ })
+ .join('`');
+ } else {
+ uix = data[i];
+ }
+ uniq[uix] = data[i];
+ }
+ var res = [];
+ for (var key in uniq) {
+ res.push(uniq[key]);
+ }
+ return res;
+});
+
+/**
+ Extend object a with properties of b
+ @function
+ @param {object} a
+ @param {object} b
+ @return {object}
+ */
+var extend = (utils.extend = function extend(a, b) {
+ a = a || {};
+ for (var key in b) {
+ if (b.hasOwnProperty(key)) {
+ a[key] = b[key];
+ }
+ }
+ return a;
+});
+
+/**
+ Flat array by first row
+ */
+var flatArray = (utils.flatArray = function(a) {
+
+ if (!a || 0 === a.length) {
+ return [];
+ }
+
+ // For recordsets
+ if (typeof a === 'object' && a instanceof alasql.Recordset) {
+ return a.data.map(function(ai) {
+ return ai[a.columns[0].columnid];
+ });
+ }
+ // Else for other arrays
+ var key = Object.keys(a[0])[0];
+ if (key === undefined) {
+ return [];
+ }
+ return a.map(function(ai) {
+ return ai[key];
+ });
+});
+
+/**
+ Convert array of objects to array of arrays
+ */
+var arrayOfArrays = (utils.arrayOfArrays = function(a) {
+ return a.map(function(aa) {
+ var ar = [];
+ for (var key in aa) {
+ ar.push(aa[key]);
+ }
+ return ar;
+ });
+});
+
+if (!Array.isArray) {
+ Array.isArray = function(arg) {
+ return Object.prototype.toString.call(arg) === '[object Array]';
+ };
+}
+
+/**
+ Excel:convert number to Excel column, like 1 => 'A'
+ @param {integer} i Column number, starting with 0
+ @return {string} Column name, starting with 'A'
+ */
+
+var xlsnc = (utils.xlsnc = function(i) {
+ var addr = String.fromCharCode(65 + i % 26);
+ if (i >= 26) {
+ i = ((i / 26) | 0) - 1;
+ addr = String.fromCharCode(65 + i % 26) + addr;
+ if (i > 26) {
+ i = ((i / 26) | 0) - 1;
+ addr = String.fromCharCode(65 + i % 26) + addr;
+ }
+ }
+ return addr;
+});
+
+/**
+ Excel:conver Excel column name to number
+ @param {string} s Column number, like 'A' or 'BE'
+ @return {string} Column name, starting with 0
+ */
+var xlscn = (utils.xlscn = function(s) {
+ var n = s.charCodeAt(0) - 65;
+ if (s.length > 1) {
+ n = (n + 1) * 26 + s.charCodeAt(1) - 65;
+
+ if (s.length > 2) {
+ n = (n + 1) * 26 + s.charCodeAt(2) - 65;
+ }
+ }
+ return n;
+});
+
+var domEmptyChildren = (utils.domEmptyChildren = function(container) {
+ var len = container.childNodes.length;
+ while (len--) {
+ container.removeChild(container.lastChild);
+ }
+});
+
+/**
+ SQL LIKE emulation
+ @parameter {string} pattern Search pattern
+ @parameter {string} value Searched value
+ @parameter {string} escape Escape character (optional)
+ @return {boolean} If value LIKE pattern ESCAPE escape
+ */
+
+var like = (utils.like = function(pattern, value, escape) {
+ // Verify escape character
+ if (!escape) escape = '';
+
+ var i = 0;
+ var s = '^';
+
+ while (i < pattern.length) {
+ var c = pattern[i],
+ c1 = '';
+ if (i < pattern.length - 1) c1 = pattern[i + 1];
+
+ if (c === escape) {
+ s += '\\' + c1;
+ i++;
+ } else if (c === '[' && c1 === '^') {
+ s += '[^';
+ i++;
+ } else if (c === '[' || c === ']') {
+ s += c;
+ } else if (c === '%') {
+ s += '.*';
+ } else if (c === '_') {
+ s += '.';
+ } else if ('/.*+?|(){}'.indexOf(c) > -1) {
+ s += '\\' + c;
+ } else {
+ s += c;
+ }
+ i++;
+ }
+
+ s += '$';
+ // if(value == undefined) return false;
+
+ return ('' + (value || '')).toUpperCase().search(RegExp(s.toUpperCase())) > -1;
+});
+
+utils.glob = function(value, pattern) {
+ var i = 0;
+ var s = '^';
+
+ while (i < pattern.length) {
+ var c = pattern[i],
+ c1 = '';
+ if (i < pattern.length - 1) c1 = pattern[i + 1];
+
+ if (c === '[' && c1 === '^') {
+ s += '[^';
+ i++;
+ } else if (c === '[' || c === ']') {
+ s += c;
+ } else if (c === '*') {
+ s += '.*';
+ } else if (c === '?') {
+ s += '.';
+ } else if ('/.*+?|(){}'.indexOf(c) > -1) {
+ s += '\\' + c;
+ } else {
+ s += c;
+ }
+ i++;
+ }
+
+ s += '$';
+ return ('' + (value || '')).toUpperCase().search(RegExp(s.toUpperCase())) > -1;
+};
+
+/**
+ Get path of alasql.js
+ @todo Rewrite and simplify the code. Review, is this function is required separately
+ */
+utils.findAlaSQLPath = function() {
+ /** type {string} Path to alasql library and plugins */
+
+ if (utils.isWebWorker) {
+ return '';
+ /** @todo Check how to get path in worker */
+ } else if (utils.isMeteorClient) {
+ return '/packages/dist/';
+ } else if (utils.isMeteorServer) {
+ return 'assets/packages/dist/';
+ } else if (utils.isNode) {
+ return __dirname;
+ } else if (utils.isBrowser) {
+ var sc = document.getElementsByTagName('script');
+
+ for (var i = 0; i < sc.length; i++) {
+ if (sc[i].src.substr(-16).toLowerCase() === 'alasql-worker.js') {
+ return sc[i].src.substr(0, sc[i].src.length - 16);
+ } else if (sc[i].src.substr(-20).toLowerCase() === 'alasql-worker.min.js') {
+ return sc[i].src.substr(0, sc[i].src.length - 20);
+ } else if (sc[i].src.substr(-9).toLowerCase() === 'alasql.js') {
+ return sc[i].src.substr(0, sc[i].src.length - 9);
+ } else if (sc[i].src.substr(-13).toLowerCase() === 'alasql.min.js') {
+ return sc[i].src.substr(0, sc[i].src.length - 13);
+ }
+ }
+ }
+ return '';
+};
+
+var getXLSX = function() {
+ var XLSX = alasql["private"].externalXlsxLib;
+
+ if (XLSX) {
+ return XLSX;
+ }
+
+ if (utils.isNode || utils.isBrowserify || utils.isMeteorServer) {
+ /*not-for-browser/*
+ XLSX = require('xlsx') || null;
+ //*/
+ } else {
+ XLSX = utils.global.XLSX || null;
+ }
+
+ if (null === XLSX) {
+ throw new Error('Please include the xlsx.js library');
+ }
+
+ return XLSX;
+};
+
+// set AlaSQl path
+alasql.path = alasql.utils.findAlaSQLPath();
+
+/**
+ Strip all comments.
+ @function
+ @param {string} str
+ @return {string}
+ Based om the https://github.com/lehni/uncomment.js/blob/master/uncomment.js
+ I just replaced JavaScript's '//' to SQL's '--' and remove other stuff
+
+ @todo Fixed [aaa/*bbb] for column names
+ @todo Bug if -- comments in the last line
+ @todo Check if it possible to model it with Jison parser
+ @todo Remove unused code
+ */
+
+/* global alasql */
+
+alasql.utils.uncomment = function(str) {
+ // Add some padding so we can always look ahead and behind by two chars
+ str = ('__' + str + '__').split('');
+ var quote = false,
+ quoteSign,
+ // regularExpression = false,
+ // characterClass = false,
+ blockComment = false,
+ lineComment = false;
+ // preserveComment = false;
+
+ for (var i = 0, l = str.length; i < l; i++) {
+
+ // When checking for quote escaping, we also need to check that the
+ // escape sign itself is not escaped, as otherwise '\\' would cause
+ // the wrong impression of an unclosed string:
+ var unescaped = str[i - 1] !== '\\' || str[i - 2] === '\\';
+
+ if (quote) {
+ if (str[i] === quoteSign && unescaped) {
+ quote = false;
+ }
+
+ } else if (blockComment) {
+ // Is the block comment closing?
+ if (str[i] === '*' && str[i + 1] === '/') {
+ // if (!preserveComment)
+ str[i] = str[i + 1] = '';
+ blockComment /* = preserveComment*/ = false;
+ // Increase by 1 to skip closing '/', as it would be mistaken
+ // for a regexp otherwise
+ i++;
+ } else {
+ //if (!preserveComment) {
+ str[i] = '';
+ }
+ } else if (lineComment) {
+ // One-line comments end with the line-break
+ if (str[i + 1] === '\n' || str[i + 1] === '\r') {
+ lineComment = false;
+ }
+ str[i] = '';
+ } else {
+ if (str[i] === '"' || str[i] === "'") {
+ quote = true;
+ quoteSign = str[i];
+ } else if (str[i] === '[' && str[i - 1] !== '@') {
+ quote = true;
+ quoteSign = ']';
+ // } else if (str[i] === '-' && str[i + 1] === '-') {
+ // str[i] = '';
+ // lineComment = true;
+ } else if (str[i] === '/' && str[i + 1] === '*') {
+ // Do not filter out conditional comments /*@ ... */
+ // and comments marked as protected /*! ... */
+ // preserveComment = /[@!]/.test(str[i + 2]);
+ // if (!preserveComment)
+ str[i] = '';
+ blockComment = true;
+
+ }
+ }
+ }
+ // Remove padding again.
+ str = str.join('').slice(2, -2);
+
+ return str;
+};
+
+/**
+ Database class for Alasql.js
+*/
+
+// Initial parameters
+
+/**
+ Jison parser
+*/
+alasql.parser = alasqlparser;
+
+alasql.parser.parseError = function(str, hash) {
+ throw new Error('Have you used a reserved keyword without `escaping` it?\n' + str);
+};
+
+/**
+ Jison parser
+ @param {string} sql SQL statement
+ @return {object} AST (Abstract Syntax Tree)
+
+ @todo Create class AST
+ @todo Add other parsers
+
+ @example
+ alasql.parse = function(sql) {
+ // My own parser here
+ }
+ */
+alasql.parse = function(sql) {
+ return alasqlparser.parse(alasql.utils.uncomment(sql));
+};
+
+/**
+ List of engines of external databases
+ @type {object}
+ @todo Create collection type
+ */
+alasql.engines = {};
+
+/**
+ List of databases
+ @type {object}
+ */
+alasql.databases = {};
+
+/**
+ Number of databases
+ @type {number}
+*/
+alasql.databasenum = 0;
+
+/**
+ Alasql options object
+ */
+alasql.options = {};
+alasql.options.errorlog = false; // Log or throw error
+alasql.options.valueof = false; // Use valueof in orderfn
+alasql.options.dropifnotexists = false; // DROP database in any case
+alasql.options.datetimeformat = 'sql'; // How to handle DATE and DATETIME types
+// Another value is 'javascript'
+alasql.options.casesensitive = true; // Table and column names are case sensitive and converted to lower-case
+alasql.options.logtarget = 'output'; // target for log. Values: 'console', 'output', 'id' of html tag
+alasql.options.logprompt = true; // Print SQL at log
+
+alasql.options.progress = false; // Callback for async queries progress
+
+// Default modifier
+// values: RECORDSET, VALUE, ROW, COLUMN, MATRIX, TEXTSTRING, INDEX
+alasql.options.modifier = undefined;
+// How many rows to lookup to define columns
+alasql.options.columnlookup = 10;
+// Create vertex if not found
+alasql.options.autovertex = true;
+
+// Use dbo as current database (for partial T-SQL comaptibility)
+alasql.options.usedbo = true;
+
+// AUTOCOMMIT ON | OFF
+alasql.options.autocommit = true;
+
+// Use cache
+alasql.options.cache = true;
+
+// Compatibility flags
+alasql.options.tsql = true;
+
+alasql.options.mysql = true;
+
+alasql.options.postgres = true;
+
+alasql.options.oracle = true;
+
+alasql.options.sqlite = true;
+
+alasql.options.orientdb = true;
+
+// for SET NOCOUNT OFF
+alasql.options.nocount = false;
+
+// Check for NaN and convert it to undefined
+alasql.options.nan = false;
+
+alasql.options.joinstar = 'overwrite'; // Option for SELECT * FROM a,b
+
+//alasql.options.worker = false;
+
+// Variables
+alasql.vars = {};
+
+alasql.declares = {};
+
+alasql.prompthistory = [];
+
+alasql.plugins = {}; // If plugin already loaded
+
+alasql.from = {}; // FROM functions
+
+alasql.into = {}; // INTO functions
+
+alasql.fn = {};
+
+alasql.aggr = {};
+
+alasql.busy = 0;
+
+// Cache
+alasql.MAXSQLCACHESIZE = 10000;
+alasql.DEFAULTDATABASEID = 'alasql';
+
+/* WebWorker */
+alasql.lastid = 0;
+
+alasql.buffer = {};
+
+alasql["private"] = {
+ externalXlsxLib: null,
+};
+
+alasql.setXLSX = function(XLSX) {
+ alasql["private"].externalXlsxLib = XLSX;
+};
+
+/**
+ Select current database
+ @param {string} databaseid Selected database identificator
+ */
+alasql.use = function(databaseid) {
+ if (!databaseid) {
+ databaseid = alasql.DEFAULTDATABASEID;
+ }
+ if (alasql.useid === databaseid) {
+ return;
+ }
+ alasql.useid = databaseid;
+ var db = alasql.databases[alasql.useid];
+ alasql.tables = db.tables;
+ // alasql.fn = db.fn;
+ db.resetSqlCache();
+ if (alasql.options.usedbo) {
+ alasql.databases.dbo = db; // Operator???
+ }
+};
+
+alasql.autoval = function(tablename, colname, getNext, databaseid) {
+ var db = databaseid ? alasql.databases[databaseid] : alasql.databases[alasql.useid];
+
+ if (!db.tables[tablename]) {
+ throw new Error('Tablename not found: ' + tablename);
+ }
+
+ if (!db.tables[tablename].identities[colname]) {
+ throw new Error('Colname not found: ' + colname);
+ }
+
+ if (getNext) {
+ return db.tables[tablename].identities[colname].value || null;
+ }
+
+ return (
+ db.tables[tablename].identities[colname].value -
+ db.tables[tablename].identities[colname].step || null
+ );
+};
+
+/**
+ Run single SQL statement on current database
+ */
+alasql.exec = function(sql, params, cb, scope) {
+ // Avoid setting params if not needed even with callback
+ if (typeof params === 'function') {
+ scope = cb;
+ cb = params;
+ params = {};
+ }
+
+ delete alasql.error;
+ params = params || {};
+ if (alasql.options.errorlog) {
+ try {
+ return alasql.dexec(alasql.useid, sql, params, cb, scope);
+ } catch (err) {
+ alasql.error = err;
+ if (cb) {
+ cb(null, alasql.error);
+ }
+ }
+ } else {
+ return alasql.dexec(alasql.useid, sql, params, cb, scope);
+ }
+};
+
+/**
+ Run SQL statement on specific database
+ */
+alasql.dexec = function(databaseid, sql, params, cb, scope) {
+ var db = alasql.databases[databaseid];
+ // if(db.databaseid != databaseid) console.trace('got!');
+
+ var hh;
+ // Create hash
+ if (alasql.options.cache) {
+ hh = hash(sql);
+ var statement = db.sqlCache[hh];
+ // If database structure was not changed since last time return cache
+ if (statement && db.dbversion === statement.dbversion) {
+ return statement(params, cb);
+ }
+ }
+
+ // Create AST
+ var ast = alasql.parse(sql);
+ if (!ast.statements) {
+ return;
+ }
+ if (0 === ast.statements.length) {
+ return 0;
+ } else if (1 === ast.statements.length) {
+ if (ast.statements[0].compile) {
+ // Compile and Execute
+ var statement = ast.statements[0].compile(databaseid, params);
+ if (!statement) {
+ return;
+ }
+ statement.sql = sql;
+ statement.dbversion = db.dbversion;
+
+ if (alasql.options.cache) {
+ // Secure sqlCache size
+ if (db.sqlCacheSize > alasql.MAXSQLCACHESIZE) {
+ db.resetSqlCache();
+ }
+ db.sqlCacheSize++;
+ db.sqlCache[hh] = statement;
+ }
+ var res = (alasql.res = statement(params, cb, scope));
+ return res;
+ } else {
+
+ alasql.precompile(ast.statements[0], alasql.useid, params);
+ var res = (alasql.res = ast.statements[0].execute(databaseid, params, cb, scope));
+ return res;
+ }
+ } else {
+ // Multiple statements
+ if (cb) {
+ alasql.adrun(databaseid, ast, params, cb, scope);
+ } else {
+ return alasql.drun(databaseid, ast, params, cb, scope);
+ }
+ }
+};
+
+/**
+ Run multiple statements and return array of results sync
+ */
+alasql.drun = function(databaseid, ast, params, cb, scope) {
+ var useid = alasql.useid;
+
+ if (useid !== databaseid) {
+ alasql.use(databaseid);
+ }
+
+ var res = [];
+ for (var i = 0, ilen = ast.statements.length; i < ilen; i++) {
+ if (ast.statements[i]) {
+ if (ast.statements[i].compile) {
+ var statement = ast.statements[i].compile(alasql.useid);
+ res.push((alasql.res = statement(params, null, scope)));
+ } else {
+ alasql.precompile(ast.statements[i], alasql.useid, params);
+ res.push((alasql.res = ast.statements[i].execute(alasql.useid, params)));
+ }
+ }
+ }
+ if (useid !== databaseid) {
+ alasql.use(useid);
+ }
+
+ if (cb) {
+ cb(res);
+ }
+
+ alasql.res = res;
+
+ return res;
+};
+
+/**
+ Run multiple statements and return array of results async
+ */
+alasql.adrun = function(databaseid, ast, params, cb, scope) {
+ var idx = 0;
+ var noqueries = ast.statements.length;
+ if (alasql.options.progress !== false) {
+ alasql.options.progress(noqueries, idx++);
+ }
+
+ // alasql.busy++;
+ var useid = alasql.useid;
+ if (useid !== databaseid) {
+ alasql.use(databaseid);
+ }
+ var res = [];
+
+ function adrunone(data) {
+ if (data !== undefined) {
+ res.push(data);
+ }
+ var astatement = ast.statements.shift();
+ if (!astatement) {
+ if (useid !== databaseid) {
+ alasql.use(useid);
+ }
+ cb(res);
+ // alasql.busy--;
+ // if(alasql.busy<0) alasql.busy = 0;
+ } else {
+ if (astatement.compile) {
+ var statement = astatement.compile(alasql.useid);
+ statement(params, adrunone, scope);
+ if (alasql.options.progress !== false) {
+ alasql.options.progress(noqueries, idx++);
+ }
+ } else {
+ alasql.precompile(ast.statements[0], alasql.useid, params);
+ astatement.execute(alasql.useid, params, adrunone);
+ if (alasql.options.progress !== false) {
+ alasql.options.progress(noqueries, idx++);
+ }
+ }
+ }
+ }
+
+ adrunone(); /** @todo Check, why data is empty here */
+};
+
+/**
+ Compile statement to JavaScript function
+ @param {string} sql SQL statement
+ @param {string} databaseid Database identificator
+ @return {functions} Compiled statement functions
+*/
+alasql.compile = function(sql, databaseid) {
+ databaseid = databaseid || alasql.useid;
+
+ var ast = alasql.parse(sql); // Create AST
+
+ if (1 === ast.statements.length) {
+ var statement = ast.statements[0].compile(databaseid);
+ statement.promise = function(params) {
+ return new Promise(function(resolve, reject) {
+ statement(params, function(data, err) {
+ if (err) {
+ reject(err);
+ } else {
+ resolve(data);
+ }
+ });
+ });
+ };
+
+ return statement;
+
+ } else {
+ throw new Error('Cannot compile, because number of statements in SQL is not equal to 1');
+ }
+};
+
+//
+// Promises for AlaSQL
+//
+
+if (!utils.global.Promise) {
+ if (utils.isNode) {
+ /*not-for-browser/*
+ utils.global.Promise = require('es6-promise').Promise;
+ //*/
+ } else {
+ /*!
+ * @overview es6-promise - a tiny implementation of Promises/A+.
+ * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
+ * @license Licensed under MIT license
+ * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE
+ * @version 3.2.1
+ */
+ (function() {
+ 'use strict';
+ function t(t) {
+ return 'function' == typeof t || ('object' == typeof t && null !== t);
+ }
+ function e(t) {
+ return 'function' == typeof t;
+ }
+ function n(t) {
+ G = t;
+ }
+ function r(t) {
+ Q = t;
+ }
+ function o() {
+ return function() {
+ process.nextTick(a);
+ };
+ }
+ function i() {
+ return function() {
+ B(a);
+ };
+ }
+ function s() {
+ var t = 0,
+ e = new X(a),
+ n = document.createTextNode('');
+ return (
+ e.observe(n, {characterData: !0}),
+ function() {
+ n.data = t = ++t % 2;
+ }
+ );
+ }
+ function u() {
+ var t = new MessageChannel();
+ return (
+ (t.port1.onmessage = a),
+ function() {
+ t.port2.postMessage(0);
+ }
+ );
+ }
+ function c() {
+ return function() {
+ setTimeout(a, 1);
+ };
+ }
+ function a() {
+ for (var t = 0; J > t; t += 2) {
+ var e = tt[t],
+ n = tt[t + 1];
+ e(n), (tt[t] = void 0), (tt[t + 1] = void 0);
+ }
+ J = 0;
+ }
+ function f() {
+ try {
+ var t = require,
+ e = t('vertx');
+ return (B = e.runOnLoop || e.runOnContext, i());
+ } catch (n) {
+ return c();
+ }
+ }
+ function l(t, e) {
+ var n = this,
+ r = new this.constructor(p);
+ void 0 === r[rt] && k(r);
+ var o = n._state;
+ if (o) {
+ var i = arguments[o - 1];
+ Q(function() {
+ x(o, r, i, n._result);
+ });
+ } else E(n, r, t, e);
+ return r;
+ }
+ function h(t) {
+ var e = this;
+ if (t && 'object' == typeof t && t.constructor === e) return t;
+ var n = new e(p);
+ return (g(n, t), n);
+ }
+ function p() {}
+ function _() {
+ return new TypeError('You cannot resolve a promise with itself');
+ }
+ function d() {
+ return new TypeError('A promises callback cannot return that same promise.');
+ }
+ function v(t) {
+ try {
+ return t.then;
+ } catch (e) {
+ return (ut.error = e, ut);
+ }
+ }
+ function y(t, e, n, r) {
+ try {
+ t.call(e, n, r);
+ } catch (o) {
+ return o;
+ }
+ }
+ function m(t, e, n) {
+ Q(function(t) {
+ var r = !1,
+ o = y(
+ n,
+ e,
+ function(n) {
+ r || ((r = !0), e !== n ? g(t, n) : S(t, n));
+ },
+ function(e) {
+ r || ((r = !0), j(t, e));
+ },
+ 'Settle: ' + (t._label || ' unknown promise')
+ );
+ !r && o && ((r = !0), j(t, o));
+ }, t);
+ }
+ function b(t, e) {
+ e._state === it
+ ? S(t, e._result)
+ : e._state === st
+ ? j(t, e._result)
+ : E(
+ e,
+ void 0,
+ function(e) {
+ g(t, e);
+ },
+ function(e) {
+ j(t, e);
+ }
+ );
+ }
+ function w(t, n, r) {
+ n.constructor === t.constructor && r === et && constructor.resolve === nt
+ ? b(t, n)
+ : r === ut
+ ? j(t, ut.error)
+ : void 0 === r ? S(t, n) : e(r) ? m(t, n, r) : S(t, n);
+ }
+ function g(e, n) {
+ e === n ? j(e, _()) : t(n) ? w(e, n, v(n)) : S(e, n);
+ }
+ function A(t) {
+ t._onerror && t._onerror(t._result), T(t);
+ }
+ function S(t, e) {
+ t._state === ot &&
+ ((t._result = e), (t._state = it), 0 !== t._subscribers.length && Q(T, t));
+ }
+ function j(t, e) {
+ t._state === ot && ((t._state = st), (t._result = e), Q(A, t));
+ }
+ function E(t, e, n, r) {
+ var o = t._subscribers,
+ i = o.length;
+ (t._onerror = null),
+ (o[i] = e),
+ (o[i + it] = n),
+ (o[i + st] = r),
+ 0 === i && t._state && Q(T, t);
+ }
+ function T(t) {
+ var e = t._subscribers,
+ n = t._state;
+ if (0 !== e.length) {
+ for (var r, o, i = t._result, s = 0; s < e.length; s += 3)
+ (r = e[s]), (o = e[s + n]), r ? x(n, r, o, i) : o(i);
+ t._subscribers.length = 0;
+ }
+ }
+ function M() {
+ this.error = null;
+ }
+ function P(t, e) {
+ try {
+ return t(e);
+ } catch (n) {
+ return (ct.error = n, ct);
+ }
+ }
+ function x(t, n, r, o) {
+ var i,
+ s,
+ u,
+ c,
+ a = e(r);
+ if (a) {
+ if (
+ ((i = P(r, o)),
+ i === ct ? ((c = !0), (s = i.error), (i = null)) : (u = !0),
+ n === i)
+ )
+ return void j(n, d());
+ } else (i = o), (u = !0);
+ n._state !== ot ||
+ (a && u ? g(n, i) : c ? j(n, s) : t === it ? S(n, i) : t === st && j(n, i));
+ }
+ function C(t, e) {
+ try {
+ e(
+ function(e) {
+ g(t, e);
+ },
+ function(e) {
+ j(t, e);
+ }
+ );
+ } catch (n) {
+ j(t, n);
+ }
+ }
+ function O() {
+ return at++;
+ }
+ function k(t) {
+ (t[rt] = at++), (t._state = void 0), (t._result = void 0), (t._subscribers = []);
+ }
+ function Y(t) {
+ return new _t(this, t).promise;
+ }
+ function q(t) {
+ var e = this;
+ return new e(
+ I(t)
+ ? function(n, r) {
+ for (var o = t.length, i = 0; o > i; i++)
+ e.resolve(t[i]).then(n, r);
+ }
+ : function(t, e) {
+ e(new TypeError('You must pass an array to race.'));
+ }
+ );
+ }
+ function F(t) {
+ var e = this,
+ n = new e(p);
+ return (j(n, t), n);
+ }
+ function D() {
+ throw new TypeError(
+ 'You must pass a resolver function as the first argument to the promise constructor'
+ );
+ }
+ function K() {
+ throw new TypeError(
+ "Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."
+ );
+ }
+ function L(t) {
+ (this[rt] = O()),
+ (this._result = this._state = void 0),
+ (this._subscribers = []),
+ p !== t &&
+ ('function' != typeof t && D(), this instanceof L ? C(this, t) : K());
+ }
+ function N(t, e) {
+ (this._instanceConstructor = t),
+ (this.promise = new t(p)),
+ this.promise[rt] || k(this.promise),
+ Array.isArray(e)
+ ? ((this._input = e),
+ (this.length = e.length),
+ (this._remaining = e.length),
+ (this._result = new Array(this.length)),
+ 0 === this.length
+ ? S(this.promise, this._result)
+ : ((this.length = this.length || 0),
+ this._enumerate(),
+ 0 === this._remaining && S(this.promise, this._result)))
+ : j(this.promise, U());
+ }
+ function U() {
+ return new Error('Array Methods must be provided an Array');
+ }
+ function W() {
+ var t;
+ if ('undefined' != typeof global) t = global;
+ else if ('undefined' != typeof self) t = self;
+ else
+ try {
+ t = Function('return this')();
+ } catch (e) {
+ throw new Error(
+ 'polyfill failed because global object is unavailable in this environment'
+ );
+ }
+ var n = t.Promise;
+ (!n ||
+ '[object Promise]' !== Object.prototype.toString.call(n.resolve()) ||
+ n.cast) &&
+ (t.Promise = pt);
+ }
+ var z;
+ z = Array.isArray
+ ? Array.isArray
+ : function(t) {
+ return '[object Array]' === Object.prototype.toString.call(t);
+ };
+ var B,
+ G,
+ H,
+ I = z,
+ J = 0,
+ Q = function(t, e) {
+ (tt[J] = t), (tt[J + 1] = e), (J += 2), 2 === J && (G ? G(a) : H());
+ },
+ R = 'undefined' != typeof window ? window : void 0,
+ V = R || {},
+ X = V.MutationObserver || V.WebKitMutationObserver,
+ Z =
+ 'undefined' == typeof self &&
+ 'undefined' != typeof process &&
+ '[object process]' === {}.toString.call(process),
+ $ =
+ 'undefined' != typeof Uint8ClampedArray &&
+ 'undefined' != typeof importScripts &&
+ 'undefined' != typeof MessageChannel,
+ tt = new Array(1e3);
+ H = Z
+ ? o()
+ : X ? s() : $ ? u() : void 0 === R && 'function' == typeof require ? f() : c();
+ var et = l,
+ nt = h,
+ rt = Math.random()
+ .toString(36)
+ .substring(16),
+ ot = void 0,
+ it = 1,
+ st = 2,
+ ut = new M(),
+ ct = new M(),
+ at = 0,
+ ft = Y,
+ lt = q,
+ ht = F,
+ pt = L;
+ (L.all = ft),
+ (L.race = lt),
+ (L.resolve = nt),
+ (L.reject = ht),
+ (L._setScheduler = n),
+ (L._setAsap = r),
+ (L._asap = Q),
+ (L.prototype = {
+ constructor: L,
+ then: et,
+ "catch": function(t) {
+ return this.then(null, t);
+ },
+ });
+ var _t = N;
+ (N.prototype._enumerate = function() {
+ for (var t = this.length, e = this._input, n = 0; this._state === ot && t > n; n++)
+ this._eachEntry(e[n], n);
+ }),
+ (N.prototype._eachEntry = function(t, e) {
+ var n = this._instanceConstructor,
+ r = n.resolve;
+ if (r === nt) {
+ var o = v(t);
+ if (o === et && t._state !== ot) this._settledAt(t._state, e, t._result);
+ else if ('function' != typeof o) this._remaining--, (this._result[e] = t);
+ else if (n === pt) {
+ var i = new n(p);
+ w(i, t, o), this._willSettleAt(i, e);
+ } else
+ this._willSettleAt(
+ new n(function(e) {
+ e(t);
+ }),
+ e
+ );
+ } else this._willSettleAt(r(t), e);
+ }),
+ (N.prototype._settledAt = function(t, e, n) {
+ var r = this.promise;
+ r._state === ot &&
+ (this._remaining--, t === st ? j(r, n) : (this._result[e] = n)),
+ 0 === this._remaining && S(r, this._result);
+ }),
+ (N.prototype._willSettleAt = function(t, e) {
+ var n = this;
+ E(
+ t,
+ void 0,
+ function(t) {
+ n._settledAt(it, e, t);
+ },
+ function(t) {
+ n._settledAt(st, e, t);
+ }
+ );
+ });
+ var dt = W,
+ vt = {Promise: pt, polyfill: dt};
+ 'function' == typeof define && define.amd
+ ? define(function() {
+ return vt;
+ })
+ : 'undefined' != typeof module && module.exports
+ ? (module.exports = vt)
+ : 'undefined' != typeof this && (this.ES6Promise = vt),
+ dt();
+ }.call(this));
+
+ }
+}
+
+var promiseExec = function(sql, params, counterStep, counterTotal) {
+ return new utils.global.Promise(function(resolve, reject) {
+ alasql(sql, params, function(data, err) {
+ if (err) {
+ reject(err);
+ } else {
+ if (counterStep && counterTotal && alasql.options.progress !== false) {
+ alasql.options.progress(counterStep, counterTotal);
+ }
+ resolve(data);
+ }
+ });
+ });
+};
+
+var promiseAll = function(sqlParamsArray) {
+ if (sqlParamsArray.length < 1) {
+ return;
+ }
+
+ var active, sql, params;
+
+ var execArray = [];
+
+ for (var i = 0; i < sqlParamsArray.length; i++) {
+ active = sqlParamsArray[i];
+
+ if (typeof active === 'string') {
+ active = [active];
+ }
+
+ if (!utils.isArray(active) || active.length < 1 || 2 < active.length) {
+ throw new Error('Error in .promise parameter');
+ }
+
+ sql = active[0];
+ params = active[1] || undefined;
+
+ execArray.push(promiseExec(sql, params, i, sqlParamsArray.length));
+ }
+
+ return utils.global.Promise.all(execArray);
+};
+
+alasql.promise = function(sql, params) {
+ if (typeof Promise === 'undefined') {
+ throw new Error('Please include a Promise/A+ library');
+ }
+
+ if (typeof sql === 'string') {
+ return promiseExec(sql, params);
+ }
+
+ if (!utils.isArray(sql) || sql.length < 1 || typeof params !== 'undefined') {
+ throw new Error('Error in .promise parameters');
+ }
+ return promiseAll(sql);
+};
+
+/*
+//
+// Database class for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// Main Database class
+
+/**
+ @class Database
+ */
+
+var Database = (alasql.Database = function(databaseid) {
+ var self = this;
+
+ // self.prototype = this;
+
+ if (self === alasql) {
+ if (databaseid) {
+ // if(alasql.databases[databaseid]) {
+ self = alasql.databases[databaseid];
+ // } else {
+ alasql.databases[databaseid] = self;
+ // }
+ if (!self) {
+ throw new Error('Database "' + databaseid + '" not found');
+ }
+ } else {
+ // Create new database (or get alasql?)
+ self = alasql.databases.alasql;
+ // For SQL Server examples, USE tempdb
+ if (alasql.options.tsql) {
+ alasql.databases.tempdb = alasql.databases.alasql;
+ }
+ // self = new Database(databaseid); // to call without new
+ }
+ }
+ if (!databaseid) {
+ databaseid = 'db' + alasql.databasenum++; // Random name
+ }
+
+ // Step 1
+ self.databaseid = databaseid;
+ alasql.databases[databaseid] = self;
+ self.dbversion = 0;
+
+ //Steps 2-5
+ self.tables = {};
+ self.views = {};
+ self.triggers = {};
+ self.indices = {};
+
+ // Step 6: Objects storage
+ self.objects = {};
+ self.counter = 0;
+
+ self.resetSqlCache();
+ return self;
+});
+
+/**
+ Reset SQL statements cache
+ */
+
+Database.prototype.resetSqlCache = function() {
+ this.sqlCache = {}; // Cache for compiled SQL statements
+ this.sqlCacheSize = 0;
+};
+
+// Main SQL function
+
+/**
+ Run SQL statement on database
+ @param {string} sql SQL statement
+ @param [object] params Parameters
+ @param {function} cb callback
+ */
+
+Database.prototype.exec = function(sql, params, cb) {
+ return alasql.dexec(this.databaseid, sql, params, cb);
+};
+
+Database.prototype.autoval = function(tablename, colname, getNext) {
+ return alasql.autoval(tablename, colname, getNext, this.databaseid);
+};
+
+// Aliases like MS SQL
+
+/*
+//
+// Transactio class for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+Database.prototype.transaction = function(cb) {
+ var tx = new alasql.Transaction(this.databaseid);
+ var res = cb(tx);
+ return res;
+};
+
+// Transaction class (for WebSQL compatibility)
+
+/**
+ Transaction class
+ @class Transaction
+ */
+
+var Transaction = (alasql.Transaction = function(databaseid) {
+ this.transactionid = Date.now();
+ this.databaseid = databaseid;
+ this.commited = false;
+ this.dbversion = alasql.databases[databaseid].dbversion;
+ // this.bank = cloneDeep(alasql.databases[databaseid]);
+ this.bank = JSON.stringify(alasql.databases[databaseid]);
+ // TODO CLone Tables with insertfns
+
+ return this;
+});
+
+// Main class
+
+// Commit
+
+/**
+ Commit transaction
+ */
+Transaction.prototype.commit = function() {
+ this.commited = true;
+ alasql.databases[this.databaseid].dbversion = Date.now();
+ delete this.bank;
+};
+
+// Rollback
+/**
+ Rollback transaction
+ */
+Transaction.prototype.rollback = function() {
+ if (!this.commited) {
+ alasql.databases[this.databaseid] = JSON.parse(this.bank);
+ // alasql.databases[this.databaseid].tables = this.bank;
+ // alasql.databases[this.databaseid].dbversion = this.dbversion;
+ delete this.bank;
+ } else {
+ throw new Error('Transaction already commited');
+ }
+};
+
+// Transactions stub
+
+/**
+ Execute SQL statement
+ @param {string} sql SQL statement
+ @param {object} params Parameters
+ @param {function} cb Callback function
+ @return result
+ */
+Transaction.prototype.exec = function(sql, params, cb) {
+
+ return alasql.dexec(this.databaseid, sql, params, cb);
+};
+
+Transaction.prototype.executeSQL = Transaction.prototype.exec;
+
+/*
+//
+// Table class for Alasql.js
+// Date: 14.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// Table class
+var Table = (alasql.Table = function(params) {
+ // Step 1: Data array
+ this.data = [];
+
+ // Step 2: Columns
+ this.columns = [];
+ this.xcolumns = {};
+
+ // Step 3: indices
+ this.inddefs = {};
+ this.indices = {};
+ this.uniqs = {};
+ this.uniqdefs = {};
+
+ // Step 4: identities
+ this.identities = {};
+
+ // Step 5: checkfn...
+ this.checks = [];
+ this.checkfns = []; // For restore... to be done...
+
+ // Step 6: INSERT/DELETE/UPDATE
+
+ // Step 7: Triggers...
+ // Create trigger hubs
+ this.beforeinsert = {};
+ this.afterinsert = {};
+ this.insteadofinsert = {};
+
+ this.beforedelete = {};
+ this.afterdelete = {};
+ this.insteadofdelete = {};
+
+ this.beforeupdate = {};
+ this.afterupdate = {};
+ this.insteadofupdate = {};
+
+ // Done
+ extend(this, params);
+});
+
+Table.prototype.indexColumns = function() {
+ var self = this;
+ self.xcolumns = {};
+ self.columns.forEach(function(col) {
+ self.xcolumns[col.columnid] = col;
+ });
+};
+
+/*
+//
+// View class for Alasql.js
+// Date: 14.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// Table class
+var View = (alasql.View = function(params) {
+ // Columns
+ this.columns = [];
+ this.xcolumns = {};
+ // Data array
+ this.query = [];
+
+ extend(this, params);
+});
+
+/*
+//
+// Query class for Alasql.js
+// Date: 14.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// Table class
+
+/**
+ @class Query Main query class
+ */
+var Query = (alasql.Query = function(params) {
+ this.alasql = alasql;
+
+ // Columns
+ this.columns = [];
+ this.xcolumns = {};
+ this.selectGroup = [];
+ this.groupColumns = {};
+ // Data array
+ extend(this, params);
+});
+
+/**
+ @class Recordset data object
+ */
+var Recordset = (alasql.Recordset = function(params) {
+ // Data array
+ extend(this, params);
+});
+
+/*
+//
+// Parser helper for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+var yy = (alasqlparser.yy = alasql.yy = {});
+
+// Utility
+yy.extend = extend;
+// Option for case sensitive
+yy.casesensitive = alasql.options.casesensitive;
+
+// Base class for all yy classes
+var Base = (yy.Base = function(params) {
+ return yy.extend(this, params);
+});
+
+Base.prototype.toString = function() {};
+Base.prototype.toType = function() {};
+Base.prototype.toJS = function() {};
+
+Base.prototype.compile = returnUndefined;
+Base.prototype.exec = function() {};
+
+Base.prototype.compile = returnUndefined;
+Base.prototype.exec = function() {};
+
+/*
+//
+// Statements class for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// Statements container
+yy.Statements = function(params) {
+ return yy.extend(this, params);
+};
+
+yy.Statements.prototype.toString = function() {
+ return this.statements
+ .map(function(st) {
+ return st.toString();
+ })
+ .join('; ');
+};
+
+// Compile array of statements into single statement
+yy.Statements.prototype.compile = function(db) {
+ var statements = this.statements.map(function(st) {
+ return st.compile(db);
+ });
+ if (statements.length === 1) {
+ return statements[0];
+ } else {
+ return function(params, cb) {
+ var res = statements.map(function(st) {
+ return st(params);
+ });
+ if (cb) {
+ cb(res);
+ }
+ return res;
+ };
+ }
+};
+
+/* global alasql */
+/* global yy */
+/*
+//
+// SEARCH for Alasql.js
+// Date: 04.05.2015
+// (c) 2015, Andrey Gershun
+//
+*/
+
+function doSearch(databaseid, params, cb) {
+ var res;
+ var stope = {};
+ var fromdata;
+ var selectors = cloneDeep(this.selectors);
+
+ function processSelector(selectors, sidx, value) {
+ // var val;
+
+ var val, // temp values use many places
+ nest, // temp value used many places
+ r, // temp value used many places
+ sel = selectors[sidx];
+
+ // if(!alasql.srch[sel.srchid]) {
+ // throw new Error('Selector "'+sel.srchid+'" not found');
+ // };
+
+ var SECURITY_BREAK = 100000;
+
+ if (sel.selid) {
+ // TODO Process Selector
+ if (sel.selid === 'PATH') {
+ var queue = [{node: value, stack: []}];
+ var visited = {};
+ //var path = [];
+ var objects = alasql.databases[alasql.useid].objects;
+ while (queue.length > 0) {
+ var q = queue.shift();
+ var node = q.node;
+ var stack = q.stack;
+ var r = processSelector(sel.args, 0, node);
+ if (r.length > 0) {
+ if (sidx + 1 + 1 > selectors.length) {
+ return stack;
+ } else {
+ var rv = [];
+ if (stack && stack.length > 0) {
+ stack.forEach(function(stv) {
+ rv = rv.concat(processSelector(selectors, sidx + 1, stv));
+ });
+ }
+ return rv;
+ // return processSelector(selectors,sidx+1,stack);
+ }
+ } else {
+ if (typeof visited[node.$id] !== 'undefined') {
+ continue;
+ } else {
+
+ visited[node.$id] = true;
+ if (node.$out && node.$out.length > 0) {
+ node.$out.forEach(function(edgeid) {
+ var edge = objects[edgeid];
+ var stack2 = stack.concat(edge);
+ stack2.push(objects[edge.$out[0]]);
+ queue.push({
+ node: objects[edge.$out[0]],
+ stack: stack2,
+ });
+ });
+ }
+ }
+ }
+ }
+ // Else return fail
+ return [];
+ }
+ if (sel.selid === 'NOT') {
+ var nest = processSelector(sel.args, 0, value);
+
+ if (nest.length > 0) {
+ return [];
+ } else {
+ if (sidx + 1 + 1 > selectors.length) {
+ return [value];
+ } else {
+ return processSelector(selectors, sidx + 1, value);
+ }
+ }
+ } else if (sel.selid === 'DISTINCT') {
+ var nest;
+ if (typeof sel.args === 'undefined' || sel.args.length === 0) {
+ nest = distinctArray(value);
+ } else {
+ nest = processSelector(sel.args, 0, value);
+ }
+ if (nest.length === 0) {
+ return [];
+ } else {
+ var res = distinctArray(nest);
+ if (sidx + 1 + 1 > selectors.length) {
+ return res;
+ } else {
+ return processSelector(selectors, sidx + 1, res);
+ }
+ }
+ } else if (sel.selid === 'AND') {
+ var res = true;
+ sel.args.forEach(function(se) {
+ res = res && processSelector(se, 0, value).length > 0;
+ });
+ if (!res) {
+ return [];
+ } else {
+ if (sidx + 1 + 1 > selectors.length) {
+ return [value];
+ } else {
+ return processSelector(selectors, sidx + 1, value);
+ }
+ }
+ } else if (sel.selid === 'OR') {
+ var res = false;
+ sel.args.forEach(function(se) {
+ res = res || processSelector(se, 0, value).length > 0;
+ });
+ if (!res) {
+ return [];
+ } else {
+ if (sidx + 1 + 1 > selectors.length) {
+ return [value];
+ } else {
+ return processSelector(selectors, sidx + 1, value);
+ }
+ }
+ } else if (sel.selid === 'ALL') {
+ var nest = processSelector(sel.args[0], 0, value);
+ if (nest.length === 0) {
+ return [];
+ } else {
+ if (sidx + 1 + 1 > selectors.length) {
+ return nest;
+ } else {
+ return processSelector(selectors, sidx + 1, nest);
+ }
+ }
+ } else if (sel.selid === 'ANY') {
+ var nest = processSelector(sel.args[0], 0, value);
+
+ if (nest.length === 0) {
+ return [];
+ } else {
+ if (sidx + 1 + 1 > selectors.length) {
+ return [nest[0]];
+ } else {
+ return processSelector(selectors, sidx + 1, [nest[0]]);
+ }
+ }
+ } else if (sel.selid === 'UNIONALL') {
+ var nest = [];
+ sel.args.forEach(function(se) {
+ nest = nest.concat(processSelector(se, 0, value));
+ });
+ if (nest.length === 0) {
+ return [];
+ } else {
+ if (sidx + 1 + 1 > selectors.length) {
+ return nest;
+ } else {
+ return processSelector(selectors, sidx + 1, nest);
+ }
+ }
+ } else if (sel.selid === 'UNION') {
+ var nest = [];
+ sel.args.forEach(function(se) {
+ nest = nest.concat(processSelector(se, 0, value));
+ });
+ var nest = distinctArray(nest);
+ if (nest.length === 0) {
+ return [];
+ } else {
+ if (sidx + 1 + 1 > selectors.length) {
+ return nest;
+ } else {
+ return processSelector(selectors, sidx + 1, nest);
+ }
+ }
+ } else if (sel.selid === 'IF') {
+ var nest = processSelector(sel.args, 0, value);
+
+ if (nest.length === 0) {
+ return [];
+ } else {
+ if (sidx + 1 + 1 > selectors.length) {
+ return [value];
+ } else {
+ return processSelector(selectors, sidx + 1, value);
+ }
+ }
+ } else if (sel.selid === 'REPEAT') {
+
+ var lvar,
+ lmax,
+ lmin = sel.args[0].value;
+ if (!sel.args[1]) {
+ lmax = lmin; // Add security break
+ } else {
+ lmax = sel.args[1].value;
+ }
+ if (sel.args[2]) {
+ lvar = sel.args[2].variable;
+ }
+ //var lsel = sel.sels;
+
+ var retval = [];
+
+ if (lmin === 0) {
+ if (sidx + 1 + 1 > selectors.length) {
+ retval = [value];
+ } else {
+ if (lvar) {
+ alasql.vars[lvar] = 0;
+ }
+ retval = retval.concat(processSelector(selectors, sidx + 1, value));
+ }
+ }
+
+ // var nests = processSelector(sel.sels,0,value).slice();
+ if (lmax > 0) {
+ var nests = [{value: value, lvl: 1}];
+
+ var i = 0;
+ while (nests.length > 0) {
+ var nest = nests[0];
+
+ nests.shift();
+ if (nest.lvl <= lmax) {
+ if (lvar) {
+ alasql.vars[lvar] = nest.lvl;
+ }
+
+ var nest1 = processSelector(sel.sels, 0, nest.value);
+
+ nest1.forEach(function(n) {
+ nests.push({value: n, lvl: nest.lvl + 1});
+ });
+ if (nest.lvl >= lmin) {
+ if (sidx + 1 + 1 > selectors.length) {
+ retval = retval.concat(nest1);
+ //return nests;
+ } else {
+ nest1.forEach(function(n) {
+ retval = retval.concat(
+ processSelector(selectors, sidx + 1, n)
+ );
+ });
+ }
+ }
+ }
+ // Security brake
+ i++;
+ if (i > SECURITY_BREAK) {
+ throw new Error('Security brake. Number of iterations = ' + i);
+ }
+ }
+ }
+ return retval;
+ } else if (sel.selid === 'OF') {
+ if (sidx + 1 + 1 > selectors.length) {
+ return [value];
+ } else {
+ var r1 = [];
+ Object.keys(value).forEach(function(keyv) {
+ alasql.vars[sel.args[0].variable] = keyv;
+ r1 = r1.concat(processSelector(selectors, sidx + 1, value[keyv]));
+ });
+ return r1;
+ }
+ } else if (sel.selid === 'TO') {
+
+ var oldv = alasql.vars[sel.args[0]];
+ var newv = [];
+ if (oldv !== undefined) {
+
+ newv = oldv.slice(0);
+
+ } else {
+ newv = [];
+ }
+ newv.push(value);
+
+ if (sidx + 1 + 1 > selectors.length) {
+ return [value];
+ } else {
+ alasql.vars[sel.args[0]] = newv;
+ var r1 = processSelector(selectors, sidx + 1, value);
+
+ alasql.vars[sel.args[0]] = oldv;
+ return r1;
+ }
+
+ } else if (sel.selid === 'ARRAY') {
+ var nest = processSelector(sel.args, 0, value);
+ if (nest.length > 0) {
+ val = nest;
+ } else {
+ return [];
+ }
+ if (sidx + 1 + 1 > selectors.length) {
+ return [val];
+ } else {
+ return processSelector(selectors, sidx + 1, val);
+ }
+ } else if (sel.selid === 'SUM') {
+ var nest = processSelector(sel.args, 0, value);
+ if (nest.length > 0) {
+ var val = nest.reduce(function(sum, current) {
+ return sum + current;
+ }, 0);
+ } else {
+ return [];
+ }
+ if (sidx + 1 + 1 > selectors.length) {
+ return [val];
+ } else {
+ return processSelector(selectors, sidx + 1, val);
+ }
+ } else if (sel.selid === 'AVG') {
+ nest = processSelector(sel.args, 0, value);
+ if (nest.length > 0) {
+ val =
+ nest.reduce(function(sum, current) {
+ return sum + current;
+ }, 0) / nest.length;
+ } else {
+ return [];
+ }
+ if (sidx + 1 + 1 > selectors.length) {
+ return [val];
+ } else {
+ return processSelector(selectors, sidx + 1, val);
+ }
+ } else if (sel.selid === 'COUNT') {
+ nest = processSelector(sel.args, 0, value);
+ if (nest.length > 0) {
+ val = nest.length;
+ } else {
+ return [];
+ }
+ if (sidx + 1 + 1 > selectors.length) {
+ return [val];
+ } else {
+ return processSelector(selectors, sidx + 1, val);
+ }
+ } else if (sel.selid === 'FIRST') {
+ nest = processSelector(sel.args, 0, value);
+ if (nest.length > 0) {
+ val = nest[0];
+ } else {
+ return [];
+ }
+
+ if (sidx + 1 + 1 > selectors.length) {
+ return [val];
+ } else {
+ return processSelector(selectors, sidx + 1, val);
+ }
+ } else if (sel.selid === 'LAST') {
+ nest = processSelector(sel.args, 0, value);
+ if (nest.length > 0) {
+ val = nest[nest.length - 1];
+ } else {
+ return [];
+ }
+
+ if (sidx + 1 + 1 > selectors.length) {
+ return [val];
+ } else {
+ return processSelector(selectors, sidx + 1, val);
+ }
+ } else if (sel.selid === 'MIN') {
+ nest = processSelector(sel.args, 0, value);
+ if (nest.length === 0) {
+ return [];
+ }
+ var val = nest.reduce(function(min, current) {
+ return Math.min(min, current);
+ }, Infinity);
+ if (sidx + 1 + 1 > selectors.length) {
+ return [val];
+ } else {
+ return processSelector(selectors, sidx + 1, val);
+ }
+ } else if (sel.selid === 'MAX') {
+ var nest = processSelector(sel.args, 0, value);
+ if (nest.length === 0) {
+ return [];
+ }
+ var val = nest.reduce(function(max, current) {
+ return Math.max(max, current);
+ }, -Infinity);
+ if (sidx + 1 + 1 > selectors.length) {
+ return [val];
+ } else {
+ return processSelector(selectors, sidx + 1, val);
+ }
+ } else if (sel.selid === 'PLUS') {
+ var retval = [];
+ // retval = retval.concat(processSelector(selectors,sidx+1,n))
+ var nests = processSelector(sel.args, 0, value).slice();
+ if (sidx + 1 + 1 > selectors.length) {
+ retval = retval.concat(nests);
+ } else {
+ nests.forEach(function(n) {
+ retval = retval.concat(processSelector(selectors, sidx + 1, n));
+ });
+ }
+
+ var i = 0;
+ while (nests.length > 0) {
+ // nest = nests[0];
+ // nests.shift();
+ var nest = nests.shift();
+
+ nest = processSelector(sel.args, 0, nest);
+
+ nests = nests.concat(nest);
+
+ if (sidx + 1 + 1 > selectors.length) {
+ retval = retval.concat(nest);
+ //return retval;
+ } else {
+ nest.forEach(function(n) {
+
+ var rn = processSelector(selectors, sidx + 1, n);
+
+ retval = retval.concat(rn);
+ });
+ }
+
+ // Security brake
+ i++;
+ if (i > SECURITY_BREAK) {
+ throw new Error('Security brake. Number of iterations = ' + i);
+ }
+ }
+ return retval;
+
+ } else if (sel.selid === 'STAR') {
+ var retval = [];
+ retval = processSelector(selectors, sidx + 1, value);
+ var nests = processSelector(sel.args, 0, value).slice();
+ if (sidx + 1 + 1 > selectors.length) {
+ retval = retval.concat(nests);
+ //return nests;
+ } else {
+ nests.forEach(function(n) {
+ retval = retval.concat(processSelector(selectors, sidx + 1, n));
+ });
+ }
+ var i = 0;
+ while (nests.length > 0) {
+ var nest = nests[0];
+ nests.shift();
+
+ nest = processSelector(sel.args, 0, nest);
+
+ nests = nests.concat(nest);
+
+ if (sidx + 1 + 1 <= selectors.length) {
+ nest.forEach(function(n) {
+ retval = retval.concat(processSelector(selectors, sidx + 1, n));
+ });
+ }
+
+ // Security brake
+ i++;
+ if (i > SECURITY_BREAK) {
+ throw new Error('Loop brake. Number of iterations = ' + i);
+ }
+ }
+
+ return retval;
+ } else if (sel.selid === 'QUESTION') {
+ var retval = [];
+ retval = retval.concat(processSelector(selectors, sidx + 1, value));
+ var nest = processSelector(sel.args, 0, value);
+ if (sidx + 1 + 1 <= selectors.length) {
+ nest.forEach(function(n) {
+ retval = retval.concat(processSelector(selectors, sidx + 1, n));
+ });
+ }
+ return retval;
+ } else if (sel.selid === 'WITH') {
+ var nest = processSelector(sel.args, 0, value);
+
+ if (nest.length === 0) {
+ return [];
+ } else {
+
+ var r = {status: 1, values: nest};
+ }
+ } else if (sel.selid === 'ROOT') {
+ if (sidx + 1 + 1 > selectors.length) {
+ return [value];
+ } else {
+ return processSelector(selectors, sidx + 1, fromdata);
+ }
+ } else {
+ throw new Error('Wrong selector ' + sel.selid);
+ }
+ } else if (sel.srchid) {
+ var r = alasql.srch[sel.srchid.toUpperCase()](value, sel.args, stope, params);
+
+ } else {
+ throw new Error('Selector not found');
+ }
+
+ if (typeof r === 'undefined') {
+ r = {status: 1, values: [value]};
+ }
+
+ var res = [];
+ if (r.status === 1) {
+ var arr = r.values;
+
+ if (sidx + 1 + 1 > selectors.length) {
+ // if(sidx+1+1 > selectors.length) {
+ res = arr;
+
+ } else {
+ for (var i = 0; i < r.values.length; i++) {
+ res = res.concat(processSelector(selectors, sidx + 1, arr[i]));
+ }
+ }
+ }
+ return res;
+ }
+
+ if (selectors !== undefined && selectors.length > 0) {
+
+ if (
+ selectors &&
+ selectors[0] &&
+ selectors[0].srchid === 'PROP' &&
+ selectors[0].args &&
+ selectors[0].args[0]
+ ) {
+
+ if (selectors[0].args[0].toUpperCase() === 'XML') {
+ stope.mode = 'XML';
+ selectors.shift();
+ } else if (selectors[0].args[0].toUpperCase() === 'HTML') {
+ stope.mode = 'HTML';
+ selectors.shift();
+ } else if (selectors[0].args[0].toUpperCase() === 'JSON') {
+ stope.mode = 'JSON';
+ selectors.shift();
+ }
+ }
+ if (selectors.length > 0 && selectors[0].srchid === 'VALUE') {
+ stope.value = true;
+ selectors.shift();
+ }
+ }
+
+ if (this.from instanceof yy.Column) {
+ var dbid = this.from.databaseid || databaseid;
+ fromdata = alasql.databases[dbid].tables[this.from.columnid].data;
+ //selectors.unshift({srchid:'CHILD'});
+ } else if (this.from instanceof yy.FuncValue && alasql.from[this.from.funcid.toUpperCase()]) {
+ var args = this.from.args.map(function(arg) {
+ var as = arg.toJS();
+
+ var fn = new Function('params,alasql', 'var y;return ' + as).bind(this);
+ return fn(params, alasql);
+ });
+
+ fromdata = alasql.from[this.from.funcid.toUpperCase()].apply(this, args);
+
+ } else if (typeof this.from === 'undefined') {
+ fromdata = alasql.databases[databaseid].objects;
+ } else {
+ var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
+ fromdata = fromfn(params, alasql);
+ // Check for Mogo Collections
+ if (
+ typeof Mongo === 'object' &&
+ typeof Mongo.Collection !== 'object' &&
+ fromdata instanceof Mongo.Collection
+ ) {
+ fromdata = fromdata.find().fetch();
+ }
+
+ // if(typeof fromdata == 'object' && Array.isArray(fromdata)) {
+ // selectors.unshift({srchid:'CHILD'});
+ // }
+ }
+
+ // If source data is array than first step is to run over array
+ // var selidx = 0;
+ // var selvalue = fromdata;
+
+ if (selectors !== undefined && selectors.length > 0) {
+ // Init variables for TO() selectors
+
+ if (false) {
+ selectors.forEach(function(selector) {
+ if (selector.srchid === 'TO') {
+ //* @todo move to TO selector
+ alasql.vars[selector.args[0]] = [];
+ // TODO - process nested selectors
+ }
+ });
+ }
+
+ res = processSelector(selectors, 0, fromdata);
+ } else {
+ res = fromdata;
+ }
+
+ if (this.into) {
+ var a1, a2;
+ if (typeof this.into.args[0] !== 'undefined') {
+ a1 = new Function('params,alasql', 'var y;return ' + this.into.args[0].toJS())(
+ params,
+ alasql
+ );
+ }
+ if (typeof this.into.args[1] !== 'undefined') {
+ a2 = new Function('params,alasql', 'var y;return ' + this.into.args[1].toJS())(
+ params,
+ alasql
+ );
+ }
+ res = alasql.into[this.into.funcid.toUpperCase()](a1, a2, res, [], cb);
+ } else {
+ if (stope.value && res.length > 0) {
+ res = res[0];
+ }
+ if (cb) {
+ res = cb(res);
+ }
+ }
+ return res;
+}
+
+/**
+ Search class
+ @class
+ @example
+ SEARCH SUM(/a) FROM ? -- search over parameter object
+*/
+
+yy.Search = function(params) {
+ return yy.extend(this, params);
+};
+
+yy.Search.prototype.toString = function() {
+ var s = 'SEARCH' + ' ';
+ if (this.selectors) {
+ s += this.selectors.toString();
+ }
+ if (this.from) {
+ s += 'FROM' + ' ' + this.from.toString();
+ }
+
+ return s;
+};
+
+yy.Search.prototype.toJS = function(context) {
+
+ var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
+ // var s = '';
+ return s;
+};
+
+yy.Search.prototype.compile = function(databaseid) {
+ var dbid = databaseid;
+ var self = this;
+
+ var statement = function(params, cb) {
+
+ var res;
+ doSearch.bind(self)(dbid, params, function(data) {
+
+ res = modify(statement.query, data);
+
+ if (cb) {
+ res = cb(res);
+ }
+ });
+
+ // if(cb) res = cb(res);
+ return res;
+ };
+ statement.query = {};
+ return statement;
+};
+
+// List of search functions
+alasql.srch = {};
+
+alasql.srch.PROP = function(val, args, stope) {
+
+ if (stope.mode === 'XML') {
+ var arr = [];
+ val.children.forEach(function(v) {
+ if (v.name.toUpperCase() === args[0].toUpperCase()) {
+ arr.push(v);
+ }
+ });
+ if (arr.length > 0) {
+ return {status: 1, values: arr};
+ } else {
+ return {status: -1, values: []};
+ }
+ } else {
+ if (
+ typeof val !== 'object' ||
+ val === null ||
+ typeof args !== 'object' ||
+ typeof val[args[0]] === 'undefined'
+ ) {
+ return {status: -1, values: []};
+ } else {
+ return {status: 1, values: [val[args[0]]]};
+ }
+ }
+};
+
+alasql.srch.APROP = function(val, args) {
+ if (
+ typeof val !== 'object' ||
+ val === null ||
+ typeof args !== 'object' ||
+ typeof val[args[0]] === 'undefined'
+ ) {
+ return {status: 1, values: [undefined]};
+ } else {
+ return {status: 1, values: [val[args[0]]]};
+ }
+};
+
+// Test expression
+alasql.srch.EQ = function(val, args, stope, params) {
+ var exprs = args[0].toJS('x', '');
+ var exprfn = new Function('x,alasql,params', 'return ' + exprs);
+ if (val === exprfn(val, alasql, params)) {
+ return {status: 1, values: [val]};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+// Test expression
+alasql.srch.LIKE = function(val, args, stope, params) {
+ var exprs = args[0].toJS('x', '');
+ var exprfn = new Function('x,alasql,params', 'return ' + exprs);
+ if (
+ val.toUpperCase().match(
+ new RegExp(
+ '^' +
+ exprfn(val, alasql, params)
+ .toUpperCase()
+ .replace(/%/g, '.*')
+ .replace(/\?|_/g, '.') +
+ '$'
+ ),
+ 'g'
+ )
+ ) {
+ return {status: 1, values: [val]};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+alasql.srch.ATTR = function(val, args, stope) {
+ if (stope.mode === 'XML') {
+ if (typeof args === 'undefined') {
+ return {status: 1, values: [val.attributes]};
+ } else {
+ if (
+ typeof val === 'object' &&
+ typeof val.attributes === 'object' &&
+ typeof val.attributes[args[0]] !== 'undefined'
+ ) {
+ return {status: 1, values: [val.attributes[args[0]]]};
+ } else {
+ return {status: -1, values: []};
+ }
+ }
+ } else {
+ throw new Error('ATTR is not using in usual mode');
+ }
+};
+
+alasql.srch.CONTENT = function(val, args, stope) {
+ if (stope.mode === 'XML') {
+ return {status: 1, values: [val.content]};
+ } else {
+ throw new Error('ATTR is not using in usual mode');
+ }
+};
+
+alasql.srch.SHARP = function(val, args) {
+ var obj = alasql.databases[alasql.useid].objects[args[0]];
+ if (typeof val !== 'undefined' && val === obj) {
+ return {status: 1, values: [val]};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+alasql.srch.PARENT = function(/*val,args,stope*/) {
+ // TODO: implement
+ console.error('PARENT not implemented', arguments);
+
+ return {status: -1, values: []};
+};
+
+alasql.srch.CHILD = function(val, args, stope) {
+
+ if (typeof val === 'object') {
+ if (Array.isArray(val)) {
+ return {status: 1, values: val};
+ } else {
+ if (stope.mode === 'XML') {
+ return {
+ status: 1,
+ values: Object.keys(val.children).map(function(key) {
+ return val.children[key];
+ }),
+ };
+ } else {
+ return {
+ status: 1,
+ values: Object.keys(val).map(function(key) {
+ return val[key];
+ }),
+ };
+ }
+ }
+ } else {
+ // If primitive value
+ return {status: 1, values: []};
+ }
+};
+
+// Return all keys
+alasql.srch.KEYS = function(val) {
+ if (typeof val === 'object' && val !== null) {
+ return {status: 1, values: Object.keys(val)};
+ } else {
+ // If primitive value
+ return {status: 1, values: []};
+ }
+};
+
+// Test expression
+alasql.srch.WHERE = function(val, args, stope, params) {
+ var exprs = args[0].toJS('x', '');
+ var exprfn = new Function('x,alasql,params', 'return ' + exprs);
+ if (exprfn(val, alasql, params)) {
+ return {status: 1, values: [val]};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+alasql.srch.NAME = function(val, args) {
+ if (val.name === args[0]) {
+ return {status: 1, values: [val]};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+alasql.srch.CLASS = function(val, args) {
+
+ // Please avoid `===` here
+ if (val.$class == args) {
+ // jshint ignore:line
+ return {status: 1, values: [val]};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+// Transform expression
+alasql.srch.VERTEX = function(val) {
+ if (val.$node === 'VERTEX') {
+ return {status: 1, values: [val]};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+// Transform expression
+alasql.srch.INSTANCEOF = function(val, args) {
+ if (val instanceof alasql.fn[args[0]]) {
+ return {status: 1, values: [val]};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+// Transform expression
+alasql.srch.EDGE = function(val) {
+ if (val.$node === 'EDGE') {
+ return {status: 1, values: [val]};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+// Transform expression
+alasql.srch.EX = function(val, args, stope, params) {
+ var exprs = args[0].toJS('x', '');
+ var exprfn = new Function('x,alasql,params', 'return ' + exprs);
+ return {status: 1, values: [exprfn(val, alasql, params)]};
+};
+
+// Transform expression
+alasql.srch.RETURN = function(val, args, stope, params) {
+ var res = {};
+ if (args && args.length > 0) {
+ args.forEach(function(arg) {
+ var exprs = arg.toJS('x', '');
+ var exprfn = new Function('x,alasql,params', 'return ' + exprs);
+ if (typeof arg.as === 'undefined') {
+ arg.as = arg.toString();
+ }
+ res[arg.as] = exprfn(val, alasql, params);
+ });
+ }
+ return {status: 1, values: [res]};
+};
+
+// Transform expression
+alasql.srch.REF = function(val) {
+ return {status: 1, values: [alasql.databases[alasql.useid].objects[val]]};
+};
+
+// Transform expression
+alasql.srch.OUT = function(val) {
+ if (val.$out && val.$out.length > 0) {
+ var res = val.$out.map(function(v) {
+ return alasql.databases[alasql.useid].objects[v];
+ });
+ return {status: 1, values: res};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+alasql.srch.OUTOUT = function(val) {
+ if (val.$out && val.$out.length > 0) {
+ var res = [];
+ val.$out.forEach(function(v) {
+ var av = alasql.databases[alasql.useid].objects[v];
+ if (av && av.$out && av.$out.length > 0) {
+ av.$out.forEach(function(vv) {
+ res = res.concat(alasql.databases[alasql.useid].objects[vv]);
+ });
+ }
+ });
+ return {status: 1, values: res};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+// Transform expression
+alasql.srch.IN = function(val) {
+ if (val.$in && val.$in.length > 0) {
+ var res = val.$in.map(function(v) {
+ return alasql.databases[alasql.useid].objects[v];
+ });
+ return {status: 1, values: res};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+alasql.srch.ININ = function(val) {
+ if (val.$in && val.$in.length > 0) {
+ var res = [];
+ val.$in.forEach(function(v) {
+ var av = alasql.databases[alasql.useid].objects[v];
+ if (av && av.$in && av.$in.length > 0) {
+ av.$in.forEach(function(vv) {
+ res = res.concat(alasql.databases[alasql.useid].objects[vv]);
+ });
+ }
+ });
+ return {status: 1, values: res};
+ } else {
+ return {status: -1, values: []};
+ }
+};
+
+// Transform expression
+alasql.srch.AS = function(val, args) {
+ alasql.vars[args[0]] = val;
+ return {status: 1, values: [val]};
+};
+
+// Transform expression
+alasql.srch.AT = function(val, args) {
+ var v = alasql.vars[args[0]];
+ return {status: 1, values: [v]};
+};
+
+// Transform expression
+alasql.srch.CLONEDEEP = function(val) {
+ // TODO something wrong
+ var z = cloneDeep(val);
+ return {status: 1, values: [z]};
+};
+
+// // Transform expression
+// alasql.srch.DELETE = function(val,args) {
+
+// };
+
+// Transform expression
+alasql.srch.SET = function(val, args, stope, params) {
+
+ var s = args
+ .map(function(st) {
+
+ if (st.method === '@') {
+ return "alasql.vars['" + st.variable + "']=" + st.expression.toJS('x', '');
+ } else if (st.method === '$') {
+ return "params['" + st.variable + "']=" + st.expression.toJS('x', '');
+ } else {
+ return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
+ }
+ })
+ .join(';');
+ var setfn = new Function('x,params,alasql', s);
+
+ setfn(val, params, alasql);
+
+ return {status: 1, values: [val]};
+};
+
+alasql.srch.ROW = function(val, args, stope, params) {
+ var s = 'var y;return [';
+
+ s += args
+ .map(function(arg) {
+ return arg.toJS('x', '');
+ })
+ .join(',');
+ s += ']';
+ var setfn = new Function('x,params,alasql', s);
+ var rv = setfn(val, params, alasql);
+
+ return {status: 1, values: [rv]};
+};
+
+alasql.srch.D3 = function(val) {
+ if (val.$node !== 'VERTEX' && val.$node === 'EDGE') {
+ val.source = val.$in[0];
+ val.target = val.$out[0];
+ }
+
+ return {status: 1, values: [val]};
+};
+
+var compileSearchOrder = function(order) {
+ if (order) {
+
+ if (
+ order &&
+ order.length === 1 &&
+ order[0].expression &&
+ typeof order[0].expression === 'function'
+ ) {
+
+ var func = order[0].expression;
+
+ return function(a, b) {
+ var ra = func(a),
+ rb = func(b);
+ if (ra > rb) {
+ return 1;
+ }
+ if (ra === rb) {
+ return 0;
+ }
+ return -1;
+ };
+ }
+
+ var s = '';
+ var sk = '';
+ order.forEach(function(ord) {
+
+ // Date conversion
+ var dg = '';
+
+ if (ord.expression instanceof yy.NumValue) {
+ ord.expression = self.columns[ord.expression.value - 1];
+ }
+
+ if (ord.expression instanceof yy.Column) {
+ var columnid = ord.expression.columnid;
+
+ if (alasql.options.valueof) {
+ dg = '.valueOf()'; // TODO Check
+ }
+ // COLLATE NOCASE
+ if (ord.nocase) {
+ dg += '.toUpperCase()';
+ }
+
+ if (columnid === '_') {
+ s +=
+ 'if(a' +
+ dg +
+ (ord.direction === 'ASC' ? '>' : '<') +
+ 'b' +
+ dg +
+ ')return 1;';
+ s += 'if(a' + dg + '==b' + dg + '){';
+ } else {
+ s +=
+ "if((a['" +
+ columnid +
+ "']||'')" +
+ dg +
+ (ord.direction === 'ASC' ? '>' : '<') +
+ "(b['" +
+ columnid +
+ "']||'')" +
+ dg +
+ ')return 1;';
+ s +=
+ "if((a['" +
+ columnid +
+ "']||'')" +
+ dg +
+ "==(b['" +
+ columnid +
+ "']||'')" +
+ dg +
+ '){';
+ }
+ } else {
+ dg = '.valueOf()';
+ // COLLATE NOCASE
+ if (ord.nocase) {
+ dg += '.toUpperCase()';
+ }
+ s +=
+ 'if((' +
+ ord.toJS('a', '') +
+ "||'')" +
+ dg +
+ (ord.direction === 'ASC' ? '>(' : '<(') +
+ ord.toJS('b', '') +
+ "||'')" +
+ dg +
+ ')return 1;';
+ s +=
+ 'if((' +
+ ord.toJS('a', '') +
+ "||'')" +
+ dg +
+ '==(' +
+ ord.toJS('b', '') +
+ "||'')" +
+ dg +
+ '){';
+ }
+
+ // TODO Add date comparision
+ // s += 'if(a[\''+columnid+"']"+dg+(ord.direction == 'ASC'?'>':'<')+'b[\''+columnid+"']"+dg+')return 1;';
+ // s += 'if(a[\''+columnid+"']"+dg+'==b[\''+columnid+"']"+dg+'){';
+ // }
+ sk += '}';
+ });
+ s += 'return 0;';
+ s += sk + 'return -1';
+
+ return new Function('a,b', s);
+ }
+};
+
+alasql.srch.ORDERBY = function(val, args /*,stope*/) {
+
+ var res = val.sort(compileSearchOrder(args));
+ return {status: 1, values: res};
+};
+
+// Main query procedure
+function queryfn(query, oldscope, cb, A, B) {
+ var aaa = query.sources.length;
+
+ var ms;
+ query.sourceslen = query.sources.length;
+ var slen = query.sourceslen;
+ query.query = query; // TODO Remove to prevent memory leaks
+ query.A = A;
+ query.B = B;
+ query.cb = cb;
+ query.oldscope = oldscope;
+
+ // Run all subqueries before main statement
+ if (query.queriesfn) {
+ query.sourceslen += query.queriesfn.length;
+ slen += query.queriesfn.length;
+
+ query.queriesdata = [];
+
+ query.queriesfn.forEach(function(q, idx) {
+ // if(query.explain) ms = Date.now();
+
+ // var res = flatArray(q(query.params,null,queryfn2,(-idx-1),query));
+
+ // var res = flatArray(queryfn(q.query,null,queryfn2,(-idx-1),query));
+
+ q.query.params = query.params;
+ // query.queriesdata[idx] =
+
+ // if(false) {
+ // queryfn(q.query,query.oldscope,queryfn2,(-idx-1),query);
+ // } else {
+ queryfn2([], -idx - 1, query);
+ // }
+
+ // query.explaination.push({explid: query.explid++, description:'Query '+idx,ms:Date.now()-ms});
+ // query.queriesdata[idx] = res;
+ // return res;
+ });
+
+ }
+
+ var scope;
+ if (!oldscope) scope = {};
+ else scope = cloneDeep(oldscope);
+ query.scope = scope;
+
+ // First - refresh data sources
+
+ var result;
+ query.sources.forEach(function(source, idx) {
+ // source.data = query.database.tables[source.tableid].data;
+
+ source.query = query;
+ var rs = source.datafn(query, query.params, queryfn2, idx, alasql);
+
+ if (typeof rs !== 'undefined') {
+ // TODO - this is a hack: check if result is array - check all cases and
+ // make it more logical
+ if ((query.intofn || query.intoallfn) && Array.isArray(rs)) rs = rs.length;
+ result = rs;
+ }
+ //
+ // Ugly hack to use in query.wherefn and source.srcwherefns functions
+ // constructions like this.queriesdata['test'].
+ // I can elimite it with source.srcwherefn.bind(this)()
+ // but it may be slow.
+ //
+ source.queriesdata = query.queriesdata;
+ });
+ if (query.sources.length == 0 || 0 === slen) result = queryfn3(query);
+
+ return result;
+}
+
+function queryfn2(data, idx, query) {
+
+ //console.trace();
+
+ if (idx >= 0) {
+ var source = query.sources[idx];
+ source.data = data;
+ if (typeof source.data == 'function') {
+ source.getfn = source.data;
+ source.dontcache = source.getfn.dontcache;
+
+ // var prevsource = query.sources[h-1];
+ if (
+ source.joinmode == 'OUTER' ||
+ source.joinmode == 'RIGHT' ||
+ source.joinmode == 'ANTI'
+ ) {
+ source.dontcache = false;
+ }
+ source.data = {};
+ }
+ } else {
+ // subqueries
+
+ query.queriesdata[-idx - 1] = flatArray(data);
+
+ }
+
+ query.sourceslen--;
+ if (query.sourceslen > 0) return;
+
+ return queryfn3(query);
+}
+
+function queryfn3(query) {
+ var scope = query.scope,
+ jlen;
+
+ // Preindexation of data sources
+ // if(!oldscope) {
+ preIndex(query);
+ // }
+
+ // query.sources.forEach(function(source) {
+
+ // });
+
+ // Prepare variables
+ query.data = [];
+ query.xgroups = {};
+ query.groups = [];
+
+ // Level of Joins
+ var h = 0;
+
+ // Start walking over data
+
+ doJoin(query, scope, h);
+
+ // If groupping, then filter groups with HAVING function
+
+ if (query.groupfn) {
+ query.data = [];
+ if (0 === query.groups.length) {
+ var g = {};
+ if (query.selectGroup.length > 0) {
+
+ query.selectGroup.forEach(function(sg) {
+ if (sg.aggregatorid == 'COUNT' || sg.aggregatorid == 'SUM') {
+ g[sg.nick] = 0;
+ } else {
+ g[sg.nick] = undefined;
+ }
+ });
+ }
+ query.groups = [g];
+
+ }
+
+ // ******
+
+ if (query.aggrKeys.length > 0) {
+ var gfns = '';
+ query.aggrKeys.forEach(function(col) {
+ gfns +=
+ "g['" +
+ col.nick +
+ "']=alasql.aggr['" +
+ col.funcid +
+ "'](undefined,g['" +
+ col.nick +
+ "'],3);";
+ // gfns += 'return g[\''+col.nick+'\];';
+ });
+
+ var gfn = new Function('g,params,alasql', 'var y;' + gfns);
+ }
+
+ // return "'"+colas+'\':alasql.aggr[\''+col.funcid+'\']('+colexp+',undefined,(acc={}),1),'
+ // +'\'__REDUCE__'+colas+'\':acc,';
+
+ // *******
+
+ // debugger;
+ // if(false && (query.groups.length == 1) && (Object.keys(query.groups[0]).length == 0)) {
+
+ // } else {
+ for (var i = 0, ilen = query.groups.length; i < ilen; i++) {
+ var g = query.groups[i];
+
+ if (gfn) gfn(g, query.params, alasql);
+
+ if (!query.havingfn || query.havingfn(g, query.params, alasql)) {
+
+ var d = query.selectgfn(g, query.params, alasql);
+ query.data.push(d);
+ }
+ }
+ // }
+
+ // query.groups = query.groups.filter();
+ }
+ // Remove distinct values
+ doDistinct(query);
+
+ // UNION / UNION ALL
+ if (query.unionallfn) {
+ // TODO Simplify this part of program
+ var ud, nd;
+ if (query.corresponding) {
+ if (!query.unionallfn.query.modifier) query.unionallfn.query.modifier = undefined;
+ ud = query.unionallfn(query.params);
+ } else {
+ if (!query.unionallfn.query.modifier) query.unionallfn.query.modifier = 'RECORDSET';
+ nd = query.unionallfn(query.params);
+ ud = [];
+ ilen = nd.data.length;
+ for (var i = 0; i < ilen; i++) {
+ var r = {};
+ for (var j = Math.min(query.columns.length, nd.columns.length) - 1; 0 <= j; j--) {
+ r[query.columns[j].columnid] = nd.data[i][nd.columns[j].columnid];
+ }
+ ud.push(r);
+ }
+ }
+ query.data = query.data.concat(ud);
+ } else if (query.unionfn) {
+ if (query.corresponding) {
+ if (!query.unionfn.query.modifier) query.unionfn.query.modifier = 'ARRAY';
+ ud = query.unionfn(query.params);
+ } else {
+ if (!query.unionfn.query.modifier) query.unionfn.query.modifier = 'RECORDSET';
+ nd = query.unionfn(query.params);
+ ud = [];
+ ilen = nd.data.length;
+ for (var i = 0; i < ilen; i++) {
+ r = {};
+ jlen = Math.min(query.columns.length, nd.columns.length);
+ for (var j = 0; j < jlen; j++) {
+ r[query.columns[j].columnid] = nd.data[i][nd.columns[j].columnid];
+ }
+ ud.push(r);
+ }
+ }
+
+ query.data = arrayUnionDeep(query.data, ud);
+ } else if (query.exceptfn) {
+ if (query.corresponding) {
+ if (!query.exceptfn.query.modifier) query.exceptfn.query.modifier = 'ARRAY';
+ var ud = query.exceptfn(query.params);
+ } else {
+ if (!query.exceptfn.query.modifier) query.exceptfn.query.modifier = 'RECORDSET';
+ var nd = query.exceptfn(query.params);
+ var ud = [];
+ for (var i = 0, ilen = nd.data.length; i < ilen; i++) {
+ var r = {};
+ for (var j = Math.min(query.columns.length, nd.columns.length) - 1; 0 <= j; j--) {
+ r[query.columns[j].columnid] = nd.data[i][nd.columns[j].columnid];
+ }
+ ud.push(r);
+ }
+ }
+
+ query.data = arrayExceptDeep(query.data, ud);
+ } else if (query.intersectfn) {
+ if (query.corresponding) {
+ if (!query.intersectfn.query.modifier) query.intersectfn.query.modifier = undefined;
+ ud = query.intersectfn(query.params);
+ } else {
+ if (!query.intersectfn.query.modifier) query.intersectfn.query.modifier = 'RECORDSET';
+ nd = query.intersectfn(query.params);
+ ud = [];
+ ilen = nd.data.length;
+ for (i = 0; i < ilen; i++) {
+ r = {};
+ jlen = Math.min(query.columns.length, nd.columns.length);
+ for (j = 0; j < jlen; j++) {
+ r[query.columns[j].columnid] = nd.data[i][nd.columns[j].columnid];
+ }
+ ud.push(r);
+ }
+ }
+
+ query.data = arrayIntersectDeep(query.data, ud);
+ }
+
+ // Ordering
+ if (query.orderfn) {
+ if (query.explain) var ms = Date.now();
+ query.data = query.data.sort(query.orderfn);
+ if (query.explain) {
+ query.explaination.push({
+ explid: query.explid++,
+ description: 'QUERY BY',
+ ms: Date.now() - ms,
+ });
+ }
+ }
+
+ // Reduce to limit and offset
+ doLimit(query);
+
+ // Remove Angular.js artifacts and other unnecessary columns
+ // Issue #25
+
+ // TODO: Check what artefacts rest from Angular.js
+ if (typeof angular != 'undefined') {
+ query.removeKeys.push('$$hashKey');
+ }
+
+ if (query.removeKeys.length > 0) {
+ var removeKeys = query.removeKeys;
+
+ // Remove from data
+ jlen = removeKeys.length;
+ if (jlen > 0) {
+ ilen = query.data.length;
+ for (i = 0; i < ilen; i++) {
+ for (j = 0; j < jlen; j++) {
+ delete query.data[i][removeKeys[j]];
+ }
+ }
+ }
+
+ // Remove from columns list
+ if (query.columns.length > 0) {
+ query.columns = query.columns.filter(function(column) {
+ var found = false;
+ removeKeys.forEach(function(key) {
+ if (column.columnid == key) found = true;
+ });
+ return !found;
+ });
+ }
+ }
+
+ if (typeof query.removeLikeKeys != 'undefined' && query.removeLikeKeys.length > 0) {
+ var removeLikeKeys = query.removeLikeKeys;
+
+ // Remove unused columns
+ // SELECT * REMOVE COLUMNS LIKE "%b"
+ for (var i = 0, ilen = query.data.length; i < ilen; i++) {
+ r = query.data[i];
+ for (var k in r) {
+ for (j = 0; j < query.removeLikeKeys.length; j++) {
+ if (alasql.utils.like(query.removeLikeKeys[j], k)) {
+ // if(k.match(query.removeLikeKeys[j])) {
+ delete r[k];
+ }
+ }
+ }
+ }
+
+ if (query.columns.length > 0) {
+ query.columns = query.columns.filter(function(column) {
+ var found = false;
+ removeLikeKeys.forEach(function(key) {
+ // if(column.columnid.match(key)) found = true;
+ if (alasql.utils.like(key, column.columnid)) {
+ found = true;
+ }
+ });
+ return !found;
+ });
+ }
+ }
+
+ if (query.pivotfn) query.pivotfn();
+ if (query.unpivotfn) query.unpivotfn();
+
+ if (query.intoallfn) {
+
+ // var res = query.intoallfn(query.columns,query.cb,query.A, query.B, alasql);
+ var res = query.intoallfn(query.columns, query.cb, query.params, query.alasql);
+
+ // if(query.cb) res = query.cb(res,query.A, query.B);
+
+ // debugger;
+ return res;
+ } else if (query.intofn) {
+ ilen = query.data.length;
+ for (i = 0; i < ilen; i++) {
+ query.intofn(query.data[i], i, query.params, query.alasql);
+ }
+
+ if (query.cb) query.cb(query.data.length, query.A, query.B);
+ return query.data.length;
+ } else {
+
+ res = query.data;
+ if (query.cb) res = query.cb(query.data, query.A, query.B);
+ return res;
+ }
+}
+
+// Limiting
+function doLimit(query) {
+
+ if (query.limit) {
+ var offset = 0;
+ if (query.offset) {
+ offset = query.offset | 0 || 0;
+ offset = offset < 0 ? 0 : offset;
+ }
+ var limit;
+ if (query.percent) {
+ limit = ((query.data.length * query.limit / 100) | 0) + offset;
+ } else {
+ limit = (query.limit | 0) + offset;
+ }
+ query.data = query.data.slice(offset, limit);
+ }
+}
+
+// Distinct
+function doDistinct(query) {
+ if (query.distinct) {
+ var uniq = {};
+ // TODO: Speedup, because Object.keys is slow**
+ // TODO: Problem with DISTINCT on objects
+ var keys = Object.keys(query.data[0] || []);
+ for (var i = 0, ilen = query.data.length; i < ilen; i++) {
+ var uix = keys
+ .map(function(k) {
+ return query.data[i][k];
+ })
+ .join('`');
+ uniq[uix] = query.data[i];
+ }
+ query.data = [];
+ for (var key in uniq) {
+ query.data.push(uniq[key]);
+ }
+ }
+}
+
+// Optimization: preliminary indexation of joins
+var preIndex = function(query) {
+
+ // Loop over all sources
+ // Todo: make this loop smaller and more graspable
+ for (var k = 0, klen = query.sources.length; k < klen; k++) {
+ var source = query.sources[k];
+ delete source.ix;
+ // If there is indexation rule
+
+ if (k > 0 && source.optimization == 'ix' && source.onleftfn && source.onrightfn) {
+ // If there is no table.indices - create it
+ if (source.databaseid && alasql.databases[source.databaseid].tables[source.tableid]) {
+ if (!alasql.databases[source.databaseid].tables[source.tableid].indices)
+ query.database.tables[source.tableid].indices = {};
+ // Check if index already exists
+ var ixx =
+ alasql.databases[source.databaseid].tables[source.tableid].indices[
+ hash(source.onrightfns + '`' + source.srcwherefns)
+ ];
+ if (!alasql.databases[source.databaseid].tables[source.tableid].dirty && ixx) {
+ source.ix = ixx;
+ }
+ }
+
+ if (!source.ix) {
+ source.ix = {};
+ // Walking over source data
+ var scope = {};
+ var i = 0;
+ var ilen = source.data.length;
+ var dataw;
+ // while(source.getfn i= query.sources.length) {
+ // Todo: check if this runs once too many
+
+ // Then apply where and select
+
+ if (query.wherefn(scope, query.params, alasql)) {
+
+ // var res = query.selectfn(scope, query.params, alasql);
+
+ // If there is a GROUP BY then pipe to groupping function
+ if (query.groupfn) {
+ query.groupfn(scope, query.params, alasql);
+ } else {
+ // query.qwerty = 999;
+
+ query.data.push(query.selectfn(scope, query.params, alasql));
+ }
+ }
+ } else if (query.sources[h].applyselect) {
+
+ var source = query.sources[h];
+ source.applyselect(
+ query.params,
+ function(data) {
+ if (data.length > 0) {
+
+ for (var i = 0; i < data.length; i++) {
+ scope[source.alias] = data[i];
+ doJoin(query, scope, h + 1);
+ }
+ } else {
+ if (source.applymode == 'OUTER') {
+ scope[source.alias] = {};
+ doJoin(query, scope, h + 1);
+ }
+ }
+ },
+ scope
+ );
+
+ } else {
+ // STEP 1
+
+ var source = query.sources[h];
+ var nextsource = query.sources[h + 1];
+
+ // if(source.joinmode == "LEFT" || source.joinmode == "INNER" || source.joinmode == "RIGHT"
+ // || source.joinmode == "OUTER" || source.joinmode == "SEMI") {
+ // Todo: check if this is smart
+ if (true) {
+ //source.joinmode != "ANTI") {
+
+ var tableid = source.alias || source.tableid;
+ var pass = false; // For LEFT JOIN
+ var data = source.data;
+ var opt = false;
+
+ // Reduce data for looping if there is optimization hint
+ if (!source.getfn || (source.getfn && !source.dontcache)) {
+ if (
+ source.joinmode != 'RIGHT' &&
+ source.joinmode != 'OUTER' &&
+ source.joinmode != 'ANTI' &&
+ source.optimization == 'ix'
+ ) {
+ data = source.ix[source.onleftfn(scope, query.params, alasql)] || [];
+ opt = true;
+
+ }
+ }
+
+ // Main cycle
+ var i = 0;
+ if (typeof data == 'undefined') {
+ throw new Error('Data source number ' + h + ' in undefined');
+ }
+ var ilen = data.length;
+ var dataw;
+
+ while (
+ (dataw = data[i]) ||
+ (!opt && (source.getfn && (dataw = source.getfn(i)))) ||
+ i < ilen
+ ) {
+ if (!opt && source.getfn && !source.dontcache) data[i] = dataw;
+
+ scope[tableid] = dataw;
+ // Reduce with ON and USING clause
+ if (
+ !source.onleftfn ||
+ source.onleftfn(scope, query.params, alasql) ==
+ source.onrightfn(scope, query.params, alasql)
+ ) {
+ // For all non-standard JOINs like a-b=0
+ if (source.onmiddlefn(scope, query.params, alasql)) {
+ // Recursively call new join
+ // if(source.joinmode == "LEFT" || source.joinmode == "INNER" || source.joinmode == "OUTER" || source.joinmode == "RIGHT" ) {
+ if (source.joinmode != 'SEMI' && source.joinmode != 'ANTI') {
+
+ doJoin(query, scope, h + 1);
+ }
+
+ // if(source.data[i].f = 200) debugger;
+
+ // if(source.joinmode == "RIGHT" || source.joinmode == "ANTI" || source.joinmode == "OUTER") {
+ if (source.joinmode != 'LEFT' && source.joinmode != 'INNER') {
+ dataw._rightjoin = true;
+ }
+
+ // for LEFT JOIN
+ pass = true;
+ }
+ }
+ i++;
+ }
+
+ // Additional join for LEFT JOINS
+ if (
+ (source.joinmode == 'LEFT' ||
+ source.joinmode == 'OUTER' ||
+ source.joinmode == 'SEMI') &&
+ !pass
+ ) {
+ // Clear the scope after the loop
+ scope[tableid] = {};
+ doJoin(query, scope, h + 1);
+ }
+ }
+
+ // When there is no records
+ // if(data.length == 0 && query.groupfn) {
+ // scope[tableid] = undefined;
+ // doJoin(query,scope,h+1);
+ // }
+
+ // STEP 2
+
+ if (h + 1 < query.sources.length) {
+ if (
+ nextsource.joinmode == 'OUTER' ||
+ nextsource.joinmode == 'RIGHT' ||
+ nextsource.joinmode == 'ANTI'
+ ) {
+ scope[source.alias] = {};
+
+ var j = 0;
+ var jlen = nextsource.data.length;
+ var dataw;
+
+ while (
+ (dataw = nextsource.data[j]) ||
+ (nextsource.getfn && (dataw = nextsource.getfn(j))) ||
+ j < jlen
+ ) {
+ if (nextsource.getfn && !nextsource.dontcache) {
+ nextsource.data[j] = dataw;
+ }
+
+ if (dataw._rightjoin) {
+ delete dataw._rightjoin;
+ } else {
+ // delete dataw._rightjoin;
+
+ if (h == 0) {
+ scope[nextsource.alias] = dataw;
+ doJoin(query, scope, h + 2);
+ } else {
+ //scope[nextsource.alias] = dataw;
+ //doJoin(query, scope, h+2);
+
+ }
+ }
+ j++;
+ }
+ // debugger;
+ } else {
+
+ }
+ } else {
+
+ }
+
+ scope[tableid] = undefined;
+
+ }
+}
+
+function swapSources(query, h) {
+ var source = query.sources[h];
+ var nextsource = query.sources[h + 1];
+
+ var onleftfn = source.onleftfn;
+ var onleftfns = source.onleftfns;
+ var onrightfn = source.onrightfn;
+ var onrightfns = source.onrightfns;
+ var optimization = source.optimization;
+
+ source.onleftfn = nextsource.onrightfn;
+ source.onleftfns = nextsource.onrightfns;
+ source.onrightfn = nextsource.onleftfn;
+ source.onrightfns = nextsource.onleftfns;
+ source.optimization = nextsource.optimization;
+
+ nextsource.onleftfn = onleftfn;
+ nextsource.onleftfns = onleftfns;
+ nextsource.onrightfn = onrightfn;
+ nextsource.onrightfns = onrightfns;
+ nextsource.optimization = optimization;
+
+ query.sources[h] = nextsource;
+ query.sources[h + 1] = source;
+}
+
+/*
+//
+// Select run-time part for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+//
+// Main part of SELECT procedure
+//
+
+/* global yy */
+
+yy.Select = function(params) {
+ return yy.extend(this, params);
+};
+yy.Select.prototype.toString = function() {
+ var s;
+ s = '';
+ if (this.explain) {
+ s += 'EXPLAIN ';
+ }
+ s += 'SELECT ';
+ if (this.modifier) {
+ s += this.modifier + ' ';
+ }
+ if (this.distinct) {
+ s += 'DISTINCT ';
+ }
+ if (this.top) {
+ s += 'TOP ' + this.top.value + ' ';
+ if (this.percent) {
+ s += 'PERCENT ';
+ }
+ }
+ s += this.columns
+ .map(function(col) {
+ var s;
+ s = col.toString();
+ if (typeof col.as !== 'undefined') {
+ s += ' AS ' + col.as;
+ }
+ return s;
+ })
+ .join(', ');
+ if (this.from) {
+ s +=
+ ' FROM ' +
+ this.from
+ .map(function(f) {
+ var ss;
+ ss = f.toString();
+ if (f.as) {
+ ss += ' AS ' + f.as;
+ }
+ return ss;
+ })
+ .join(',');
+ }
+ if (this.joins) {
+ s += this.joins
+ .map(function(jn) {
+ var ss;
+ ss = ' ';
+ if (jn.joinmode) {
+ ss += jn.joinmode + ' ';
+ }
+ if (jn.table) {
+ ss += 'JOIN ' + jn.table.toString();
+ } else if (jn.select) {
+ ss += 'JOIN (' + jn.select.toString() + ')';
+ } else if (jn instanceof alasql.yy.Apply) {
+ ss += jn.toString();
+ } else {
+ throw new Error('Wrong type in JOIN mode');
+ }
+ if (jn.as) {
+ ss += ' AS ' + jn.as;
+ }
+ if (jn.using) {
+ ss += ' USING ' + jn.using.toString();
+ }
+ if (jn.on) {
+ ss += ' ON ' + jn.on.toString();
+ }
+ return ss;
+ })
+ .join('');
+ }
+ if (this.where) {
+ s += ' WHERE ' + this.where.toString();
+ }
+ if (this.group && this.group.length > 0) {
+ s +=
+ ' GROUP BY ' +
+ this.group
+ .map(function(grp) {
+ return grp.toString();
+ })
+ .join(', ');
+ }
+ if (this.having) {
+ s += ' HAVING ' + this.having.toString();
+ }
+ if (this.order && this.order.length > 0) {
+ s +=
+ ' ORDER BY ' +
+ this.order
+ .map(function(ord) {
+ return ord.toString();
+ })
+ .join(', ');
+ }
+ if (this.limit) {
+ s += ' LIMIT ' + this.limit.value;
+ }
+ if (this.offset) {
+ s += ' OFFSET ' + this.offset.value;
+ }
+ if (this.union) {
+ s += ' UNION ' + (this.corresponding ? 'CORRESPONDING ' : '') + this.union.toString();
+ }
+ if (this.unionall) {
+ s +=
+ ' UNION ALL ' + (this.corresponding ? 'CORRESPONDING ' : '') + this.unionall.toString();
+ }
+ if (this.except) {
+ s += ' EXCEPT ' + (this.corresponding ? 'CORRESPONDING ' : '') + this.except.toString();
+ }
+ if (this.intersect) {
+ s +=
+ ' INTERSECT ' +
+ (this.corresponding ? 'CORRESPONDING ' : '') +
+ this.intersect.toString();
+ }
+ return s;
+};
+
+/**
+ Select statement in expression
+ */
+yy.Select.prototype.toJS = function(context) {
+
+ // if(this.expression.reduced) return 'true';
+ // return this.expression.toJS(context, tableid, defcols);
+
+ // var s = 'this.queriesdata['+(this.queriesidx-1)+'][0]';
+
+ var s =
+ 'alasql.utils.flatArray(this.queriesfn[' +
+ (this.queriesidx - 1) +
+ '](this.params,null,' +
+ context +
+ '))[0]';
+
+ return s;
+};
+
+// Compile SELECT statement
+yy.Select.prototype.compile = function(databaseid, params) {
+ var db = alasql.databases[databaseid];
+ // Create variable for query
+ var query = new Query();
+
+ // Array with columns to be removed
+ query.removeKeys = [];
+ query.aggrKeys = [];
+
+ query.explain = this.explain; // Explain
+ query.explaination = [];
+ query.explid = 1;
+
+ query.modifier = this.modifier;
+
+ query.database = db;
+ // 0. Precompile whereexists
+ this.compileWhereExists(query);
+
+ // 0. Precompile queries for IN, NOT IN, ANY and ALL operators
+ this.compileQueries(query);
+
+ query.defcols = this.compileDefCols(query, databaseid);
+
+ // 1. Compile FROM clause
+ query.fromfn = this.compileFrom(query);
+
+ // 2. Compile JOIN clauses
+ if (this.joins) {
+ this.compileJoins(query);
+ }
+
+ // todo?: 3. Compile SELECT clause
+
+ // For ROWNUM()
+ query.rownums = [];
+
+ this.compileSelectGroup0(query);
+
+ if (this.group || query.selectGroup.length > 0) {
+ query.selectgfns = this.compileSelectGroup1(query);
+ } else {
+ query.selectfns = this.compileSelect1(query, params);
+ }
+
+ // Remove columns clause
+ this.compileRemoveColumns(query);
+
+ // 5. Optimize WHERE and JOINS
+ if (this.where) {
+ this.compileWhereJoins(query);
+ }
+
+ // 4. Compile WHERE clause
+ query.wherefn = this.compileWhere(query);
+
+ // 6. Compile GROUP BY
+ if (this.group || query.selectGroup.length > 0) {
+ query.groupfn = this.compileGroup(query);
+ }
+
+ // 6. Compile HAVING
+ if (this.having) {
+ query.havingfn = this.compileHaving(query);
+ }
+
+ // 8. Compile ORDER BY clause
+ if (this.order) {
+ query.orderfn = this.compileOrder(query);
+ }
+
+ if (this.group || query.selectGroup.length > 0) {
+ query.selectgfn = this.compileSelectGroup2(query);
+ } else {
+ query.selectfn = this.compileSelect2(query);
+ }
+
+ // 7. Compile DISTINCT, LIMIT and OFFSET
+ query.distinct = this.distinct;
+
+ // 9. Compile PIVOT clause
+ if (this.pivot) query.pivotfn = this.compilePivot(query);
+ if (this.unpivot) query.pivotfn = this.compileUnpivot(query);
+
+ // 10. Compile TOP/LIMIT/OFFSET/FETCH cleuse
+ if (this.top) {
+ query.limit = this.top.value;
+ } else if (this.limit) {
+ query.limit = this.limit.value;
+ if (this.offset) {
+ query.offset = this.offset.value;
+ }
+ }
+
+ query.percent = this.percent;
+
+ // 9. Compile ordering function for UNION and UNIONALL
+ query.corresponding = this.corresponding; // If CORRESPONDING flag exists
+ if (this.union) {
+ query.unionfn = this.union.compile(databaseid);
+ if (this.union.order) {
+ query.orderfn = this.union.compileOrder(query);
+ } else {
+ query.orderfn = null;
+ }
+ } else if (this.unionall) {
+ query.unionallfn = this.unionall.compile(databaseid);
+ if (this.unionall.order) {
+ query.orderfn = this.unionall.compileOrder(query);
+ } else {
+ query.orderfn = null;
+ }
+ } else if (this.except) {
+ query.exceptfn = this.except.compile(databaseid);
+ if (this.except.order) {
+ query.orderfn = this.except.compileOrder(query);
+ } else {
+ query.orderfn = null;
+ }
+ } else if (this.intersect) {
+ query.intersectfn = this.intersect.compile(databaseid);
+ if (this.intersect.order) {
+ query.intersectfn = this.intersect.compileOrder(query);
+ } else {
+ query.orderfn = null;
+ }
+ }
+
+ // SELECT INTO
+ if (this.into) {
+ if (this.into instanceof yy.Table) {
+ //
+ // Save into the table in database
+ //
+ if (
+ alasql.options.autocommit &&
+ alasql.databases[this.into.databaseid || databaseid].engineid
+ ) {
+ // For external database when AUTOCOMMIT is ONs
+ query.intoallfns =
+ 'return alasql.engines["' +
+ alasql.databases[this.into.databaseid || databaseid].engineid +
+ '"]' +
+ '.intoTable("' +
+ (this.into.databaseid || databaseid) +
+ '","' +
+ this.into.tableid +
+ '",this.data, columns, cb);';
+ } else {
+ // Into AlaSQL tables
+ query.intofns =
+ "alasql.databases['" +
+ (this.into.databaseid || databaseid) +
+ "'].tables" +
+ "['" +
+ this.into.tableid +
+ "'].data.push(r);";
+ }
+ } else if (this.into instanceof yy.VarValue) {
+ //
+ // Save into local variable
+ // SELECT * INTO @VAR1 FROM ?
+ //
+ query.intoallfns =
+ 'alasql.vars["' +
+ this.into.variable +
+ '"]=this.data;res=this.data.length;if(cb)res=cb(res);return res;';
+ } else if (this.into instanceof yy.FuncValue) {
+ //
+ // If this is INTO() function, then call it
+ // with one or two parameters
+ //
+ var qs = "return alasql.into['" + this.into.funcid.toUpperCase() + "'](";
+ if (this.into.args && this.into.args.length > 0) {
+ qs += this.into.args[0].toJS() + ',';
+ if (this.into.args.length > 1) {
+ qs += this.into.args[1].toJS() + ',';
+ } else {
+ qs += 'undefined,';
+ }
+ } else {
+ qs += 'undefined, undefined,';
+ }
+ query.intoallfns = qs + 'this.data,columns,cb)';
+
+ } else if (this.into instanceof yy.ParamValue) {
+ //
+ // Save data into parameters array
+ // like alasql('SELECT * INTO ? FROM ?',[outdata,srcdata]);
+ //
+ query.intofns = "params['" + this.into.param + "'].push(r)";
+ }
+
+ if (query.intofns) {
+ // Create intofn function
+
+ query.intofn = new Function('r,i,params,alasql', 'var y;' + query.intofns);
+ } else if (query.intoallfns) {
+ // Create intoallfn function
+
+ query.intoallfn = new Function('columns,cb,params,alasql', 'var y;' + query.intoallfns);
+ }
+ }
+
+ // Now, compile all togeather into one function with query object in scope
+ var statement = function(params, cb, oldscope) {
+ query.params = params;
+ // Note the callback function has the data and error reversed due to existing code in promiseExec which has the
+ // err and data swapped. This trickles down into alasql.exec and further. Rather than risk breaking the whole thing,
+ // the (data, err) standard is maintained here.
+ var res1 = queryfn(query, oldscope, function(res, err) {
+ if (err) {
+ return cb(err, null);
+ }
+ if (query.rownums.length > 0) {
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ for (var j = 0, jlen = query.rownums.length; j < jlen; j++) {
+ res[i][query.rownums[j]] = i + 1;
+ }
+ }
+ }
+
+ var res2 = modify(query, res);
+
+ if (cb) {
+ cb(res2);
+ }
+
+ return res2;
+ });
+
+ // if(typeof res1 != 'undefined') res1 = modify(query,res1);
+
+ return res1;
+ };
+
+ // statement.dbversion = ;
+
+ statement.query = query;
+ return statement;
+};
+
+/**
+ Modify res according modifier
+ @function
+ @param {object} query Query object
+ @param res {object|number|string|boolean} res Data to be converted
+ */
+function modify(query, res) {
+ // jshint ignore:line
+
+ /* If source is a primitive value then return it */
+ if (
+ typeof res === 'undefined' ||
+ typeof res === 'number' ||
+ typeof res === 'string' ||
+ typeof res === 'boolean'
+ ) {
+ return res;
+ }
+
+ var modifier = query.modifier || alasql.options.modifier;
+ var columns = query.columns;
+ if (typeof columns === 'undefined' || columns.length == 0) {
+ // Try to create columns
+ if (res.length > 0) {
+ var allcol = {};
+ for (var i = Math.min(res.length, alasql.options.columnlookup || 10) - 1; 0 <= i; i--) {
+ for (var key in res[i]) {
+ allcol[key] = true;
+ }
+ }
+
+ columns = Object.keys(allcol).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ } else {
+ // Cannot recognize columns
+ columns = [];
+ }
+ }
+
+ if (modifier === 'VALUE') {
+
+ if (res.length > 0) {
+ var key;
+ if (columns && columns.length > 0) {
+ key = columns[0].columnid;
+ } else {
+ key = Object.keys(res[0])[0];
+ }
+ res = res[0][key];
+ } else {
+ res = undefined;
+ }
+ } else if (modifier === 'ROW') {
+ if (res.length > 0) {
+ var key;
+ var a = [];
+ for (var key in res[0]) {
+ a.push(res[0][key]);
+ }
+ res = a;
+ } else {
+ res = undefined;
+ }
+ } else if (modifier === 'COLUMN') {
+ var ar = [];
+ if (res.length > 0) {
+ var key;
+ if (columns && columns.length > 0) {
+ key = columns[0].columnid;
+ } else {
+ key = Object.keys(res[0])[0];
+ }
+
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ ar.push(res[i][key]);
+ }
+ }
+ res = ar;
+ } else if (modifier === 'MATRIX') {
+ // Returns square matrix of rows
+ var ar = [];
+ for (var i = 0; i < res.length; i++) {
+ var a = [];
+ var r = res[i];
+ for (var j = 0; j < columns.length; j++) {
+ a.push(r[columns[j].columnid]);
+ }
+ ar.push(a);
+ }
+ res = ar;
+ } else if (modifier === 'INDEX') {
+ var ar = {};
+ var key, val;
+ if (columns && columns.length > 0) {
+ key = columns[0].columnid;
+ val = columns[1].columnid;
+ } else {
+ var okeys = Object.keys(res[0]);
+ key = okeys[0];
+ val = okeys[1];
+ }
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ ar[res[i][key]] = res[i][val];
+ }
+ res = ar;
+ // res = arrayOfArrays(res);
+ } else if (modifier === 'RECORDSET') {
+ res = new alasql.Recordset({columns: columns, data: res});
+ // res = arrayOfArrays(res);
+ } else if (modifier === 'TEXTSTRING') {
+ var key;
+ if (columns && columns.length > 0) {
+ key = columns[0].columnid;
+ } else {
+ key = Object.keys(res[0])[0];
+ }
+
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ res[i] = res[i][key];
+ }
+ res = res.join('\n');
+ // res = arrayOfArrays(res);
+ }
+ return res;
+}
+
+yy.Select.prototype.execute = function(databaseid, params, cb) {
+ return this.compile(databaseid)(params, cb);
+ // throw new Error('Insert statement is should be compiled')
+};
+
+/*
+//
+// EXISTS and other subqueries functions functions for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.ExistsValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.ExistsValue.prototype.toString = function() {
+ return 'EXISTS(' + this.value.toString() + ')';
+};
+
+yy.ExistsValue.prototype.toType = function() {
+ return 'boolean';
+};
+
+yy.ExistsValue.prototype.toJS = function(context, tableid, defcols) {
+
+ return 'this.existsfn[' + this.existsidx + '](params,null,' + context + ').data.length';
+};
+
+yy.Select.prototype.compileWhereExists = function(query) {
+ if (!this.exists) return;
+ query.existsfn = this.exists.map(function(ex) {
+ var nq = ex.compile(query.database.databaseid);
+
+ // if(!nq.query.modifier) nq.query.modifier = 'RECORDSET';
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+};
+
+yy.Select.prototype.compileQueries = function(query) {
+ if (!this.queries) return;
+ query.queriesfn = this.queries.map(function(q) {
+ var nq = q.compile(query.database.databaseid);
+
+ // if(!nq.query) nq.query = {};
+ nq.query.modifier = 'RECORDSET';
+ // if(!nq.query.modifier) nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+};
+
+//
+// Prepare subqueries and exists
+//
+alasql.precompile = function(statement, databaseid, params) {
+
+ if (!statement) return;
+ statement.params = params;
+ if (statement.queries) {
+
+ statement.queriesfn = statement.queries.map(function(q) {
+ var nq = q.compile(databaseid || statement.database.databaseid);
+
+ // nq.query.modifier = undefined;
+ // if(!nq.query.modifier) nq.query.modifier = 'RECORDSET';
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+ if (statement.exists) {
+
+ statement.existsfn = statement.exists.map(function(ex) {
+ var nq = ex.compile(databaseid || statement.database.databaseid);
+
+ // if(!nq.query.modifier) nq.query.modifier = 'RECORDSET';
+ // if(!nq.query.modifier) nq.query.modifier = 'ARRAY';
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+};
+
+/*
+//
+// Select compiler part for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* global yy, alasql, Mongo, returnTrue */
+
+yy.Select.prototype.compileFrom = function(query) {
+
+ var self = this;
+ query.sources = [];
+ // var tableid = this.from[0].tableid;
+ // var as = '';
+ // if(self.from[0].as) as = this.from[0].as;
+
+ query.aliases = {};
+ if (!self.from) return;
+
+ self.from.forEach(function(tq) {
+
+ var ps = '';
+
+ var alias = tq.as || tq.tableid;
+
+ if (tq instanceof yy.Table) {
+
+ query.aliases[alias] = {
+ tableid: tq.tableid,
+ databaseid: tq.databaseid || query.database.databaseid,
+ type: 'table',
+ };
+ } else if (tq instanceof yy.Select) {
+ query.aliases[alias] = {type: 'subquery'};
+ } else if (tq instanceof yy.Search) {
+ query.aliases[alias] = {type: 'subsearch'};
+ } else if (tq instanceof yy.ParamValue) {
+ query.aliases[alias] = {type: 'paramvalue'};
+ } else if (tq instanceof yy.FuncValue) {
+ query.aliases[alias] = {type: 'funcvalue'};
+ } else if (tq instanceof yy.VarValue) {
+ query.aliases[alias] = {type: 'varvalue'};
+ } else if (tq instanceof yy.FromData) {
+ query.aliases[alias] = {type: 'fromdata'};
+ } else if (tq instanceof yy.Json) {
+ query.aliases[alias] = {type: 'json'};
+ } else if (tq.inserted) {
+ query.aliases[alias] = {type: 'inserted'};
+ } else {
+ throw new Error('Wrong table at FROM');
+ }
+
+ var source = {
+ alias: alias,
+ databaseid: tq.databaseid || query.database.databaseid,
+ tableid: tq.tableid,
+ joinmode: 'INNER',
+ onmiddlefn: returnTrue,
+ srcwherefns: '', // for optimization
+ srcwherefn: returnTrue,
+ // columns: []
+ };
+
+ if (tq instanceof yy.Table) {
+ // Get columns from table
+ source.columns = alasql.databases[source.databaseid].tables[source.tableid].columns;
+
+ if (
+ alasql.options.autocommit &&
+ alasql.databases[source.databaseid].engineid &&
+ !alasql.databases[source.databaseid].tables[source.tableid].view
+ ) {
+
+ // TODO -- make view for external engine
+ source.datafn = function(query, params, cb, idx, alasql) {
+ return alasql.engines[alasql.databases[source.databaseid].engineid].fromTable(
+ source.databaseid,
+ source.tableid,
+ cb,
+ idx,
+ query
+ );
+ };
+ } else if (alasql.databases[source.databaseid].tables[source.tableid].view) {
+ source.datafn = function(query, params, cb, idx, alasql) {
+ var res = alasql.databases[source.databaseid].tables[source.tableid].select(
+ params
+ );
+ if (cb) res = cb(res, idx, query);
+ return res;
+ };
+ } else {
+
+ source.datafn = function(query, params, cb, idx, alasql) {
+ /*
+
+*/
+ var res = alasql.databases[source.databaseid].tables[source.tableid].data;
+
+ if (cb) res = cb(res, idx, query);
+
+ return res;
+ // return alasql.databases[source.databaseid].tables[source.tableid].data;
+ };
+ }
+ } else if (tq instanceof yy.Select) {
+ source.subquery = tq.compile(query.database.databaseid);
+ if (typeof source.subquery.query.modifier === 'undefined') {
+ source.subquery.query.modifier = 'RECORDSET'; // Subqueries always return recordsets
+ }
+ source.columns = source.subquery.query.columns;
+
+ // tq.columns;
+
+ source.datafn = function(query, params, cb, idx, alasql) {
+ // return source.subquery(query.params, cb, idx, query);
+ var res;
+ source.subquery(query.params, function(data) {
+ res = data.data;
+ if (cb) res = cb(res, idx, query);
+ return res;
+ // return data.data;
+ });
+
+ return res;
+ };
+ } else if (tq instanceof yy.Search) {
+ source.subsearch = tq;
+ source.columns = [];
+
+ source.datafn = function(query, params, cb, idx, alasql) {
+ // return source.subquery(query.params, cb, idx, query);
+ var res;
+ source.subsearch.execute(query.database.databaseid, query.params, function(data) {
+ res = data;
+ if (cb) res = cb(res, idx, query);
+ return res;
+ // return data.data;
+ });
+
+ return res;
+ };
+ } else if (tq instanceof yy.ParamValue) {
+ ps = "var res = alasql.prepareFromData(params['" + tq.param + "']";
+
+ if (tq.array) ps += ',true';
+ ps += ');if(cb)res=cb(res,idx,query);return res';
+ source.datafn = new Function('query,params,cb,idx,alasql', ps);
+ } else if (tq.inserted) {
+ ps = 'var res = alasql.prepareFromData(alasql.inserted';
+ if (tq.array) ps += ',true';
+ ps += ');if(cb)res=cb(res,idx,query);return res';
+ source.datafn = new Function('query,params,cb,idx,alasql', ps);
+ } else if (tq instanceof yy.Json) {
+ ps = 'var res = alasql.prepareFromData(' + tq.toJS();
+
+ if (tq.array) ps += ',true';
+ ps += ');if(cb)res=cb(res,idx,query);return res';
+ source.datafn = new Function('query,params,cb,idx,alasql', ps);
+ } else if (tq instanceof yy.VarValue) {
+ ps = "var res = alasql.prepareFromData(alasql.vars['" + tq.variable + "']";
+
+ if (tq.array) ps += ',true';
+ ps += ');if(cb)res=cb(res,idx,query);return res';
+ source.datafn = new Function('query,params,cb,idx,alasql', ps);
+ } else if (tq instanceof yy.FuncValue) {
+ ps = "var res=alasql.from['" + tq.funcid.toUpperCase() + "'](";
+
+ if (tq.args && tq.args.length > 0) {
+ if (tq.args[0]) {
+ ps += tq.args[0].toJS('query.oldscope') + ',';
+ } else {
+ ps += 'null,';
+ }
+ if (tq.args[1]) {
+ ps += tq.args[1].toJS('query.oldscope') + ',';
+ } else {
+ ps += 'null,';
+ }
+ } else {
+ ps += 'null,null,';
+ }
+ ps += 'cb,idx,query';
+ ps += ');/*if(cb)res=cb(res,idx,query);*/return res';
+
+ source.datafn = new Function('query, params, cb, idx, alasql', ps);
+ } else if (tq instanceof yy.FromData) {
+ source.datafn = function(query, params, cb, idx, alasql) {
+ var res = tq.data;
+ if (cb) res = cb(res, idx, query);
+ return res;
+ };
+ } else {
+ throw new Error('Wrong table at FROM');
+ }
+ // source.data = alasql.databases[source.databaseid].tables[source.tableid].data;
+ query.sources.push(source);
+ });
+ // TODO Add joins
+ query.defaultTableid = query.sources[0].alias;
+
+};
+
+alasql.prepareFromData = function(data, array) {
+
+ var i, ilen;
+ var res = data;
+ if (typeof data === 'string') {
+ res = data.split(/\r?\n/);
+ if (array) {
+ for (i = 0, ilen = res.length; i < ilen; i++) {
+ res[i] = [res[i]];
+ }
+ }
+ } else if (array) {
+ res = [];
+ for (i = 0, ilen = data.length; i < ilen; i++) {
+ res.push([data[i]]);
+ }
+
+ } else if (typeof data === 'object' && !Array.isArray(data)) {
+ // } else if(typeof data == 'object' && !(typeof data.length == 'undefined')) {
+ if (
+ typeof Mongo !== 'undefined' &&
+ typeof Mongo.Collection !== 'undefined' &&
+ data instanceof Mongo.Collection
+ ) {
+ res = data.find().fetch();
+ } else {
+ res = [];
+ for (var key in data) {
+ if (data.hasOwnProperty(key)) res.push([key, data[key]]);
+ }
+ }
+
+ }
+
+ return res;
+};
+
+/*
+//
+// Select compiler part for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// SELECT Compile functions
+
+/* global yy, alasql, returnTrue, arrayIntersect */
+
+// Compile JOIN caluese
+yy.Select.prototype.compileJoins = function(query) {
+
+ // debugger;
+ var self = this;
+
+ this.joins.forEach(function(jn) {
+ // Test CROSS-JOIN
+ var tq, ps, source;
+ if (jn.joinmode === 'CROSS') {
+ if (jn.using || jn.on) {
+ throw new Error('CROSS JOIN cannot have USING or ON clauses');
+ } else {
+ jn.joinmode = 'INNER';
+ }
+ }
+
+ if (jn instanceof yy.Apply) {
+
+ source = {
+ alias: jn.as,
+ applymode: jn.applymode,
+ onmiddlefn: returnTrue,
+ srcwherefns: '', // for optimization
+ srcwherefn: returnTrue,
+ columns: [], // TODO check this
+ };
+ source.applyselect = jn.select.compile(query.database.databaseid);
+ source.columns = source.applyselect.query.columns;
+
+ source.datafn = function(query, params, cb, idx, alasql) {
+ var res;
+ if (cb) res = cb(res, idx, query);
+ return res;
+ };
+
+ query.sources.push(source);
+
+ return;
+ }
+
+ if (jn.table) {
+ tq = jn.table;
+ source = {
+ alias: jn.as || tq.tableid,
+ databaseid: tq.databaseid || query.database.databaseid,
+ tableid: tq.tableid,
+ joinmode: jn.joinmode,
+ onmiddlefn: returnTrue,
+ srcwherefns: '', // for optimization
+ srcwherefn: returnTrue,
+ columns: [],
+ };
+ //
+
+ if (!alasql.databases[source.databaseid].tables[source.tableid]) {
+ throw new Error(
+ "Table '" +
+ source.tableid +
+ "' is not exists in database '" +
+ source.databaseid +
+ "'"
+ );
+ }
+
+ source.columns = alasql.databases[source.databaseid].tables[source.tableid].columns;
+
+ // source.data = query.database.tables[source.tableid].data;
+ if (alasql.options.autocommit && alasql.databases[source.databaseid].engineid) {
+
+ source.datafn = function(query, params, cb, idx, alasql) {
+
+ return alasql.engines[alasql.databases[source.databaseid].engineid].fromTable(
+ source.databaseid,
+ source.tableid,
+ cb,
+ idx,
+ query
+ );
+ };
+ } else if (alasql.databases[source.databaseid].tables[source.tableid].view) {
+ source.datafn = function(query, params, cb, idx, alasql) {
+ var res = alasql.databases[source.databaseid].tables[source.tableid].select(
+ params
+ );
+ if (cb) res = cb(res, idx, query);
+ return res;
+ };
+ } else {
+ source.datafn = function(query, params, cb, idx, alasql) {
+ var res = alasql.databases[source.databaseid].tables[source.tableid].data;
+ if (cb) res = cb(res, idx, query);
+ return res;
+ };
+ }
+
+ // var alias = jn.as || tq.tableid;
+ // if(tq) {
+ query.aliases[source.alias] = {
+ tableid: tq.tableid,
+ databaseid: tq.databaseid || query.database.databaseid,
+ };
+ // }
+ } else if (jn.select) {
+ tq = jn.select;
+ source = {
+ alias: jn.as,
+ // databaseid: jn.databaseid || query.database.databaseid,
+ // tableid: tq.tableid,
+ joinmode: jn.joinmode,
+ onmiddlefn: returnTrue,
+ srcwherefns: '', // for optimization
+ srcwherefn: returnTrue,
+ columns: [],
+ };
+
+ source.subquery = tq.compile(query.database.databaseid);
+ if (typeof source.subquery.query.modifier === 'undefined') {
+ source.subquery.query.modifier = 'RECORDSET'; // Subqueries always return recordsets
+ }
+ source.columns = source.subquery.query.columns;
+
+ // if(jn instanceof yy.Apply) {
+ source.datafn = function(query, params, cb, idx, alasql) {
+ // return cb(null,idx,alasql);
+ return source.subquery(query.params, null, cb, idx).data;
+ };
+ // } else {
+ // source.datafn = function(query, params, cb, idx, alasql) {
+ // return source.subquery(query.params, null, cb, idx);
+ // }
+ // }
+ query.aliases[source.alias] = {type: 'subquery'};
+ } else if (jn.param) {
+ source = {
+ alias: jn.as,
+ // databaseid: jn.databaseid || query.database.databaseid,
+ // tableid: tq.tableid,
+ joinmode: jn.joinmode,
+ onmiddlefn: returnTrue,
+ srcwherefns: '', // for optimization
+ srcwherefn: returnTrue,
+ };
+ // source.data = ;
+ var jnparam = jn.param.param;
+
+ ps = "var res=alasql.prepareFromData(params['" + jnparam + "']";
+ if (jn.array) ps += ',true';
+ ps += ');if(cb)res=cb(res, idx, query);return res';
+
+ source.datafn = new Function('query,params,cb,idx, alasql', ps);
+ query.aliases[source.alias] = {type: 'paramvalue'};
+ } else if (jn.variable) {
+ source = {
+ alias: jn.as,
+ // databaseid: jn.databaseid || query.database.databaseid,
+ // tableid: tq.tableid,
+ joinmode: jn.joinmode,
+ onmiddlefn: returnTrue,
+ srcwherefns: '', // for optimization
+ srcwherefn: returnTrue,
+ };
+ // source.data = ;
+ // var jnparam = jn.param.param;
+
+ ps = "var res=alasql.prepareFromData(alasql.vars['" + jn.variable + "']";
+ if (jn.array) ps += ',true';
+ ps += ');if(cb)res=cb(res, idx, query);return res';
+
+ source.datafn = new Function('query,params,cb,idx, alasql', ps);
+ query.aliases[source.alias] = {type: 'varvalue'};
+ } else if (jn.func) {
+ source = {
+ alias: jn.as,
+ // databaseid: jn.databaseid || query.database.databaseid,
+ // tableid: tq.tableid,
+ joinmode: jn.joinmode,
+ onmiddlefn: returnTrue,
+ srcwherefns: '', // for optimization
+ srcwherefn: returnTrue,
+ };
+ // source.data = ;
+
+ var s = "var res=alasql.from['" + jn.func.funcid.toUpperCase() + "'](";
+
+ var args = jn.func.args;
+ if (args && args.length > 0) {
+ if (args[0]) {
+ s += args[0].toJS('query.oldscope') + ',';
+ } else {
+ s += 'null,';
+ }
+ if (args[1]) {
+ s += args[1].toJS('query.oldscope') + ',';
+ } else {
+ s += 'null,';
+ }
+ } else {
+ s += 'null,null,';
+ }
+ s += 'cb,idx,query';
+ s += ');/*if(cb)res=cb(res,idx,query);*/return res';
+
+ source.datafn = new Function('query, params, cb, idx, alasql', s);
+
+ query.aliases[source.alias] = {type: 'funcvalue'};
+ }
+
+ var alias = source.alias;
+
+ // Test NATURAL-JOIN
+ if (jn.natural) {
+ if (jn.using || jn.on) {
+ throw new Error('NATURAL JOIN cannot have USING or ON clauses');
+ } else {
+ // source.joinmode == "INNER";
+ if (query.sources.length > 0) {
+ var prevSource = query.sources[query.sources.length - 1];
+ var prevTable =
+ alasql.databases[prevSource.databaseid].tables[prevSource.tableid];
+ var table = alasql.databases[source.databaseid].tables[source.tableid];
+
+ if (prevTable && table) {
+ var c1 = prevTable.columns.map(function(col) {
+ return col.columnid;
+ });
+ var c2 = table.columns.map(function(col) {
+ return col.columnid;
+ });
+ jn.using = arrayIntersect(c1, c2).map(function(colid) {
+ return {columnid: colid};
+ });
+
+ } else {
+ throw new Error(
+ 'In this version of Alasql NATURAL JOIN ' +
+ 'works for tables with predefined columns only'
+ );
+ }
+ }
+ }
+ }
+
+ if (jn.using) {
+ prevSource = query.sources[query.sources.length - 1];
+
+ source.onleftfns = jn.using
+ .map(function(col) {
+
+ return (
+ "p['" +
+ (prevSource.alias || prevSource.tableid) +
+ "']['" +
+ col.columnid +
+ "']"
+ );
+ })
+ .join('+"`"+');
+
+ source.onleftfn = new Function('p,params,alasql', 'var y;return ' + source.onleftfns);
+
+ source.onrightfns = jn.using
+ .map(function(col) {
+ return "p['" + (source.alias || source.tableid) + "']['" + col.columnid + "']";
+ })
+ .join('+"`"+');
+ source.onrightfn = new Function('p,params,alasql', 'var y;return ' + source.onrightfns);
+ source.optimization = 'ix';
+
+ } else if (jn.on) {
+
+ if (jn.on instanceof yy.Op && jn.on.op === '=' && !jn.on.allsome) {
+
+ source.optimization = 'ix';
+
+ var lefts = '';
+ var rights = '';
+ var middles = '';
+ var middlef = false;
+ // Test right and left sides
+ var ls = jn.on.left.toJS('p', query.defaultTableid, query.defcols);
+ var rs = jn.on.right.toJS('p', query.defaultTableid, query.defcols);
+
+ if (
+ ls.indexOf("p['" + alias + "']") > -1 &&
+ !(rs.indexOf("p['" + alias + "']") > -1)
+ ) {
+ if (
+ (ls.match(/p\['.*?'\]/g) || []).every(function(s) {
+ return s === "p['" + alias + "']";
+ })
+ ) {
+ rights = ls;
+ } else {
+ middlef = true;
+ }
+ } else if (
+ !(ls.indexOf("p['" + alias + "']") > -1) &&
+ rs.indexOf("p['" + alias + "']") > -1
+ ) {
+ if (
+ (rs.match(/p\['.*?'\]/g) || []).every(function(s) {
+ return s === "p['" + alias + "']";
+ })
+ ) {
+ lefts = ls;
+ } else {
+ middlef = true;
+ }
+ } else {
+ middlef = true;
+ }
+
+ if (
+ rs.indexOf("p['" + alias + "']") > -1 &&
+ !(ls.indexOf("p['" + alias + "']") > -1)
+ ) {
+ if (
+ (rs.match(/p\['.*?'\]/g) || []).every(function(s) {
+ return s === "p['" + alias + "']";
+ })
+ ) {
+ rights = rs;
+ } else {
+ middlef = true;
+ }
+ } else if (
+ !(rs.indexOf("p['" + alias + "']") > -1) &&
+ ls.indexOf("p['" + alias + "']") > -1
+ ) {
+ if (
+ (ls.match(/p\['.*?'\]/g) || []).every(function(s) {
+ return s === "p['" + alias + "']";
+ })
+ ) {
+ lefts = rs;
+ } else {
+ middlef = true;
+ }
+ } else {
+ middlef = true;
+ }
+
+ if (middlef) {
+ // middles = jn.on.toJS('p',query.defaultTableid);
+ // } else {
+ rights = '';
+ lefts = '';
+ middles = jn.on.toJS('p', query.defaultTableid, query.defcols);
+ source.optimization = 'no';
+ // What to here?
+ }
+
+ source.onleftfns = lefts;
+ source.onrightfns = rights;
+ source.onmiddlefns = middles || 'true';
+
+ source.onleftfn = new Function(
+ 'p,params,alasql',
+ 'var y;return ' + source.onleftfns
+ );
+ source.onrightfn = new Function(
+ 'p,params,alasql',
+ 'var y;return ' + source.onrightfns
+ );
+ source.onmiddlefn = new Function(
+ 'p,params,alasql',
+ 'var y;return ' + source.onmiddlefns
+ );
+
+ // } else if(jn.on instanceof yy.Op && jn.on.op == 'AND') {
+
+ } else {
+
+ source.optimization = 'no';
+ // source.onleftfn = returnTrue;
+ // source.onleftfns = "true";
+ source.onmiddlefns = jn.on.toJS('p', query.defaultTableid, query.defcols);
+ source.onmiddlefn = new Function(
+ 'p,params,alasql',
+ 'var y;return ' + jn.on.toJS('p', query.defaultTableid, query.defcols)
+ );
+ }
+
+ // Optimization function
+ }
+
+ // source.data = alasql.databases[source.databaseid].tables[source.tableid].data;
+
+ // TODO SubQueries
+
+ query.sources.push(source);
+ });
+
+};
+
+yy.Select.prototype.compileWhere = function(query) {
+ if (this.where) {
+ if (typeof this.where == 'function') {
+ return this.where;
+ } else {
+ var s = this.where.toJS('p', query.defaultTableid, query.defcols);
+ query.wherefns = s;
+
+ return new Function('p,params,alasql', 'var y;return ' + s);
+ }
+ } else
+ return function() {
+ return true;
+ };
+};
+
+yy.Select.prototype.compileWhereJoins = function(query) {
+ return;
+
+ // TODO Fix Where optimization
+
+ optimizeWhereJoin(query, this.where.expression);
+
+ //for sources compile wherefs
+ query.sources.forEach(function(source) {
+ if (source.srcwherefns) {
+ source.srcwherefn = new Function(
+ 'p,params,alasql',
+ 'var y;return ' + source.srcwherefns
+ );
+ }
+ if (source.wxleftfns) {
+ source.wxleftfn = new Function('p,params,alasql', 'var y;return ' + source.wxleftfns);
+ }
+ if (source.wxrightfns) {
+ source.wxrightfn = new Function('p,params,alasql', 'var y;return ' + source.wxrightfns);
+ }
+
+ });
+};
+
+function optimizeWhereJoin(query, ast) {
+ if (!ast) return false;
+ if (!(ast instanceof yy.Op)) return;
+ if (ast.op != '=' && ast.op != 'AND') return;
+ if (ast.allsome) return;
+
+ var s = ast.toJS('p', query.defaultTableid, query.defcols);
+ var fsrc = [];
+ query.sources.forEach(function(source, idx) {
+ // Optimization allowed only for tables only
+ if (source.tableid) {
+ // This is a good place to remove all unnecessary optimizations
+ if (s.indexOf("p['" + source.alias + "']") > -1) fsrc.push(source);
+ }
+ });
+
+ // if(fsrc.length < query.sources.length) return;
+
+ if (fsrc.length == 0) {
+
+ return;
+ } else if (fsrc.length == 1) {
+ if (
+ !(s.match(/p\[\'.*?\'\]/g) || []).every(function(s) {
+ return s == "p['" + fsrc[0].alias + "']";
+ })
+ ) {
+ return;
+ // This is means, that we have column from parent query
+ // So we return without optimization
+ }
+
+ var src = fsrc[0]; // optmiization source
+ src.srcwherefns = src.srcwherefns ? src.srcwherefns + '&&' + s : s;
+
+ if (ast instanceof yy.Op && (ast.op == '=' && !ast.allsome)) {
+ if (ast.left instanceof yy.Column) {
+ var ls = ast.left.toJS('p', query.defaultTableid, query.defcols);
+ var rs = ast.right.toJS('p', query.defaultTableid, query.defcols);
+ if (rs.indexOf("p['" + fsrc[0].alias + "']") == -1) {
+ fsrc[0].wxleftfns = ls;
+ fsrc[0].wxrightfns = rs;
+ }
+ }
+ if (ast.right instanceof yy.Column) {
+ var ls = ast.left.toJS('p', query.defaultTableid, query.defcols);
+ var rs = ast.right.toJS('p', query.defaultTableid, query.defcols);
+ if (ls.indexOf("p['" + fsrc[0].alias + "']") == -1) {
+ fsrc[0].wxleftfns = rs;
+ fsrc[0].wxrightfns = ls;
+ }
+ }
+ }
+ ast.reduced = true; // To do not duplicate wherefn and srcwherefn
+ return;
+ } else {
+ if ((ast.op = 'AND')) {
+ optimizeWhereJoin(query, ast.left);
+ optimizeWhereJoin(query, ast.right);
+ }
+ }
+}
+
+/*
+//
+// Select compiler part for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/**
+ Compile group of statements
+ */
+yy.Select.prototype.compileGroup = function(query) {
+
+ if (query.sources.length > 0) {
+ var tableid = query.sources[0].alias;
+ } else {
+ // If SELECT contains group aggregators without source tables
+ var tableid = '';
+ }
+ var defcols = query.defcols;
+
+ var allgroup = [[]];
+ if (this.group) {
+ allgroup = decartes(this.group, query);
+ }
+
+ // Prepare groups
+ //var allgroup = [['a'], ['a','b'], ['a', 'b', 'c']];
+
+ // Union all arrays to get a maximum
+ var allgroups = [];
+ allgroup.forEach(function(a) {
+ allgroups = arrayUnion(allgroups, a);
+ });
+
+ query.allgroups = allgroups;
+
+ query.ingroup = [];
+
+ // Create negative array
+
+ var s = '';
+ // s+= query.selectfns;
+ allgroup.forEach(function(agroup) {
+ // Start of group function
+ s += 'var g=this.xgroups[';
+
+ // var gcols = this.group.map(function(col){return col.columnid}); // Group fields with r
+ // Array with group columns from record
+ var rg = agroup.map(function(col2) {
+ var columnid = col2.split('\t')[0];
+ var coljs = col2.split('\t')[1];
+ // Check, if aggregator exists but GROUP BY is not exists
+ if (columnid === '') {
+ return '1'; // Create fictive groupping column for fictive GROUP BY
+ }
+ // else return "r['"+columnid+"']";
+ query.ingroup.push(columnid);
+
+ return coljs;
+ });
+
+ if (rg.length === 0) {
+ rg = ["''"];
+ }
+
+ s += rg.join('+"`"+');
+ s += '];if(!g) {this.groups.push((g=this.xgroups[';
+ s += rg.join('+"`"+');
+ s += '] = {';
+ // s += ']=r';
+ s += agroup
+ .map(function(col2) {
+ var columnid = col2.split('\t')[0];
+ var coljs = col2.split('\t')[1];
+
+ if (columnid === '') {
+ return '';
+ }
+ return "'" + columnid + "':" + coljs + ',';
+ })
+ .join('');
+
+ var neggroup = arrayDiff(allgroups, agroup);
+
+ s += neggroup
+ .map(function(col2) {
+ var columnid = col2.split('\t')[0];
+ // var coljs = col2.split('\t')[1]
+ return "'" + columnid + "':null,";
+ })
+ .join('');
+
+ var aft = '',
+ aft2 = '';
+
+ if (typeof query.groupStar !== 'undefined') {
+ aft2 +=
+ "for(var f in p['" +
+ query.groupStar +
+ "']) {g[f]=p['" +
+ query.groupStar +
+ "'][f];};";
+ }
+
+ /*
+ */
+ // s += self.columns.map(function(col){
+
+ s += query.selectGroup
+ .map(function(col) {
+
+ var colexp = col.expression.toJS('p', tableid, defcols);
+ var colas = col.nick;
+ // if(typeof colas == 'undefined') {
+ // if(col instanceof yy.Column) colas = col.columnid;
+ // else colas = col.toString();
+ // };
+ if (col instanceof yy.AggrValue) {
+ if (col.distinct) {
+ aft +=
+ ",g['$$_VALUES_" +
+ colas +
+ "']={},g['$$_VALUES_" +
+ colas +
+ "'][" +
+ colexp +
+ ']=true';
+ }
+ if (col.aggregatorid === 'SUM') {
+ return "'" + colas + "':(" + colexp + ')||0,';
+ } else if (
+ col.aggregatorid === 'MIN' ||
+ col.aggregatorid === 'MAX' ||
+ col.aggregatorid === 'FIRST' ||
+ col.aggregatorid === 'LAST'
+ // || col.aggregatorid == 'AVG'
+ // ) { return "'"+col.as+'\':r[\''+col.as+'\'],'; }//f.field.arguments[0].toJS();
+ ) {
+ return "'" + colas + "':" + colexp + ','; //f.field.arguments[0].toJS();
+ } else if (col.aggregatorid === 'ARRAY') {
+ return "'" + colas + "':[" + colexp + '],';
+ } else if (col.aggregatorid === 'COUNT') {
+ if (col.expression.columnid === '*') {
+ return "'" + colas + "':1,";
+ } else {
+ // return "'"+colas+'\':(typeof '+colexp+' != "undefined")?1:0,';
+ // } else {
+ return "'" + colas + "':(typeof " + colexp + ' != "undefined")?1:0,';
+ }
+
+ // else if(col.aggregatorid == 'MIN') { return "'"+col.as+'\':r[\''+col.as+'\'],'; }
+ // else if(col.aggregatorid == 'MAX') { return "'"+col.as+'\':r[\''+col.as+'\'],'; }
+ } else if (col.aggregatorid === 'AVG') {
+ query.removeKeys.push('_SUM_' + colas);
+ query.removeKeys.push('_COUNT_' + colas);
+
+ return (
+ '' +
+ "'" +
+ colas +
+ "':" +
+ colexp +
+ ",'_SUM_" +
+ colas +
+ "':(" +
+ colexp +
+ ")||0,'_COUNT_" +
+ colas +
+ "':(typeof " +
+ colexp +
+ ' != "undefined")?1:0,'
+ );
+ } else if (col.aggregatorid === 'AGGR') {
+ aft += ",g['" + colas + "']=" + col.expression.toJS('g', -1);
+ return '';
+ } else if (col.aggregatorid === 'REDUCE') {
+ // query.removeKeys.push('_REDUCE_'+colas);
+ query.aggrKeys.push(col);
+
+ // return "'"+colas+'\':alasql.aggr[\''+col.funcid+'\']('+colexp+',undefined,(acc={}),1),'
+ // +'\'__REDUCE__'+colas+'\':acc,';
+ return (
+ "'" +
+ colas +
+ "':alasql.aggr['" +
+ col.funcid +
+ "'](" +
+ colexp +
+ ',undefined,1),'
+ );
+ }
+ return '';
+ }
+
+ return '';
+ })
+ .join('');
+
+ s += '}' + aft + ',g));' + aft2 + '} else {';
+
+ /*
+ // var neggroup = arrayDiff(allgroups,agroup);
+
+ // s += neggroup.map(function(columnid){
+ // return "g['"+columnid+"']=null;";
+ // }).join('');
+*/
+
+ // s += self.columns.map(function(col){
+ s += query.selectGroup
+ .map(function(col) {
+ var colas = col.nick;
+
+ var colexp = col.expression.toJS('p', tableid, defcols);
+
+ if (col instanceof yy.AggrValue) {
+ var pre = '',
+ post = '';
+ if (col.distinct) {
+ var pre =
+ 'if(typeof ' +
+ colexp +
+ '!="undefined" && (!g[\'$$_VALUES_' +
+ colas +
+ "'][" +
+ colexp +
+ '])) \
+ {';
+ var post = "g['$$_VALUES_" + colas + "'][" + colexp + ']=true;}';
+ }
+ if (col.aggregatorid === 'SUM') {
+ return pre + "g['" + colas + "']+=(" + colexp + '||0);' + post; //f.field.arguments[0].toJS();
+ } else if (col.aggregatorid === 'COUNT') {
+
+ if (col.expression.columnid === '*') {
+ return pre + "g['" + colas + "']++;" + post;
+ } else {
+ return (
+ pre +
+ 'if(typeof ' +
+ colexp +
+ '!="undefined") g[\'' +
+ colas +
+ "']++;" +
+ post
+ );
+ }
+ } else if (col.aggregatorid === 'ARRAY') {
+ return pre + "g['" + colas + "'].push(" + colexp + ');' + post;
+ } else if (col.aggregatorid === 'MIN') {
+ return (
+ pre +
+ "g['" +
+ colas +
+ "']=Math.min(g['" +
+ colas +
+ "']," +
+ colexp +
+ ');' +
+ post
+ );
+ } else if (col.aggregatorid === 'MAX') {
+ return (
+ pre +
+ "g['" +
+ colas +
+ "']=Math.max(g['" +
+ colas +
+ "']," +
+ colexp +
+ ');' +
+ post
+ );
+ } else if (col.aggregatorid === 'FIRST') {
+ return '';
+ } else if (col.aggregatorid === 'LAST') {
+ return pre + "g['" + colas + "']=" + colexp + ';' + post;
+ } else if (col.aggregatorid === 'AVG') {
+ return (
+ '' +
+ pre +
+ "g['_SUM_" +
+ colas +
+ "']+=(y=" +
+ colexp +
+ ')||0;' +
+ "g['_COUNT_" +
+ colas +
+ '\']+=(typeof y!="undefined")?1:0;' +
+ "g['" +
+ colas +
+ "']=g['_SUM_" +
+ colas +
+ "']/g['_COUNT_" +
+ colas +
+ "'];" +
+ post
+ );
+ // }
+ // else if(col.aggregatorid == 'AVG') { srg.push(colas+':0'); }
+ } else if (col.aggregatorid === 'AGGR') {
+ return (
+ '' +
+ pre +
+ "g['" +
+ colas +
+ "']=" +
+ col.expression.toJS('g', -1) +
+ ';' +
+ post
+ );
+ } else if (col.aggregatorid === 'REDUCE') {
+ return (
+ '' +
+ pre +
+ "g['" +
+ colas +
+ "']=alasql.aggr." +
+ col.funcid +
+ '(' +
+ colexp +
+ ",g['" +
+ colas +
+ "'],2);" +
+ post
+ );
+ }
+
+ return '';
+ }
+
+ return '';
+ })
+ .join('');
+
+ // s += selectFields.map(function(f){
+
+ // if(f.constructor.name == 'LiteralValue') return '';
+ // if (f.field instanceof SQLParser.nodes.FunctionValue
+ // && (f.field.name.toUpperCase() == 'SUM' || f.field.name.toUpperCase() == 'COUNT')) {
+ // return 'group.'+f.name.value+'=+(+group.'+f.name.value+'||0)+'+f.field.arguments[0].toJS('rec','')+';'; //f.field.arguments[0].toJS();
+ // return 'group.'+f.name.value+'+='+f.field.arguments[0].toJS('rec','')+';'; //f.field.arguments[0].toJS();
+ // return 'group.'+f.name.value+'+=rec.'+f.name.value+';'; //f.field.arguments[0].toJS();
+ // };
+ // return '';
+ // }).join('');
+
+ // s += ' group.amt += rec.emplid;';
+ // s += 'group.count++;';
+ s += '}';
+ });
+
+ return new Function('p,params,alasql', 'var y;' + s);
+};
+
+/*
+//
+// Select compiler part for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// yy.Select.prototype.compileSources = function(query) {
+
+// };
+
+function compileSelectStar(query, alias, joinstar) {
+
+ var sp = '',
+ ss = [];
+ // if(!alias) {
+ // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
+ // } else {
+
+ // TODO move this out of this function
+ query.ixsources = {};
+ query.sources.forEach(function(source) {
+ query.ixsources[source.alias] = source;
+ });
+
+ // Fixed
+ var columns;
+ if (query.ixsources[alias]) {
+ var columns = query.ixsources[alias].columns;
+ }
+
+ // if(columns.length == 0 && query.aliases[alias].tableid) {
+ // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
+ // };
+
+ // Check if this is a Table or other
+ if (joinstar && alasql.options.joinstar == 'json') {
+ sp += "r['" + alias + "']={};";
+ }
+
+ if (columns && columns.length > 0) {
+ columns.forEach(function(tcol) {
+ if (joinstar && alasql.options.joinstar == 'underscore') {
+ ss.push(
+ "'" +
+ alias +
+ '_' +
+ tcol.columnid +
+ "':p['" +
+ alias +
+ "']['" +
+ tcol.columnid +
+ "']"
+ );
+ } else if (joinstar && alasql.options.joinstar == 'json') {
+ // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
+ sp +=
+ "r['" +
+ alias +
+ "']['" +
+ tcol.columnid +
+ "']=p['" +
+ alias +
+ "']['" +
+ tcol.columnid +
+ "'];";
+ } else {
+ ss.push("'" + tcol.columnid + "':p['" + alias + "']['" + tcol.columnid + "']");
+ }
+
+ query.selectColumns[escapeq(tcol.columnid)] = true;
+
+ var coldef = {
+ columnid: tcol.columnid,
+ dbtypeid: tcol.dbtypeid,
+ dbsize: tcol.dbsize,
+ dbprecision: tcol.dbprecision,
+ dbenum: tcol.dbenum,
+ };
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ });
+
+ } else {
+
+ // if column not exist, then copy all
+ sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
+
+ query.dirtyColumns = true;
+ }
+ // }
+
+ return {s: ss.join(','), sp: sp};
+}
+
+yy.Select.prototype.compileSelect1 = function(query, params) {
+ var self = this;
+ query.columns = [];
+ query.xcolumns = {};
+ query.selectColumns = {};
+ query.dirtyColumns = false;
+ var s = 'var r={';
+ var sp = '';
+ var ss = [];
+
+ this.columns.forEach(function(col) {
+
+ if (col instanceof yy.Column) {
+ if (col.columnid === '*') {
+ if (col.func) {
+ sp +=
+ "r=params['" +
+ col.param +
+ "'](p['" +
+ query.sources[0].alias +
+ "'],p,params,alasql);";
+ } else if (col.tableid) {
+ //Copy all
+ var ret = compileSelectStar(query, col.tableid, false);
+ if (ret.s) {
+ ss = ss.concat(ret.s);
+ }
+ sp += ret.sp;
+ } else {
+
+ for (var alias in query.aliases) {
+ var ret = compileSelectStar(query, alias, true); //query.aliases[alias].tableid);
+ if (ret.s) {
+ ss = ss.concat(ret.s);
+ }
+ sp += ret.sp;
+ }
+ // TODO Remove these lines
+ // In case of no information
+ // sp += 'for(var k1 in p){var w=p[k1];'+
+ // 'for(k2 in w) {r[k2]=w[k2]}}'
+ }
+ } else {
+ // If field, otherwise - expression
+ var tbid = col.tableid;
+
+ var dbid =
+ col.databaseid || query.sources[0].databaseid || query.database.databaseid;
+ if (!tbid) tbid = query.defcols[col.columnid];
+ if (!tbid) tbid = query.defaultTableid;
+ if (col.columnid !== '_') {
+ if (
+ false &&
+ tbid &&
+ !query.defcols['.'][col.tableid] &&
+ !query.defcols[col.columnid]
+ ) {
+ ss.push(
+ "'" +
+ escapeq(col.as || col.columnid) +
+ "':p['" +
+ query.defaultTableid +
+ "']['" +
+ col.tableid +
+ "']['" +
+ col.columnid +
+ "']"
+ );
+ } else {
+ // workaround for multisheet xlsx export with custom COLUMNS
+ var isMultisheetParam =
+ params &&
+ params.length > 1 &&
+ Array.isArray(params[0]) &&
+ params[0].length >= 1 &&
+ params[0][0].hasOwnProperty('sheetid');
+ if (isMultisheetParam) {
+ sp =
+ 'var r={};var w=p["' +
+ tbid +
+ '"];' +
+ 'var cols=[' +
+ self.columns
+ .map(function(col) {
+ return "'" + col.columnid + "'";
+ })
+ .join(',') +
+ '];var colas=[' +
+ self.columns
+ .map(function(col) {
+ return "'" + (col.as || col.columnid) + "'";
+ })
+ .join(',') +
+ '];' +
+ "for (var i=0;i 0) {
+
+ var tcol = xcolumns[col.columnid];
+
+ if (undefined === tcol) {
+ throw new Error('Column does not exist: ' + col.columnid);
+ }
+
+ var coldef = {
+ columnid: col.as || col.columnid,
+ dbtypeid: tcol.dbtypeid,
+ dbsize: tcol.dbsize,
+ dbpecision: tcol.dbprecision,
+ dbenum: tcol.dbenum,
+ };
+
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ } else {
+ var coldef = {
+ columnid: col.as || col.columnid,
+ // dbtypeid:tcol.dbtypeid,
+ // dbsize:tcol.dbsize,
+ // dbpecision:tcol.dbprecision,
+ // dbenum: tcol.dbenum,
+ };
+
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+
+ query.dirtyColumns = true;
+ }
+ } else {
+ var coldef = {
+ columnid: col.as || col.columnid,
+ // dbtypeid:tcol.dbtypeid,
+ // dbsize:tcol.dbsize,
+ // dbpecision:tcol.dbprecision,
+ // dbenum: tcol.dbenum,
+ };
+
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ // This is a subquery?
+ // throw new Error('There is now such table \''+col.tableid+'\'');
+ }
+ }
+ } else if (col instanceof yy.AggrValue) {
+ if (!self.group) {
+ // self.group=[new yy.Column({columnid:'q',as:'q' })];
+ self.group = [''];
+ }
+ if (!col.as) {
+ col.as = escapeq(col.toString());
+ }
+
+ if (
+ col.aggregatorid === 'SUM' ||
+ col.aggregatorid === 'MAX' ||
+ col.aggregatorid === 'MIN' ||
+ col.aggregatorid === 'FIRST' ||
+ col.aggregatorid === 'LAST' ||
+ col.aggregatorid === 'AVG' ||
+ col.aggregatorid === 'ARRAY' ||
+ col.aggregatorid === 'REDUCE'
+ ) {
+ ss.push(
+ "'" +
+ escapeq(col.as) +
+ "':" +
+ n2u(col.expression.toJS('p', query.defaultTableid, query.defcols))
+ );
+ } else if (col.aggregatorid === 'COUNT') {
+ ss.push("'" + escapeq(col.as) + "':1");
+ // Nothing
+ }
+ // todo: confirm that no default action must be implemented
+
+ // query.selectColumns[col.aggregatorid+'('+escapeq(col.expression.toString())+')'] = thtd;
+
+ var coldef = {
+ columnid: col.as || col.columnid || col.toString(),
+ // dbtypeid:tcol.dbtypeid,
+ // dbsize:tcol.dbsize,
+ // dbpecision:tcol.dbprecision,
+ // dbenum: tcol.dbenum,
+ };
+
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+
+ // else if (col.aggregatorid == 'MAX') {
+ // ss.push((col.as || col.columnid)+':'+col.toJS("p.",query.defaultTableid))
+ // } else if (col.aggregatorid == 'MIN') {
+ // ss.push((col.as || col.columnid)+':'+col.toJS("p.",query.defaultTableid))
+ // }
+ } else {
+
+ ss.push(
+ "'" +
+ escapeq(col.as || col.columnid || col.toString()) +
+ "':" +
+ n2u(col.toJS('p', query.defaultTableid, query.defcols))
+ );
+ // ss.push('\''+escapeq(col.toString())+'\':'+col.toJS("p",query.defaultTableid));
+ //if(col instanceof yy.Expression) {
+ query.selectColumns[escapeq(col.as || col.columnid || col.toString())] = true;
+
+ var coldef = {
+ columnid: col.as || col.columnid || col.toString(),
+ // dbtypeid:tcol.dbtypeid,
+ // dbsize:tcol.dbsize,
+ // dbpecision:tcol.dbprecision,
+ // dbenum: tcol.dbenum,
+ };
+
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ }
+ });
+ s += ss.join(',') + '};' + sp;
+ return s;
+
+};
+yy.Select.prototype.compileSelect2 = function(query) {
+ var s = query.selectfns;
+ if (this.orderColumns && this.orderColumns.length > 0) {
+ this.orderColumns.forEach(function(v, idx) {
+ var key = '$$$' + idx;
+ if (v instanceof yy.Column && query.xcolumns[v.columnid]) {
+ s += "r['" + key + "']=r['" + v.columnid + "'];";
+ } else {
+ s += "r['" + key + "']=" + v.toJS('p', query.defaultTableid, query.defcols) + ';';
+ }
+ query.removeKeys.push(key);
+ });
+ }
+
+ return new Function('p,params,alasql', 'var y;' + s + 'return r');
+};
+
+yy.Select.prototype.compileSelectGroup0 = function(query) {
+ var self = this;
+ self.columns.forEach(function(col, idx) {
+ if (!(col instanceof yy.Column && col.columnid === '*')) {
+ var colas;
+ // = col.as;
+ if (col instanceof yy.Column) {
+ colas = escapeq(col.columnid);
+ } else {
+ colas = escapeq(col.toString(true));
+
+ }
+ for (var i = 0; i < idx; i++) {
+ if (colas === self.columns[i].nick) {
+ colas = self.columns[i].nick + ':' + idx;
+ break;
+ }
+ }
+ // }
+ col.nick = colas;
+ if (
+ col.funcid &&
+ (col.funcid.toUpperCase() === 'ROWNUM' || col.funcid.toUpperCase() === 'ROW_NUMBER')
+ ) {
+ query.rownums.push(col.as);
+ }
+
+ // }
+ } else {
+ query.groupStar = col.tableid || 'default';
+ }
+ });
+
+ this.columns.forEach(function(col) {
+ if (col.findAggregator) {
+ col.findAggregator(query);
+ }
+ });
+
+ if (this.having) {
+ if (this.having.findAggregator) {
+ this.having.findAggregator(query);
+ }
+ }
+};
+
+yy.Select.prototype.compileSelectGroup1 = function(query) {
+ var self = this;
+ var s = 'var r = {};';
+
+ self.columns.forEach(function(col) {
+
+ if (col instanceof yy.Column && col.columnid === '*') {
+ // s += 'for(var k in g){r[k]=g[k]};';
+ // s += 'for(var k in this.query.groupColumns){r[k]=g[this.query.groupColumns[k]]};';
+
+ s += 'for(var k in g) {r[k]=g[k]};';
+ return '';
+
+ } else {
+ // var colas = col.as;
+ var colas = col.as;
+ if (colas === undefined) {
+ if (col instanceof yy.Column) {
+ colas = escapeq(col.columnid);
+ } else {
+ colas = col.nick;
+ }
+ }
+ query.groupColumns[colas] = col.nick;
+
+ // if(col.as) {
+ s += "r['" + colas + "']=";
+ // // } else {
+ // // s += 'r[\''+escapeq()+'\']=';
+ // // };
+ // // s += ';';
+
+ s += n2u(col.toJS('g', '')) + ';';
+
+ for (var i = 0; i < query.removeKeys.length; i++) {
+ // THis part should be intellectual
+ if (query.removeKeys[i] === colas) {
+ query.removeKeys.splice(i, 1);
+ break;
+ }
+ }
+ }
+ });
+ // return new Function('g,params,alasql',s+'return r');
+ return s;
+};
+
+yy.Select.prototype.compileSelectGroup2 = function(query) {
+ var self = this;
+ var s = query.selectgfns;
+ self.columns.forEach(function(col) {
+
+ if (query.ingroup.indexOf(col.nick) > -1) {
+ s += "r['" + (col.as || col.nick) + "']=g['" + col.nick + "'];";
+ }
+ });
+
+ if (this.orderColumns && this.orderColumns.length > 0) {
+ this.orderColumns.forEach(function(v, idx) {
+
+ var key = '$$$' + idx;
+
+ if (v instanceof yy.Column && query.groupColumns[v.columnid]) {
+ s += "r['" + key + "']=r['" + v.columnid + "'];";
+ } else {
+ s += "r['" + key + "']=" + v.toJS('g', '') + ';';
+ }
+ query.removeKeys.push(key);
+ });
+ }
+
+ return new Function('g,params,alasql', 'var y;' + s + 'return r');
+};
+
+// SELECY * REMOVE [COLUMNS] col-list, LIKE ''
+yy.Select.prototype.compileRemoveColumns = function(query) {
+ var self = this;
+ if (typeof this.removecolumns !== 'undefined') {
+ query.removeKeys = query.removeKeys.concat(
+ this.removecolumns
+ .filter(function(column) {
+ return typeof column.like === 'undefined';
+ })
+ .map(function(column) {
+ return column.columnid;
+ })
+ );
+
+ query.removeLikeKeys = this.removecolumns
+ .filter(function(column) {
+ return typeof column.like !== 'undefined';
+ })
+ .map(function(column) {
+ // return new RegExp((column.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g');
+ return column.like.value;
+ });
+ }
+};
+
+/* global yy */
+
+yy.Select.prototype.compileHaving = function(query) {
+ if (this.having) {
+ var s = this.having.toJS('g', -1);
+ query.havingfns = s;
+
+ return new Function('g,params,alasql', 'var y;return ' + s);
+ }
+
+ return function() {
+ return true;
+ };
+};
+
+yy.Select.prototype.compileOrder = function(query) {
+ var self = this;
+ self.orderColumns = [];
+ if (this.order) {
+
+ if (
+ this.order &&
+ this.order.length == 1 &&
+ this.order[0].expression &&
+ typeof this.order[0].expression == 'function'
+ ) {
+
+ var func = this.order[0].expression;
+
+ return function(a, b) {
+ var ra = func(a),
+ rb = func(b);
+ if (ra > rb) return 1;
+ if (ra == rb) return 0;
+ return -1;
+ };
+ }
+
+ var s = '';
+ var sk = '';
+ this.order.forEach(function(ord, idx) {
+
+ if (ord.expression instanceof yy.NumValue) {
+ var v = self.columns[ord.expression.value - 1];
+ } else {
+ var v = ord.expression;
+ }
+ self.orderColumns.push(v);
+
+ var key = '$$$' + idx;
+
+ // Date conversion
+ var dg = '';
+ //if(alasql.options.valueof)
+ if (ord.expression instanceof yy.Column) {
+ var columnid = ord.expression.columnid;
+ if (query.xcolumns[columnid]) {
+ var dbtypeid = query.xcolumns[columnid].dbtypeid;
+ if (dbtypeid == 'DATE' || dbtypeid == 'DATETIME' || dbtypeid == 'DATETIME2')
+ dg = '.valueOf()';
+ // TODO Add other types mapping
+ } else {
+ if (alasql.options.valueof) dg = '.valueOf()'; // TODO Check
+ }
+ // dg = '.valueOf()';
+ }
+ // COLLATE NOCASE
+ if (ord.nocase) dg += '.toUpperCase()';
+ s +=
+ "if((a['" +
+ key +
+ "']||'')" +
+ dg +
+ (ord.direction == 'ASC' ? '>' : '<') +
+ "(b['" +
+ key +
+ "']||'')" +
+ dg +
+ ')return 1;';
+ s += "if((a['" + key + "']||'')" + dg + "==(b['" + key + "']||'')" + dg + '){';
+
+ /*
+if(false) {
+
+ if(ord.expression instanceof yy.NumValue) {
+ ord.expression = self.columns[ord.expression.value-1];
+
+ ord.expression = new yy.Column({columnid:ord.expression.nick});
+ };
+
+ if(ord.expression instanceof yy.Column) {
+ var columnid = ord.expression.columnid;
+ if(query.xcolumns[columnid]) {
+ var dbtypeid = query.xcolumns[columnid].dbtypeid;
+ if( dbtypeid == 'DATE' || dbtypeid == 'DATETIME' || dbtypeid == 'DATETIME2') dg = '.valueOf()';
+ // TODO Add other types mapping
+ } else {
+ if(alasql.options.valueof) dg = '.valueOf()'; // TODO Check
+ }
+ // COLLATE NOCASE
+ if(ord.nocase) dg += '.toUpperCase()';
+
+ s += 'if((a[\''+columnid+"']||'')"+dg+(ord.direction == 'ASC'?'>':'<')+'(b[\''+columnid+"']||'')"+dg+')return 1;';
+ s += 'if((a[\''+columnid+"']||'')"+dg+'==(b[\''+columnid+"']||'')"+dg+'){';
+
+ } else {
+ dg = '.valueOf()';
+ // COLLATE NOCASE
+ if(ord.nocase) dg += '.toUpperCase()';
+ s += 'if(('+ord.toJS('a','')+"||'')"+dg+(ord.direction == 'ASC'?'>(':'<(')+ord.toJS('b','')+"||'')"+dg+')return 1;';
+ s += 'if(('+ord.toJS('a','')+"||'')"+dg+'==('+ord.toJS('b','')+"||'')"+dg+'){';
+ }
+
+ // TODO Add date comparision
+
+}
+*/
+ sk += '}';
+ });
+ s += 'return 0;';
+ s += sk + 'return -1';
+ query.orderfns = s;
+
+ return new Function('a,b', 'var y;' + s);
+ }
+};
+
+// Pivot functions
+/**
+ Compile Pivot functions
+ @param {object} query Source query
+ @return {function} Pivoting functions
+*/
+yy.Select.prototype.compilePivot = function(query) {
+ var self = this;
+ /** @type {string} Main pivoting column */
+
+ var columnid = self.pivot.columnid;
+ var exprcolid = self.pivot.expr.expression.columnid;
+ var aggr = self.pivot.expr.aggregatorid;
+ var inlist = self.pivot.inlist;
+
+ if (inlist) {
+ inlist = inlist.map(function(l) {
+ return l.expr.columnid;
+ });
+ }
+
+ // Function for PIVOT post production
+ return function() {
+ var query = this;
+ var cols = query.columns
+ .filter(function(col) {
+ return col.columnid != columnid && col.columnid != exprcolid;
+ })
+ .map(function(col) {
+ return col.columnid;
+ });
+
+ var newcols = [];
+ var gnewcols = {};
+ var gr = {};
+ var ga = {};
+ var data = [];
+ query.data.forEach(function(d) {
+ if (!inlist || inlist.indexOf(d[columnid]) > -1) {
+ var gx = cols
+ .map(function(colid) {
+ return d[colid];
+ })
+ .join('`');
+ var g = gr[gx];
+ if (!g) {
+ g = {};
+ gr[gx] = g;
+ data.push(g);
+ cols.forEach(function(colid) {
+ g[colid] = d[colid];
+ });
+ }
+
+ if (!ga[gx]) {
+ ga[gx] = {};
+ }
+
+ if (ga[gx][d[columnid]]) {
+ ga[gx][d[columnid]]++;
+ } else {
+ ga[gx][d[columnid]] = 1;
+ }
+
+ if (!gnewcols[d[columnid]]) {
+ gnewcols[d[columnid]] = true;
+ newcols.push(d[columnid]);
+ }
+
+ if (aggr == 'SUM' || aggr == 'AVG') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = 0;
+ g[d[columnid]] += d[exprcolid];
+ } else if (aggr == 'COUNT') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = 0;
+ g[d[columnid]]++;
+ } else if (aggr == 'MIN') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = Infinity;
+ if (d[exprcolid] < g[d[columnid]]) g[d[columnid]] = d[exprcolid];
+ } else if (aggr == 'MAX') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = -Infinity;
+ if (d[exprcolid] > g[d[columnid]]) g[d[columnid]] = d[exprcolid];
+ } else if (aggr == 'FIRST') {
+ if (typeof g[d[columnid]] == 'undefined') g[d[columnid]] = d[exprcolid];
+ } else if (aggr == 'LAST') {
+ g[d[columnid]] = d[exprcolid];
+ } else if (alasql.aggr[aggr]) {
+ // Custom aggregator
+ alasql.aggr[aggr](g[d[columnid]], d[exprcolid]);
+ } else {
+ throw new Error('Wrong aggregator in PIVOT clause');
+ }
+ }
+ });
+
+ if (aggr == 'AVG') {
+ for (var gx in gr) {
+ var d = gr[gx];
+ for (var colid in d) {
+ if (cols.indexOf(colid) == -1 && colid != exprcolid) {
+ d[colid] = d[colid] / ga[gx][colid];
+ }
+ }
+ }
+ }
+
+ // columns
+ query.data = data;
+
+ if (inlist) newcols = inlist;
+
+ var ncol = query.columns.filter(function(col) {
+ return col.columnid == exprcolid;
+ })[0];
+ query.columns = query.columns.filter(function(col) {
+ return !(col.columnid == columnid || col.columnid == exprcolid);
+ });
+ newcols.forEach(function(colid) {
+ var nc = cloneDeep(ncol);
+ nc.columnid = colid;
+ query.columns.push(nc);
+ });
+ };
+};
+
+// var columnid = this.pivot.columnid;
+
+// return function(data){
+
+// if(false) {
+
+// }
+
+// if(false) {
+
+// }
+// };
+
+/**
+ Compile UNPIVOT clause
+ @param {object} query Query object
+ @return {function} Function for unpivoting
+*/
+yy.Select.prototype.compileUnpivot = function(query) {
+ var self = this;
+ var tocolumnid = self.unpivot.tocolumnid;
+ var forcolumnid = self.unpivot.forcolumnid;
+ var inlist = self.unpivot.inlist.map(function(l) {
+ return l.columnid;
+ });
+
+ return function() {
+ var data = [];
+
+ var xcols = query.columns
+ .map(function(col) {
+ return col.columnid;
+ })
+ .filter(function(colid) {
+ return inlist.indexOf(colid) == -1 && colid != forcolumnid && colid != tocolumnid;
+ });
+
+ query.data.forEach(function(d) {
+ inlist.forEach(function(colid) {
+ var nd = {};
+ xcols.forEach(function(xcolid) {
+ nd[xcolid] = d[xcolid];
+ });
+ nd[forcolumnid] = colid;
+ nd[tocolumnid] = d[colid];
+ data.push(nd);
+ });
+ });
+
+ query.data = data;
+
+ // });
+ };
+};
+
+/*
+//
+// ROLLUP(), CUBE(), GROUPING SETS() for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/**
+ Calculate ROLLUP() combination
+ */
+
+var rollup = function(a, query) {
+ var rr = [];
+ var mask = 0;
+ var glen = a.length;
+ for (var g = 0; g < glen + 1; g++) {
+ var ss = [];
+ for (var i = 0; i < glen; i++) {
+ if (a[i] instanceof yy.Column) {
+ a[i].nick = escapeq(a[i].columnid);
+
+ query.groupColumns[escapeq(a[i].columnid)] = a[i].nick;
+ var aaa = a[i].nick + '\t' + a[i].toJS('p', query.sources[0].alias, query.defcols);
+ } else {
+ query.groupColumns[escapeq(a[i].toString())] = escapeq(a[i].toString());
+ var aaa =
+ escapeq(a[i].toString()) +
+ '\t' +
+ a[i].toJS('p', query.sources[0].alias, query.defcols);
+ }
+
+ if (mask & (1 << i)) ss.push(aaa);
+ }
+ rr.push(ss);
+ mask = (mask << 1) + 1;
+ }
+ return rr;
+};
+
+/**
+ Calculate CUBE()
+ */
+var cube = function(a, query) {
+ var rr = [];
+ var glen = a.length;
+ var glenCube = 1 << glen;
+ for (var g = 0; g < glenCube; g++) {
+ var ss = [];
+ for (var i = 0; i < glen; i++) {
+ if (g & (1 << i))
+ //ss.push(a[i]);
+ //ss = cartes(ss,decartes(a[i]));
+
+ // var aaa = a[i].toString()+'\t'
+ // +a[i].toJS('p',query.sources[0].alias,query.defcols);
+
+ ss = ss.concat(decartes(a[i], query));
+ //
+ }
+ rr.push(ss);
+ }
+ return rr;
+};
+
+/**
+ GROUPING SETS()
+ */
+var groupingsets = function(a, query) {
+ return a.reduce(function(acc, d) {
+ acc = acc.concat(decartes(d, query));
+ return acc;
+ }, []);
+};
+
+/**
+ Cartesian production
+ */
+var cartes = function(a1, a2) {
+ var rrr = [];
+ for (var i1 = 0; i1 < a1.length; i1++) {
+ for (var i2 = 0; i2 < a2.length; i2++) {
+ rrr.push(a1[i1].concat(a2[i2]));
+ }
+ }
+ return rrr;
+};
+
+/**
+ Prepare groups function
+ */
+function decartes(gv, query) {
+
+ if (Array.isArray(gv)) {
+ var res = [[]];
+ for (var t = 0; t < gv.length; t++) {
+ if (gv[t] instanceof yy.Column) {
+
+ gv[t].nick = escapeq(gv[t].columnid);
+ query.groupColumns[gv[t].nick] = gv[t].nick;
+ res = res.map(function(r) {
+ return r.concat(
+ gv[t].nick + '\t' + gv[t].toJS('p', query.sources[0].alias, query.defcols)
+ );
+ });
+ // res = res.map(function(r){return r.concat(gv[t].columnid)});
+ } else if (gv[t] instanceof yy.FuncValue) {
+ query.groupColumns[escapeq(gv[t].toString())] = escapeq(gv[t].toString());
+ res = res.map(function(r) {
+ return r.concat(
+ escapeq(gv[t].toString()) +
+ '\t' +
+ gv[t].toJS('p', query.sources[0].alias, query.defcols)
+ );
+ });
+ // to be defined
+ } else if (gv[t] instanceof yy.GroupExpression) {
+ if (gv[t].type == 'ROLLUP') res = cartes(res, rollup(gv[t].group, query));
+ else if (gv[t].type == 'CUBE') res = cartes(res, cube(gv[t].group, query));
+ else if (gv[t].type == 'GROUPING SETS')
+ res = cartes(res, groupingsets(gv[t].group, query));
+ else throw new Error('Unknown grouping function');
+ } else if (gv[t] === '') {
+
+ res = [['1\t1']];
+ } else {
+ // if(gv[t])
+
+ res = res.map(function(r) {
+ query.groupColumns[escapeq(gv[t].toString())] = escapeq(gv[t].toString());
+ return r.concat(
+ escapeq(gv[t].toString()) +
+ '\t' +
+ gv[t].toJS('p', query.sources[0].alias, query.defcols)
+ );
+ });
+ // res = res.concat(gv[t]);
+ }
+
+ }
+ return res;
+ } else if (gv instanceof yy.FuncValue) {
+
+ query.groupColumns[escapeq(gv.toString())] = escapeq(gv.toString());
+ return [gv.toString() + '\t' + gv.toJS('p', query.sources[0].alias, query.defcols)];
+ } else if (gv instanceof yy.Column) {
+ gv.nick = escapeq(gv.columnid);
+ query.groupColumns[gv.nick] = gv.nick;
+ return [gv.nick + '\t' + gv.toJS('p', query.sources[0].alias, query.defcols)]; // Is this ever happened?
+ // } else if(gv instanceof yy.Expression) {
+ // return [gv.columnid]; // Is this ever happened?
+ } else {
+ query.groupColumns[escapeq(gv.toString())] = escapeq(gv.toString());
+ return [
+ escapeq(gv.toString()) + '\t' + gv.toJS('p', query.sources[0].alias, query.defcols),
+ ];
+ // throw new Error('Single argument in the group without array');
+ }
+
+}
+
+/*
+//
+// Select run-time part for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Select.prototype.compileDefCols = function(query, databaseid) {
+
+ var defcols = {'.': {}};
+ if (this.from) {
+ this.from.forEach(function(fr) {
+ defcols['.'][fr.as || fr.tableid] = true;
+ if (fr instanceof yy.Table) {
+ var alias = fr.as || fr.tableid;
+
+ var table = alasql.databases[fr.databaseid || databaseid].tables[fr.tableid];
+
+ if (undefined === table) {
+ throw new Error('Table does not exist: ' + fr.tableid);
+ }
+
+ if (table.columns) {
+ table.columns.forEach(function(col) {
+ if (defcols[col.columnid]) {
+ defcols[col.columnid] = '-'; // Ambigous
+ } else {
+ defcols[col.columnid] = alias;
+ }
+ });
+ }
+ } else if (fr instanceof yy.Select) {
+ } else if (fr instanceof yy.Search) {
+ } else if (fr instanceof yy.ParamValue) {
+ } else if (fr instanceof yy.VarValue) {
+ } else if (fr instanceof yy.FuncValue) {
+ } else if (fr instanceof yy.FromData) {
+ } else if (fr instanceof yy.Json) {
+ } else if (fr.inserted) {
+ } else {
+
+ throw new Error('Unknown type of FROM clause');
+ }
+ });
+ }
+
+ if (this.joins) {
+ this.joins.forEach(function(jn) {
+ defcols['.'][jn.as || jn.table.tableid] = true;
+
+ if (jn.table) {
+ var alias = jn.table.tableid;
+ if (jn.as) alias = jn.as;
+ var alias = jn.as || jn.table.tableid;
+ var table =
+ alasql.databases[jn.table.databaseid || databaseid].tables[jn.table.tableid];
+
+ if (table.columns) {
+ table.columns.forEach(function(col) {
+ if (defcols[col.columnid]) {
+ defcols[col.columnid] = '-'; // Ambigous
+ } else {
+ defcols[col.columnid] = alias;
+ }
+ });
+ }
+ } else if (jn.select) {
+ } else if (jn.param) {
+ } else if (jn.func) {
+ } else {
+ throw new Error('Unknown type of FROM clause');
+ }
+ });
+ }
+ // for(var k in defcols) {
+ // if(defcols[k] == '-') defcols[k] = undefined;
+ // }
+
+ return defcols;
+};
+
+/*
+//
+// UNION for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// SELECT UNION statement
+
+yy.Union = function(params) {
+ return yy.extend(this, params);
+};
+yy.Union.prototype.toString = function() {
+ return 'UNION';
+};
+
+yy.Union.prototype.compile = function(tableid) {
+ return null;
+};
+
+/*
+//
+// CROSS AND OUTER APPLY for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Apply = function(params) {
+ return yy.extend(this, params);
+};
+
+yy.Apply.prototype.toString = function() {
+ var s = this.applymode + ' APPLY (' + this.select.toString() + ')';
+
+ if (this.as) s += ' AS ' + this.as;
+
+ return s;
+};
+
+/*
+//
+// CROSS AND OUTER APPLY for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Over = function(params) {
+ return yy.extend(this, params);
+};
+yy.Over.prototype.toString = function() {
+ var s = 'OVER (';
+ if (this.partition) {
+ s += 'PARTITION BY ' + this.partition.toString();
+ if (this.order) s += ' ';
+ }
+ if (this.order) {
+ s += 'ORDER BY ' + this.order.toString();
+ }
+ s += ')';
+ return s;
+};
+
+/*
+//
+// Expressions for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/**
+ Expression statement ( = 2*2; )
+ @class
+ @param {object} params Initial parameters
+*/
+yy.ExpressionStatement = function(params) {
+ return yy.extend(this, params);
+};
+
+/**
+ Convert AST to string
+ @this ExpressionStatement
+ @return {string}
+*/
+yy.ExpressionStatement.prototype.toString = function() {
+ return this.expression.toString();
+};
+/**
+ Execute statement
+ @param {string} databaseid Database identificatro
+ @param {object} params Statement parameters
+ @param {statement-callback} cb Callback
+ @return {object} Result value
+*/
+yy.ExpressionStatement.prototype.execute = function(databaseid, params, cb) {
+ if (this.expression) {
+
+ alasql.precompile(this, databaseid, params); // Precompile queries
+ var exprfn = new Function(
+ 'params,alasql,p',
+ 'var y;return ' + this.expression.toJS('({})', '', null)
+ ).bind(this);
+ var res = exprfn(params, alasql);
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+ }
+};
+
+/**
+ Expression class
+ @class
+ @param {object} params Initial parameters
+*/
+
+yy.Expression = function(params) {
+ return yy.extend(this, params);
+};
+
+/**
+ Convert AST to string
+ @this ExpressionStatement
+ @return {string}
+*/
+yy.Expression.prototype.toString = function(dontas) {
+ var s = this.expression.toString(dontas);
+ if (this.order) {
+ s += ' ' + this.order.toString();
+ }
+ if (this.nocase) {
+ s += ' COLLATE NOCASE';
+ }
+ if (this.direction) {
+ s += ' ' + this.direction;
+ }
+ return s;
+};
+
+/**
+ Find aggregator in AST subtree
+ @this ExpressionStatement
+ @param {object} query Query object
+*/
+yy.Expression.prototype.findAggregator = function(query) {
+ if (this.expression.findAggregator) {
+ this.expression.findAggregator(query);
+ }
+};
+
+/**
+ Convert AST to JavaScript expression
+ @this ExpressionStatement
+ @param {string} context Context string, e.g. 'p','g', or 'x'
+ @param {string} tableid Default table name
+ @param {object} defcols Default columns dictionary
+ @return {string} JavaScript expression
+*/
+
+yy.Expression.prototype.toJS = function(context, tableid, defcols) {
+
+ if (this.expression.reduced) {
+ return 'true';
+ }
+ return this.expression.toJS(context, tableid, defcols);
+};
+
+/**
+ Compile AST to JavaScript expression
+ @this ExpressionStatement
+ @param {string} context Context string, e.g. 'p','g', or 'x'
+ @param {string} tableid Default table name
+ @param {object} defcols Default columns dictionary
+ @return {string} JavaScript expression
+*/
+
+yy.Expression.prototype.compile = function(context, tableid, defcols) {
+
+ if (this.reduced) {
+ return returnTrue();
+ }
+ return new Function('p', 'var y;return ' + this.toJS(context, tableid, defcols));
+};
+
+/**
+ JavaScript class
+ @class
+*/
+yy.JavaScript = function(params) {
+ return yy.extend(this, params);
+};
+yy.JavaScript.prototype.toString = function() {
+ var s = '``' + this.value + '``';
+ return s;
+};
+
+yy.JavaScript.prototype.toJS = function(/* context, tableid, defcols*/) {
+
+ return '(' + this.value + ')';
+};
+yy.JavaScript.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ var expr = new Function('params,alasql,p', this.value);
+ expr(params, alasql);
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
+
+/**
+ Literal class
+ @class
+ @example
+ MyVar, [My vairable], `MySQL variable`
+*/
+
+yy.Literal = function(params) {
+ return yy.extend(this, params);
+};
+yy.Literal.prototype.toString = function(dontas) {
+ var s = this.value;
+ if (this.value1) {
+ s = this.value1 + '.' + s;
+ }
+ if (this.alias && !dontas) s += ' AS ' + this.alias;
+ // else s = tableid+'.'+s;
+ return s;
+};
+
+/**
+ Join class
+ @class
+*/
+
+yy.Join = function(params) {
+ return yy.extend(this, params);
+};
+yy.Join.prototype.toString = function() {
+ var s = ' ';
+ if (this.joinmode) {
+ s += this.joinmode + ' ';
+ }
+ s += 'JOIN ' + this.table.toString();
+ return s;
+};
+
+// }
+
+/**
+ Table class
+ @class
+*/
+
+yy.Table = function(params) {
+ return yy.extend(this, params);
+};
+yy.Table.prototype.toString = function() {
+ var s = this.tableid;
+ // if(this.joinmode)
+ if (this.databaseid) {
+ s = this.databaseid + '.' + s;
+ }
+ return s;
+};
+
+/**
+ View class
+ @class
+*/
+
+yy.View = function(params) {
+ return yy.extend(this, params);
+};
+yy.View.prototype.toString = function() {
+ var s = this.viewid;
+ // if(this.joinmode)
+ if (this.databaseid) {
+ s = this.databaseid + '.' + s;
+ }
+ return s;
+};
+
+/**
+ Binary operation class
+ @class
+*/
+yy.Op = function(params) {
+ return yy.extend(this, params);
+};
+yy.Op.prototype.toString = function() {
+ if (this.op === 'IN' || this.op === 'NOT IN') {
+ return this.left.toString() + ' ' + this.op + ' (' + this.right.toString() + ')';
+ }
+ if (this.allsome) {
+ return (
+ this.left.toString() +
+ ' ' +
+ this.op +
+ ' ' +
+ this.allsome +
+ ' (' +
+ this.right.toString() +
+ ')'
+ );
+ }
+ if (this.op === '->' || this.op === '!') {
+ var s = this.left.toString() + this.op;
+
+ if (typeof this.right !== 'string' && typeof this.right !== 'number') {
+ s += '(';
+ }
+
+ s += this.right.toString();
+
+ if (typeof this.right !== 'string' && typeof this.right !== 'number') {
+ s += ')';
+ }
+
+ return s;
+ }
+ return (
+ this.left.toString() +
+ ' ' +
+ this.op +
+ ' ' +
+ (this.allsome ? this.allsome + ' ' : '') +
+ this.right.toString()
+ );
+};
+
+yy.Op.prototype.findAggregator = function(query) {
+
+ if (this.left && this.left.findAggregator) {
+ this.left.findAggregator(query);
+ }
+ // Do not go in > ALL
+ if (this.right && this.right.findAggregator && !this.allsome) {
+ this.right.findAggregator(query);
+ }
+};
+
+yy.Op.prototype.toType = function(tableid) {
+ if (['-', '*', '/', '%', '^'].indexOf(this.op) > -1) {
+ return 'number';
+ }
+ if (['||'].indexOf(this.op) > -1) {
+ return 'string';
+ }
+ if (this.op === '+') {
+ if (this.left.toType(tableid) === 'string' || this.right.toType(tableid) === 'string') {
+ return 'string';
+ }
+ if (this.left.toType(tableid) === 'number' || this.right.toType(tableid) === 'number') {
+ return 'number';
+ }
+ }
+
+ if (
+ [
+ 'AND',
+ 'OR',
+ 'NOT',
+ '=',
+ '==',
+ '===',
+ '!=',
+ '!==',
+ '!===',
+ '>',
+ '>=',
+ '<',
+ '<=',
+ 'IN',
+ 'NOT IN',
+ 'LIKE',
+ 'NOT LIKE',
+ 'REGEXP',
+ 'GLOB',
+ ].indexOf(this.op) > -1
+ ) {
+ return 'boolean';
+ }
+
+ if (
+ this.op === 'BETWEEN' ||
+ this.op === 'NOT BETWEEN' ||
+ this.op === 'IS NULL' ||
+ this.op === 'IS NOT NULL'
+ ) {
+ return 'boolean';
+ }
+
+ if (this.allsome) {
+ return 'boolean';
+ }
+
+ if (!this.op) {
+ return this.left.toType();
+ }
+
+ return 'unknown';
+};
+
+yy.Op.prototype.toJS = function(context, tableid, defcols) {
+
+ var s;
+ var refs = [];
+ var op = this.op;
+ var _this = this;
+ //var leftJS = function(){return _this.left.toJS(context,tableid, defcols)};
+ //var rightJS = function(){return _this.right.toJS(context,tableid, defcols)};
+ var accessedLeft = false,
+ accessedRight = false;
+ var ref = function(expr) {
+ if (expr.toJS) {
+ expr = expr.toJS(context, tableid, defcols);
+ }
+ var i = refs.push(expr) - 1;
+ return 'y[' + i + ']';
+ };
+ var leftJS = function() {
+ return ref(_this.left);
+ };
+ var rightJS = function() {
+ return ref(_this.right);
+ };
+
+ if (this.op === '=') {
+ op = '===';
+ } else if (this.op === '<>') {
+ op = '!=';
+ } else if (this.op === 'OR') {
+ op = '||';
+ }
+
+ // Arrow operator
+ if (this.op === '->') {
+ // Expression to prevent error if object is empty (#344)
+ var ljs = '(' + leftJS() + '||{})';
+
+ if (typeof this.right === 'string') {
+ s = ljs + '["' + this.right + '"]';
+ } else if (typeof this.right === 'number') {
+ s = ljs + '[' + this.right + ']';
+ } else if (this.right instanceof yy.FuncValue) {
+ var ss = [];
+ if (!(!this.right.args || 0 === this.right.args.length)) {
+ var ss = this.right.args.map(ref);
+ }
+ s = '' + ljs + "['" + this.right.funcid + "'](" + ss.join(',') + ')';
+ } else {
+ s = '' + ljs + '[' + rightJS() + ']';
+ }
+ }
+
+ if (this.op === '!') {
+ if (typeof this.right === 'string') {
+ s =
+ '' +
+ 'alasql.databases[alasql.useid].objects[' +
+ leftJS() +
+ ']["' +
+ this.right +
+ '"]';
+ }
+ // TODO - add other cases
+ }
+
+ if (this.op === 'IS') {
+ s =
+ '' +
+ '(' +
+ '(' +
+ leftJS() +
+ '==null)' + // Cant be ===
+ ' === ' +
+ '(' +
+ rightJS() +
+ '==null)' + // Cant be ===
+ ')';
+ }
+
+ if (this.op === '==') {
+ s = '' + 'alasql.utils.deepEqual(' + leftJS() + ',' + rightJS() + ')';
+ }
+
+ if (this.op === '===' || this.op === '!===') {
+ s =
+ '' +
+ '(' +
+ (this.op === '!===' ? '!' : '') +
+ '(' +
+ '(' +
+ leftJS() +
+ ').valueOf()' +
+ '===' +
+ '(' +
+ rightJS() +
+ ').valueOf()' +
+ ')' +
+ ')';
+ }
+
+ if (this.op === '!==') {
+ s = '' + '(!alasql.utils.deepEqual(' + leftJS() + ',' + rightJS() + '))';
+ }
+ if (this.op === '||') {
+ s = '' + "(''+(" + leftJS() + "||'')+(" + rightJS() + '||""))';
+ }
+ if (this.op === 'LIKE' || this.op === 'NOT LIKE') {
+ var s =
+ '(' +
+ (this.op === 'NOT LIKE' ? '!' : '') +
+ 'alasql.utils.like(' +
+ rightJS() +
+ ',' +
+ leftJS();
+ if (this.escape) {
+ s += ',' + ref(this.escape);
+ }
+ s += '))';
+ }
+ if (this.op === 'REGEXP') {
+ s = 'alasql.stdfn.REGEXP_LIKE(' + leftJS() + ',' + rightJS() + ')';
+ }
+ if (this.op === 'GLOB') {
+ s = 'alasql.utils.glob(' + leftJS() + ',' + rightJS() + ')';
+ }
+
+ if (this.op === 'BETWEEN' || this.op === 'NOT BETWEEN') {
+ var left = leftJS();
+ s =
+ '' +
+ '(' +
+ (this.op === 'NOT BETWEEN' ? '!' : '') +
+ '(' +
+ '(' +
+ ref(this.right1) +
+ '<=' +
+ left +
+ ') && (' +
+ left +
+ '<=' +
+ ref(this.right2) +
+ ')' +
+ ')' +
+ ')';
+
+ }
+
+ if (this.op === 'IN') {
+ if (this.right instanceof yy.Select) {
+ s = '(';
+ // s += 'this.query.queriesdata['+this.queriesidx+']';
+ // s += 'alasql.utils.flatArray(this.query.queriesfn['+(this.queriesidx)+'](params,null,context))';
+ s +=
+ 'alasql.utils.flatArray(this.queriesfn[' +
+ this.queriesidx +
+ '](params,null,' +
+ context +
+ '))';
+ s += '.indexOf(';
+ s += leftJS() + ')>-1)';
+ } else if (Array.isArray(this.right)) {
+ // if(this.right.length == 0) return 'false';
+ s = '([' + this.right.map(ref).join(',') + '].indexOf(' + leftJS() + ')>-1)';
+
+ } else {
+ s = '(' + rightJS() + '.indexOf(' + leftJS() + ')>-1)';
+
+ // } else {
+ // throw new Error('Wrong IN operator without SELECT part');
+ }
+ }
+
+ if (this.op === 'NOT IN') {
+ if (this.right instanceof yy.Select) {
+ s = '(';
+ //this.query.queriesdata['+this.queriesidx+']
+ // s += 'alasql.utils.flatArray(this.query.queriesfn['+(this.queriesidx)+'](params,null,p))';
+ s += 'alasql.utils.flatArray(this.queriesfn[' + this.queriesidx + '](params,null,p))';
+ s += '.indexOf(';
+ s += leftJS() + ')<0)';
+ } else if (Array.isArray(this.right)) {
+ // if(this.right.length == 0) return 'true';
+ s = '([' + this.right.map(ref).join(',') + '].indexOf(';
+ s += leftJS() + ')<0)';
+ } else {
+ s = '(' + rightJS() + '.indexOf(';
+ s += leftJS() + ')==-1)';
+
+ // throw new Error('Wrong NOT IN operator without SELECT part');
+ }
+ }
+
+ if (this.allsome === 'ALL') {
+ var s;
+ if (this.right instanceof yy.Select) {
+ // var s = 'this.query.queriesdata['+this.queriesidx+']';
+ s =
+ 'alasql.utils.flatArray(this.query.queriesfn[' +
+ this.queriesidx +
+ '](params,null,p))';
+
+ s += '.every(function(b){return (';
+ s += leftJS() + ')' + op + 'b})';
+ } else if (Array.isArray(this.right)) {
+ s =
+ '' +
+ (this.right.length == 1
+ ? ref(this.right[0])
+ : '[' + this.right.map(ref).join(',') + ']');
+ s += '.every(function(b){return (';
+ s += leftJS() + ')' + op + 'b})';
+ } else {
+ throw new Error('NOT IN operator without SELECT');
+ }
+ }
+
+ if (this.allsome === 'SOME' || this.allsome === 'ANY') {
+ var s;
+ if (this.right instanceof yy.Select) {
+ // var s = 'this.query.queriesdata['+this.queriesidx+']';
+ s =
+ 'alasql.utils.flatArray(this.query.queriesfn[' +
+ this.queriesidx +
+ '](params,null,p))';
+ s += '.some(function(b){return (';
+ s += leftJS() + ')' + op + 'b})';
+ } else if (Array.isArray(this.right)) {
+ s =
+ '' +
+ (this.right.length == 1
+ ? ref(this.right[0])
+ : '[' + this.right.map(ref).join(',') + ']');
+ s += '.some(function(b){return (';
+ s += leftJS() + ')' + op + 'b})';
+ } else {
+ throw new Error('SOME/ANY operator without SELECT');
+ }
+ }
+
+ // Special case for AND optimization (if reduced)
+ if (this.op === 'AND') {
+ if (this.left.reduced) {
+ if (this.right.reduced) {
+ return 'true';
+ } else {
+ s = rightJS();
+ }
+ } else if (this.right.reduced) {
+ s = leftJS();
+ }
+
+ // Otherwise process as regular operation (see below)
+ op = '&&';
+ }
+
+ // if(this.op === '^') {
+ // // return 'Math.pow('
+ // // + leftJS()
+ // // + ','
+ // // + rightJS()
+ // // + ')';
+ // }
+
+ // Change names
+
+ var expr = s || '(' + leftJS() + op + rightJS() + ')';
+
+ var declareRefs = 'y=[(' + refs.join('), (') + ')]';
+
+ if (op === '&&' || op === '||' || op === 'IS' || op === 'IS NULL' || op === 'IS NOT NULL') {
+ return '(' + declareRefs + ', ' + expr + ')';
+ }
+
+ return (
+ '(' + declareRefs + ', ' + 'y.some(function(e){return e == null}) ? void 0 : ' + expr + ')'
+ );
+};
+
+yy.VarValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.VarValue.prototype.toString = function() {
+ return '@' + this.variable;
+};
+
+yy.VarValue.prototype.toType = function() {
+ return 'unknown';
+};
+
+yy.VarValue.prototype.toJS = function() {
+ return "alasql.vars['" + this.variable + "']";
+};
+
+yy.NumValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.NumValue.prototype.toString = function() {
+ return this.value.toString();
+};
+
+yy.NumValue.prototype.toType = function() {
+ return 'number';
+};
+
+yy.NumValue.prototype.toJS = function() {
+ return '' + this.value;
+};
+
+yy.StringValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.StringValue.prototype.toString = function() {
+ return "'" + this.value.toString() + "'";
+};
+
+yy.StringValue.prototype.toType = function() {
+ return 'string';
+};
+
+yy.StringValue.prototype.toJS = function() {
+
+ // return "'"+doubleqq(this.value)+"'";
+ return "'" + escapeq(this.value) + "'";
+};
+
+yy.DomainValueValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.DomainValueValue.prototype.toString = function() {
+ return 'VALUE';
+};
+
+yy.DomainValueValue.prototype.toType = function() {
+ return 'object';
+};
+
+yy.DomainValueValue.prototype.toJS = function(context, tableid, defcols) {
+
+ // return "'"+doubleqq(this.value)+"'";
+ return context;
+};
+
+yy.ArrayValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.ArrayValue.prototype.toString = function() {
+ return 'ARRAY[]';
+};
+
+yy.ArrayValue.prototype.toType = function() {
+ return 'object';
+};
+
+yy.ArrayValue.prototype.toJS = function(context, tableid, defcols) {
+
+ // return "'"+doubleqq(this.value)+"'";
+ return (
+ '[(' +
+ this.value
+ .map(function(el) {
+ return el.toJS(context, tableid, defcols);
+ })
+ .join('), (') +
+ ')]'
+ );
+};
+
+yy.LogicValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.LogicValue.prototype.toString = function() {
+ return this.value ? 'TRUE' : 'FALSE';
+};
+
+yy.LogicValue.prototype.toType = function() {
+ return 'boolean';
+};
+
+yy.LogicValue.prototype.toJS = function() {
+ return this.value ? 'true' : 'false';
+};
+
+yy.NullValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.NullValue.prototype.toString = function() {
+ return 'NULL';
+};
+yy.NullValue.prototype.toJS = function() {
+ return 'undefined';
+ // return 'undefined';
+};
+
+yy.ParamValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.ParamValue.prototype.toString = function() {
+ return '$' + this.param;
+};
+yy.ParamValue.prototype.toJS = function() {
+ if (typeof this.param === 'string') {
+ return "params['" + this.param + "']";
+ }
+
+ return 'params[' + this.param + ']';
+};
+
+yy.UniOp = function(params) {
+ return yy.extend(this, params);
+};
+yy.UniOp.prototype.toString = function() {
+ var s;
+ s = void 0;
+ if (this.op === '~') {
+ s = this.op + this.right.toString();
+ }
+ if (this.op === '-') {
+ s = this.op + this.right.toString();
+ }
+ if (this.op === '+') {
+ s = this.op + this.right.toString();
+ }
+ if (this.op === '#') {
+ s = this.op + this.right.toString();
+ }
+ if (this.op === 'NOT') {
+ s = this.op + '(' + this.right.toString() + ')';
+ }
+ if (this.op === null) {
+ s = '(' + this.right.toString() + ')';
+ }
+ if (!s) {
+ s = '(' + this.right.toString() + ')';
+ }
+ return s;
+};
+
+yy.UniOp.prototype.findAggregator = function(query) {
+ if (this.right.findAggregator) {
+ this.right.findAggregator(query);
+ }
+};
+
+yy.UniOp.prototype.toType = function() {
+ if (this.op === '-') {
+ return 'number';
+ }
+
+ if (this.op === '+') {
+ return 'number';
+ }
+
+ if (this.op === 'NOT') {
+ return 'boolean';
+ }
+
+ // Todo: implement default case
+};
+
+yy.UniOp.prototype.toJS = function(context, tableid, defcols) {
+ if (this.op === '~') {
+ return '(~(' + this.right.toJS(context, tableid, defcols) + '))';
+ }
+
+ if (this.op === '-') {
+ return '(-(' + this.right.toJS(context, tableid, defcols) + '))';
+ }
+
+ if (this.op === '+') {
+ return '(' + this.right.toJS(context, tableid, defcols) + ')';
+ }
+
+ if (this.op === 'NOT') {
+ return '!(' + this.right.toJS(context, tableid, defcols) + ')';
+ }
+
+ if (this.op === '#') {
+ if (this.right instanceof yy.Column) {
+ return "(alasql.databases[alasql.useid].objects['" + this.right.columnid + "'])";
+ } else {
+ return (
+ '(alasql.databases[alasql.useid].objects[' +
+ this.right.toJS(context, tableid, defcols) +
+ '])'
+ );
+ }
+ }
+
+ // Please avoid === here
+ if (this.op == null) {
+ // jshint ignore:line
+ return '(' + this.right.toJS(context, tableid, defcols) + ')';
+ }
+
+ // Todo: implement default case.
+};
+
+yy.Column = function(params) {
+ return yy.extend(this, params);
+};
+yy.Column.prototype.toString = function(dontas) {
+ var s;
+ if (this.columnid == +this.columnid) {
+ // jshint ignore:line
+ s = '[' + this.columnid + ']';
+ } else {
+ s = this.columnid;
+ }
+ if (this.tableid) {
+ if (+this.columnid === this.columnid) {
+ s = this.tableid + s;
+ } else {
+ s = this.tableid + '.' + s;
+ }
+ if (this.databaseid) {
+ s = this.databaseid + '.' + s;
+ }
+ }
+ if (this.alias && !dontas) s += ' AS ' + this.alias;
+ return s;
+};
+
+yy.Column.prototype.toJS = function(context, tableid, defcols) {
+
+ var s = '';
+ if (!this.tableid && tableid === '' && !defcols) {
+ if (this.columnid !== '_') {
+ s = context + "['" + this.columnid + "']";
+ } else {
+ if (context === 'g') {
+ s = "g['_']";
+ } else {
+ s = context;
+ }
+ }
+ } else {
+ if (context === 'g') {
+ // if(this.columnid == '_') {
+ // } else {
+ s = "g['" + this.nick + "']";
+ // }
+ } else if (this.tableid) {
+ if (this.columnid !== '_') {
+ // if() {
+ // s = context+'[\''+tableid + '\'][\''+this.tableid+'\'][\''+this.columnid+'\']';
+ // } else {
+ s = context + "['" + this.tableid + "']['" + this.columnid + "']";
+ // }
+ } else {
+ if (context === 'g') {
+ s = "g['_']";
+ } else {
+ s = context + "['" + this.tableid + "']";
+ }
+ }
+ } else if (defcols) {
+ var tbid = defcols[this.columnid];
+ if (tbid === '-') {
+ throw new Error(
+ 'Cannot resolve column "' +
+ this.columnid +
+ '" because it exists in two source tables'
+ );
+ } else if (tbid) {
+ if (this.columnid !== '_') {
+ s = context + "['" + tbid + "']['" + this.columnid + "']";
+ } else {
+ s = context + "['" + tbid + "']";
+ }
+
+ } else {
+ if (this.columnid !== '_') {
+ // if(defcols['.'][this.tableid]) {
+
+ // s = context+'[\''+tableid + '\'][\''+this.tableid + '\'][\''+this.columnid+'\']';
+ // } else {
+ s = context + "['" + (this.tableid || tableid) + "']['" + this.columnid + "']";
+ // }
+ } else {
+ s = context + "['" + (this.tableid || tableid) + "']";
+ }
+ }
+ } else if (tableid === -1) {
+ // if(this.columnid != '') {
+ s = context + "['" + this.columnid + "']";
+ // } else {
+ // s = context;
+ // }
+ } else {
+ if (this.columnid !== '_') {
+ s = context + "['" + (this.tableid || tableid) + "']['" + this.columnid + "']";
+ } else {
+ s = context + "['" + (this.tableid || tableid) + "']";
+ }
+ }
+ }
+
+ // console.trace(new Error());
+
+ return s;
+};
+
+yy.AggrValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.AggrValue.prototype.toString = function(dontas) {
+ var s = '';
+ if (this.aggregatorid === 'REDUCE') {
+ s += this.funcid + '(';
+ } else {
+ s += this.aggregatorid + '(';
+ }
+
+ if (this.distinct) {
+ s += 'DISTINCT ';
+ }
+
+ if (this.expression) {
+ s += this.expression.toString();
+ }
+
+ s += ')';
+
+ if (this.over) {
+ s += ' ' + this.over.toString();
+ }
+
+ if (this.alias && !dontas) s += ' AS ' + this.alias;
+ // if(this.alias) s += ' AS '+this.alias;
+ return s;
+};
+
+yy.AggrValue.prototype.findAggregator = function(query) {
+
+ // var colas = this.as || this.toString();
+
+ var colas = escapeq(this.toString()) + ':' + query.selectGroup.length;
+
+ // if(!query.selectColumns[colas]) {
+ // }
+
+ var found = false;
+
+ if (!found) {
+ if (!this.nick) {
+ this.nick = colas;
+ var found = false;
+ for (var i = 0; i < query.removeKeys.length; i++) {
+ if (query.removeKeys[i] === colas) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ query.removeKeys.push(colas);
+ }
+ }
+ query.selectGroup.push(this);
+ }
+
+ // this.reduced = true;
+ return;
+};
+
+yy.AggrValue.prototype.toType = function() {
+ if (
+ ['SUM', 'COUNT', 'AVG', 'MIN', 'MAX', 'AGGR', 'VAR', 'STDDEV'].indexOf(this.aggregatorid) >
+ -1
+ ) {
+ return 'number';
+ }
+
+ if (['ARRAY'].indexOf(this.aggregatorid) > -1) {
+ return 'array';
+ }
+
+ if (['FIRST', 'LAST'].indexOf(this.aggregatorid) > -1) {
+ return this.expression.toType();
+ }
+
+ // todo: implement default;
+};
+
+yy.AggrValue.prototype.toJS = function(/*context, tableid, defcols*/) {
+
+ var colas = this.nick;
+ if (colas === undefined) {
+ colas = this.toString();
+ }
+ return "g['" + colas + "']";
+};
+
+yy.OrderExpression = function(params) {
+ return yy.extend(this, params);
+};
+yy.OrderExpression.prototype.toString = yy.Expression.prototype.toString;
+
+yy.GroupExpression = function(params) {
+ return yy.extend(this, params);
+};
+yy.GroupExpression.prototype.toString = function() {
+ return this.type + '(' + this.group.toString() + ')';
+};
+
+// Alasql Linq library
+
+yy.FromData = function(params) {
+ return yy.extend(this, params);
+};
+yy.FromData.prototype.toString = function() {
+ if (this.data) return 'DATA(' + ((Math.random() * 10e15) | 0) + ')';
+ else return '?';
+};
+yy.FromData.prototype.toJS = function() {
+
+};
+
+yy.Select.prototype.exec = function(params, cb) {
+ if (this.preparams) params = this.preparams.concat(params);
+
+ var databaseid = alasql.useid;
+ db = alasql.databases[databaseid];
+ var sql = this.toString();
+ var hh = hash(sql);
+
+ var statement = this.compile(databaseid);
+ if (!statement) return;
+ statement.sql = sql;
+ statement.dbversion = db.dbversion;
+
+ // Secure sqlCache size
+ if (db.sqlCacheSize > alasql.MAXSQLCACHESIZE) {
+ db.resetSqlCache();
+ }
+ db.sqlCacheSize++;
+ db.sqlCache[hh] = statement;
+ var res = (alasql.res = statement(params, cb));
+ return res;
+};
+
+yy.Select.prototype.Select = function() {
+ var self = this;
+ var agrs = [];
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ } else if (arguments.length == 1) {
+ if (Array.isArray(arguments[0])) {
+ args = arguments[0];
+ } else {
+ args = [arguments[0]];
+ }
+ } else {
+ throw new Error('Wrong number of arguments of Select() function');
+ }
+
+ self.columns = [];
+
+ args.forEach(function(arg) {
+ if (typeof arg == 'string') {
+ self.columns.push(new yy.Column({columnid: arg}));
+ } else if (typeof arg == 'function') {
+ var pari = 0;
+ if (self.preparams) {
+ pari = self.preparams.length;
+ } else {
+ self.preparams = [];
+ }
+ self.preparams.push(arg);
+ self.columns.push(new yy.Column({columnid: '*', func: arg, param: pari}));
+ } else {
+ // Unknown type
+ }
+ });
+
+ return self;
+};
+
+yy.Select.prototype.From = function(tableid) {
+ var self = this;
+ if (!self.from) self.from = [];
+ if (Array.isArray(tableid)) {
+ var pari = 0;
+ if (self.preparams) {
+ pari = self.preparams.length;
+ } else {
+ self.preparams = [];
+ }
+ self.preparams.push(tableid);
+ self.from.push(new yy.ParamValue({param: pari}));
+ } else if (typeof tableid == 'string') {
+ self.from.push(new yy.Table({tableid: tableid}));
+ } else {
+ throw new Error('Unknown arguments in From() function');
+ }
+ return self;
+};
+
+yy.Select.prototype.OrderBy = function() {
+ var self = this;
+ var agrs = [];
+
+ self.order = [];
+
+ if (arguments.length == 0) {
+ // self.order.push(new yy.OrderExpression({expression: new yy.Column({columnid:"_"}), direction:'ASC'}));
+ args = ['_'];
+ } else if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ } else if (arguments.length == 1) {
+ if (Array.isArray(arguments[0])) {
+ args = arguments[0];
+ } else {
+ args = [arguments[0]];
+ }
+ } else {
+ throw new Error('Wrong number of arguments of Select() function');
+ }
+
+ if (args.length > 0) {
+ args.forEach(function(arg) {
+ var expr = new yy.Column({columnid: arg});
+ if (typeof arg == 'function') {
+ expr = arg;
+ }
+ self.order.push(new yy.OrderExpression({expression: expr, direction: 'ASC'}));
+ });
+ }
+ return self;
+};
+
+yy.Select.prototype.Top = function(topnum) {
+ var self = this;
+ self.top = new yy.NumValue({value: topnum});
+ return self;
+};
+
+yy.Select.prototype.GroupBy = function() {
+ var self = this;
+ var agrs = [];
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ } else if (arguments.length == 1) {
+ if (Array.isArray(arguments[0])) {
+ args = arguments[0];
+ } else {
+ args = [arguments[0]];
+ }
+ } else {
+ throw new Error('Wrong number of arguments of Select() function');
+ }
+
+ self.group = [];
+
+ args.forEach(function(arg) {
+ var expr = new yy.Column({columnid: arg});
+ self.group.push(expr);
+ });
+
+ return self;
+};
+
+yy.Select.prototype.Where = function(expr) {
+ var self = this;
+ if (typeof expr == 'function') {
+ self.where = expr;
+ }
+ return self;
+};
+
+/*
+//
+// Functions for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.FuncValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.FuncValue.prototype.toString = function(dontas) {
+ var s = '';
+
+ if (alasql.fn[this.funcid]) s += this.funcid;
+ else if (alasql.aggr[this.funcid]) s += this.funcid;
+ else if (alasql.stdlib[this.funcid.toUpperCase()] || alasql.stdfn[this.funcid.toUpperCase()])
+ s += this.funcid.toUpperCase();
+
+ s += '(';
+ if (this.args && this.args.length > 0) {
+ s += this.args
+ .map(function(arg) {
+ return arg.toString();
+ })
+ .join(',');
+ }
+ s += ')';
+ if (this.as && !dontas) s += ' AS ' + this.as.toString();
+ // if(this.alias) s += ' AS '+this.alias;
+ return s;
+};
+
+yy.FuncValue.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ alasql.precompile(this, databaseid, params); // Precompile queries
+
+ var expr = new Function('params,alasql', 'var y;return ' + this.toJS('', '', null));
+ expr(params, alasql);
+ if (cb) res = cb(res);
+ return res;
+};
+
+yy.FuncValue.prototype.findAggregator = function(query) {
+ if (this.args && this.args.length > 0) {
+ this.args.forEach(function(arg) {
+ if (arg.findAggregator) arg.findAggregator(query);
+ });
+ }
+};
+
+yy.FuncValue.prototype.toJS = function(context, tableid, defcols) {
+ var s = '';
+ var funcid = this.funcid;
+ // IF this is standard compile functions
+ if (!alasql.fn[funcid] && alasql.stdlib[funcid.toUpperCase()]) {
+ if (this.args && this.args.length > 0) {
+ s += alasql.stdlib[funcid.toUpperCase()].apply(
+ this,
+ this.args.map(function(arg) {
+ return arg.toJS(context, tableid);
+ })
+ );
+ } else {
+ s += alasql.stdlib[funcid.toUpperCase()]();
+ }
+ } else if (!alasql.fn[funcid] && alasql.stdfn[funcid.toUpperCase()]) {
+ if (this.newid) s += 'new ';
+ s += 'alasql.stdfn.' + this.funcid.toUpperCase() + '(';
+ // if(this.args) s += this.args.toJS(context, tableid);
+ if (this.args && this.args.length > 0) {
+ s += this.args
+ .map(function(arg) {
+ return arg.toJS(context, tableid, defcols);
+ })
+ .join(',');
+ }
+ s += ')';
+ } else {
+ // This is user-defined run-time function
+ // TODO arguments!!!
+ // var s = '';
+ if (this.newid) s += 'new ';
+ s += 'alasql.fn.' + this.funcid + '(';
+ // if(this.args) s += this.args.toJS(context, tableid);
+ if (this.args && this.args.length > 0) {
+ s += this.args
+ .map(function(arg) {
+ return arg.toJS(context, tableid, defcols);
+ })
+ .join(',');
+ }
+ s += ')';
+ }
+
+ // if(this.alias) s += ' AS '+this.alias;
+ return s;
+};
+
+var stdlib = (alasql.stdlib = {});
+var stdfn = (alasql.stdfn = {});
+
+stdlib.ABS = function(a) {
+ return 'Math.abs(' + a + ')';
+};
+stdlib.CLONEDEEP = function(a) {
+ return 'alasql.utils.cloneDeep(' + a + ')';
+};
+
+stdfn.CONCAT = function() {
+ return Array.prototype.slice.call(arguments).join('');
+};
+stdlib.EXP = function(a) {
+ return 'Math.pow(Math.E,' + a + ')';
+};
+
+stdlib.IIF = function(a, b, c) {
+ if (arguments.length == 3) {
+ return '((' + a + ')?(' + b + '):(' + c + '))';
+ } else {
+ throw new Error('Number of arguments of IFF is not equals to 3');
+ }
+};
+stdlib.IFNULL = function(a, b) {
+ return '(' + a + '||' + b + ')';
+};
+stdlib.INSTR = function(s, p) {
+ return '((' + s + ').indexOf(' + p + ')+1)';
+};
+
+//stdlib.LEN = stdlib.LENGTH = function(s) {return '('+s+'+"").length';};
+
+stdlib.LEN = stdlib.LENGTH = function(s) {
+ return und(s, 'y.length');
+};
+//stdlib.LENGTH = function(s) {return '('+s+').length'};
+
+stdlib.LOWER = stdlib.LCASE = function(s) {
+ return und(s, 'String(y).toLowerCase()');
+};
+//stdlib.LCASE = function(s) {return '('+s+').toLowerCase()';}
+
+// Returns a character expression after it removes leading blanks.
+// see https://docs.microsoft.com/en-us/sql/t-sql/functions/ltrim-transact-sql
+stdlib.LTRIM = function(s) {
+ return und(s, 'y.replace(/^[ ]+/,"")');
+};
+
+// Returns a character string after truncating all trailing spaces.
+// see https://docs.microsoft.com/en-us/sql/t-sql/functions/rtrim-transact-sql
+stdlib.RTRIM = function(s) {
+ return und(s, 'y.replace(/[ ]+$/,"")');
+};
+
+stdlib.MAX = stdlib.GREATEST = function() {
+ return 'Math.max(' + Array.prototype.join.call(arguments, ',') + ')';
+};
+
+stdlib.MIN = stdlib.LEAST = function() {
+ return 'Math.min(' + Array.prototype.join.call(arguments, ',') + ')';
+};
+
+stdlib.SUBSTRING = stdlib.SUBSTR = stdlib.MID = function(a, b, c) {
+ if (arguments.length == 2) return und(a, 'y.substr(' + b + '-1)');
+ else if (arguments.length == 3) return und(a, 'y.substr(' + b + '-1,' + c + ')');
+};
+
+stdfn.REGEXP_LIKE = function(a, b, c) {
+
+ return (a || '').search(RegExp(b, c)) > -1;
+};
+
+// Here we uses undefined instead of null
+stdlib.ISNULL = stdlib.NULLIF = function(a, b) {
+ return '(' + a + '==' + b + '?undefined:' + a + ')';
+};
+
+stdlib.POWER = function(a, b) {
+ return 'Math.pow(' + a + ',' + b + ')';
+};
+
+stdlib.RANDOM = function(r) {
+ if (arguments.length == 0) {
+ return 'Math.random()';
+ } else {
+ return '(Math.random()*(' + r + ')|0)';
+ }
+};
+stdlib.ROUND = function(s, d) {
+ if (arguments.length == 2) {
+ return 'Math.round((' + s + ')*Math.pow(10,(' + d + ')))/Math.pow(10,(' + d + '))';
+ } else {
+ return 'Math.round(' + s + ')';
+ }
+};
+stdlib.CEIL = stdlib.CEILING = function(s) {
+ return 'Math.ceil(' + s + ')';
+};
+stdlib.FLOOR = function(s) {
+ return 'Math.floor(' + s + ')';
+};
+
+stdlib.ROWNUM = function() {
+ return '1';
+};
+stdlib.ROW_NUMBER = function() {
+ return '1';
+};
+
+stdlib.SQRT = function(s) {
+ return 'Math.sqrt(' + s + ')';
+};
+
+stdlib.TRIM = function(s) {
+ return und(s, 'y.trim()');
+};
+
+stdlib.UPPER = stdlib.UCASE = function(s) {
+ return und(s, 'String(y).toUpperCase()');
+};
+
+// Concatination of strings
+stdfn.CONCAT_WS = function() {
+ var args = Array.prototype.slice.call(arguments);
+ return args.slice(1, args.length).join(args[0]);
+};
+
+//stdlib.UCASE = function(s) {return '('+s+').toUpperCase()';}
+//REPLACE
+// RTRIM
+// SUBSTR
+// TRIM
+//REPLACE
+// RTRIM
+// SUBSTR
+// TRIM
+
+// Aggregator for joining strings
+alasql.aggr.GROUP_CONCAT = function(v, s, stage) {
+ if (stage === 1) {
+ return '' + v;
+ } else if (stage === 2) {
+ s += ',' + v;
+ return s;
+ }
+ return s;
+};
+
+alasql.aggr.MEDIAN = function(v, s, stage) {
+ if (stage === 2) {
+ if (v !== null) {
+ s.push(v);
+ }
+ return s;
+ } else if (stage === 1) {
+ if (v === null) {
+ return [];
+ }
+ return [v];
+ } else {
+ if (!s.length) {
+ return s;
+ }
+
+ var r = s.sort();
+ var p = (r.length + 1) / 2;
+ if (Number.isInteger(p)) {
+ return r[p - 1];
+ }
+
+ return (r[Math.floor(p - 1)] + r[Math.ceil(p - 1)]) / 2;
+ }
+};
+
+alasql.aggr.QUART = function(v, s, stage, nth) {
+ //Quartile (first quartile per default or input param)
+ if (stage === 2) {
+ if (v !== null) {
+ s.push(v);
+ }
+ return s;
+ } else if (stage === 1) {
+ if (v === null) {
+ return [];
+ }
+ return [v];
+ } else {
+ if (!s.length) {
+ return s;
+ }
+
+ nth = !nth ? 1 : nth;
+ var r = s.sort();
+ var p = nth * (r.length + 1) / 4;
+ if (Number.isInteger(p)) {
+ return r[p - 1]; //Integer value
+ }
+ return r[Math.floor(p)]; //Math.ceil -1 or Math.floor
+ }
+};
+
+alasql.aggr.QUART2 = function(v, s, stage) {
+ //Second Quartile
+ return alasql.aggr.QUART(v, s, stage, 2);
+};
+alasql.aggr.QUART3 = function(v, s, stage) {
+ //Third Quartile
+ return alasql.aggr.QUART(v, s, stage, 3);
+};
+
+// Standard deviation
+alasql.aggr.VAR = function(v, s, stage) {
+ if (stage === 1) {
+ if (v === null) {
+ return {arr: [], sum: 0};
+ }
+ return {arr: [v], sum: v};
+ } else if (stage === 2) {
+ if (v === null) {
+ return s;
+ }
+ s.arr.push(v);
+ s.sum += v;
+ return s;
+ } else {
+ var N = s.arr.length;
+ var avg = s.sum / N;
+ var std = 0;
+ for (var i = 0; i < N; i++) {
+ std += (s.arr[i] - avg) * (s.arr[i] - avg);
+ }
+ std = std / (N - 1);
+ return std;
+ }
+};
+
+alasql.aggr.STDEV = function(v, s, stage) {
+ if (stage === 1 || stage === 2) {
+ return alasql.aggr.VAR(v, s, stage);
+ } else {
+ return Math.sqrt(alasql.aggr.VAR(v, s, stage));
+ }
+};
+
+// Standard deviation
+// alasql.aggr.VARP = function(v,s,acc){
+
+// };
+
+alasql.aggr.VARP = function(v, s, stage) {
+ if (stage == 1) {
+ return {arr: [v], sum: v};
+ } else if (stage == 2) {
+ s.arr.push(v);
+ s.sum += v;
+ return s;
+ } else {
+ var N = s.arr.length;
+ var avg = s.sum / N;
+ var std = 0;
+ for (var i = 0; i < N; i++) {
+ std += (s.arr[i] - avg) * (s.arr[i] - avg);
+ }
+ std = std / N;
+ return std;
+ }
+};
+
+alasql.aggr.STD = alasql.aggr.STDDEV = alasql.aggr.STDEVP = function(v, s, stage) {
+ if (stage == 1 || stage == 2) {
+ return alasql.aggr.VARP(v, s, stage);
+ } else {
+ return Math.sqrt(alasql.aggr.VARP(v, s, stage));
+ }
+};
+
+alasql._aggrOriginal = alasql.aggr;
+alasql.aggr = {};
+Object.keys(alasql._aggrOriginal).forEach(function(k) {
+ alasql.aggr[k] = function(v, s, stage) {
+ if (stage === 3 && typeof s === 'undefined') return undefined;
+ return alasql._aggrOriginal[k].apply(null, arguments);
+ };
+});
+
+// String functions
+stdfn.REPLACE = function(target, pattern, replacement) {
+ return (target || '').split(pattern).join(replacement);
+};
+
+// This array is required for fast GUID generation
+var lut = [];
+for (var i = 0; i < 256; i++) {
+ lut[i] = (i < 16 ? '0' : '') + i.toString(16);
+}
+
+stdfn.NEWID = stdfn.UUID = stdfn.GEN_RANDOM_UUID = function() {
+ var d0 = (Math.random() * 0xffffffff) | 0;
+ var d1 = (Math.random() * 0xffffffff) | 0;
+ var d2 = (Math.random() * 0xffffffff) | 0;
+ var d3 = (Math.random() * 0xffffffff) | 0;
+ return (
+ lut[d0 & 0xff] +
+ lut[(d0 >> 8) & 0xff] +
+ lut[(d0 >> 16) & 0xff] +
+ lut[(d0 >> 24) & 0xff] +
+ '-' +
+ lut[d1 & 0xff] +
+ lut[(d1 >> 8) & 0xff] +
+ '-' +
+ lut[((d1 >> 16) & 0x0f) | 0x40] +
+ lut[(d1 >> 24) & 0xff] +
+ '-' +
+ lut[(d2 & 0x3f) | 0x80] +
+ lut[(d2 >> 8) & 0xff] +
+ '-' +
+ lut[(d2 >> 16) & 0xff] +
+ lut[(d2 >> 24) & 0xff] +
+ lut[d3 & 0xff] +
+ lut[(d3 >> 8) & 0xff] +
+ lut[(d3 >> 16) & 0xff] +
+ lut[(d3 >> 24) & 0xff]
+ );
+};
+
+/*
+//
+// CASE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.CaseValue = function(params) {
+ return yy.extend(this, params);
+};
+yy.CaseValue.prototype.toString = function() {
+ var s = 'CASE ';
+ if (this.expression) s += this.expression.toString();
+ if (this.whens) {
+ s += this.whens
+ .map(function(w) {
+ return ' WHEN ' + w.when.toString() + ' THEN ' + w.then.toString();
+ })
+ .join();
+ }
+ s += ' END';
+ return s;
+};
+
+yy.CaseValue.prototype.findAggregator = function(query) {
+
+ if (this.expression && this.expression.findAggregator) this.expression.findAggregator(query);
+ if (this.whens && this.whens.length > 0) {
+ this.whens.forEach(function(w) {
+ if (w.when.findAggregator) w.when.findAggregator(query);
+ if (w.then.findAggregator) w.then.findAggregator(query);
+ });
+ }
+ if (this.elses && this.elses.findAggregator) this.elses.findAggregator(query);
+};
+
+yy.CaseValue.prototype.toJS = function(context, tableid, defcols) {
+ var s = '((function(' + context + ',params,alasql){var y,r;';
+ if (this.expression) {
+ // this.expression.toJS(context, tableid)
+ s += 'v=' + this.expression.toJS(context, tableid, defcols) + ';';
+ s += (this.whens || [])
+ .map(function(w) {
+ return (
+ ' if(v==' +
+ w.when.toJS(context, tableid, defcols) +
+ ') {r=' +
+ w.then.toJS(context, tableid, defcols) +
+ '}'
+ );
+ })
+ .join(' else ');
+ if (this.elses) s += ' else {r=' + this.elses.toJS(context, tableid, defcols) + '}';
+ } else {
+ s += (this.whens || [])
+ .map(function(w) {
+ return (
+ ' if(' +
+ w.when.toJS(context, tableid, defcols) +
+ ') {r=' +
+ w.then.toJS(context, tableid, defcols) +
+ '}'
+ );
+ })
+ .join(' else ');
+ if (this.elses) s += ' else {r=' + this.elses.toJS(context, tableid, defcols) + '}';
+ }
+ // TODO remove bind from CASE
+ s += ';return r;}).bind(this))(' + context + ',params,alasql)';
+
+ return s;
+};
+
+/*
+//
+// JSON for Alasql.js
+// Date: 19.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Json = function(params) {
+ return yy.extend(this, params);
+};
+yy.Json.prototype.toString = function() {
+ var s = ''; // '@'
+ s += JSONtoString(this.value);
+ s += '';
+ return s;
+};
+
+var JSONtoString = (alasql.utils.JSONtoString = function(obj) {
+ var s = '';
+ if (typeof obj == 'string') s = '"' + obj + '"';
+ else if (typeof obj == 'number') s = obj;
+ else if (typeof obj == 'boolean') s = obj;
+ else if (typeof obj == 'object') {
+ if (Array.isArray(obj)) {
+ s +=
+ '[' +
+ obj
+ .map(function(b) {
+ return JSONtoString(b);
+ })
+ .join(',') +
+ ']';
+ } else if (!obj.toJS || obj instanceof yy.Json) {
+ // to prevent recursion
+ s = '{';
+ var ss = [];
+ for (var k in obj) {
+ var s1 = '';
+ if (typeof k == 'string') s1 += '"' + k + '"';
+ else if (typeof k == 'number') s1 += k;
+ else if (typeof k == 'boolean') s1 += k;
+ else {
+ throw new Error('THis is not ES6... no expressions on left side yet');
+ }
+ s1 += ':' + JSONtoString(obj[k]);
+ ss.push(s1);
+ }
+ s += ss.join(',') + '}';
+ } else if (obj.toString) {
+ s = obj.toString();
+ } else {
+ throw new Error('1Can not show JSON object ' + JSON.stringify(obj));
+ }
+ } else {
+ throw new Error('2Can not show JSON object ' + JSON.stringify(obj));
+ }
+
+ return s;
+});
+
+function JSONtoJS(obj, context, tableid, defcols) {
+ var s = '';
+ if (typeof obj == 'string') s = '"' + obj + '"';
+ else if (typeof obj == 'number') s = '(' + obj + ')';
+ else if (typeof obj == 'boolean') s = obj;
+ else if (typeof obj == 'object') {
+ if (Array.isArray(obj)) {
+ s +=
+ '[' +
+ obj
+ .map(function(b) {
+ return JSONtoJS(b, context, tableid, defcols);
+ })
+ .join(',') +
+ ']';
+ } else if (!obj.toJS || obj instanceof yy.Json) {
+ // to prevent recursion
+ s = '{';
+ var ss = [];
+ for (var k in obj) {
+ var s1 = '';
+ if (typeof k == 'string') s1 += '"' + k + '"';
+ else if (typeof k == 'number') s1 += k;
+ else if (typeof k == 'boolean') s1 += k;
+ else {
+ throw new Error('THis is not ES6... no expressions on left side yet');
+ }
+ s1 += ':' + JSONtoJS(obj[k], context, tableid, defcols);
+ ss.push(s1);
+ }
+ s += ss.join(',') + '}';
+ } else if (obj.toJS) {
+ s = obj.toJS(context, tableid, defcols);
+ } else {
+ throw new Error('1Can not parse JSON object ' + JSON.stringify(obj));
+ }
+ } else {
+ throw new Error('2Can not parse JSON object ' + JSON.stringify(obj));
+ }
+
+ return s;
+}
+
+yy.Json.prototype.toJS = function(context, tableid, defcols) {
+ // TODO redo
+ return JSONtoJS(this.value, context, tableid, defcols);
+};
+
+/*
+//
+// CAST and CONVERT functions
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Convert = function(params) {
+ return yy.extend(this, params);
+};
+yy.Convert.prototype.toString = function() {
+ var s = 'CONVERT(';
+ s += this.dbtypeid;
+ if (typeof this.dbsize != 'undefined') {
+ s += '(' + this.dbsize;
+ if (this.dbprecision) s += ',' + this.dbprecision;
+ s += ')';
+ }
+ s += ',' + this.expression.toString();
+ if (this.style) s += ',' + this.style;
+ s += ')';
+ return s;
+};
+yy.Convert.prototype.toJS = function(context, tableid, defcols) {
+ // if(this.style) {
+ return (
+ 'alasql.stdfn.CONVERT(' +
+ this.expression.toJS(context, tableid, defcols) +
+ ',{dbtypeid:"' +
+ this.dbtypeid +
+ '",dbsize:' +
+ this.dbsize +
+ ',dbprecision:' +
+ this.dbprecision +
+ ',style:' +
+ this.style +
+ '})'
+ );
+ // }
+
+ throw new Error('There is not such type conversion for ' + this.toString());
+};
+
+/**
+ Convert one type to another
+ */
+alasql.stdfn.CONVERT = function(value, args) {
+ var val = value;
+
+ if (args.style) {
+ // TODO 9,109, 20,120,21,121,126,130,131 conversions
+ var t;
+ if (/\d{8}/.test(val)) {
+ t = new Date(+val.substr(0, 4), +val.substr(4, 2) - 1, +val.substr(6, 2));
+ } else {
+ t = new Date(val);
+ }
+ switch (args.style) {
+ case 1: // mm/dd/yy
+ val =
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '/' +
+ ('0' + t.getDate()).substr(-2) +
+ '/' +
+ ('0' + t.getYear()).substr(-2);
+ break;
+ case 2: // yy.mm.dd
+ val =
+ ('0' + t.getYear()).substr(-2) +
+ '.' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + t.getDate()).substr(-2);
+ break;
+ case 3: // dd/mm/yy
+ val =
+ ('0' + t.getDate()).substr(-2) +
+ '/' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '/' +
+ ('0' + t.getYear()).substr(-2);
+ break;
+ case 4: // dd.mm.yy
+ val =
+ ('0' + t.getDate()).substr(-2) +
+ '.' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + t.getYear()).substr(-2);
+ break;
+ case 5: // dd-mm-yy
+ val =
+ ('0' + t.getDate()).substr(-2) +
+ '-' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '-' +
+ ('0' + t.getYear()).substr(-2);
+ break;
+ case 6: // dd mon yy
+ val =
+ ('0' + t.getDate()).substr(-2) +
+ ' ' +
+ t
+ .toString()
+ .substr(4, 3)
+ .toLowerCase() +
+ ' ' +
+ ('0' + t.getYear()).substr(-2);
+ break;
+ case 7: // Mon dd,yy
+ val =
+ t.toString().substr(4, 3) +
+ ' ' +
+ ('0' + t.getDate()).substr(-2) +
+ ',' +
+ ('0' + t.getYear()).substr(-2);
+ break;
+ case 8: // hh:mm:ss
+ case 108: // hh:mm:ss
+ val =
+ ('0' + t.getHours()).substr(-2) +
+ ':' +
+ ('0' + t.getMinutes()).substr(-2) +
+ ':' +
+ ('0' + t.getSeconds()).substr(-2);
+ break;
+ case 10: // mm-dd-yy
+ val =
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '-' +
+ ('0' + t.getDate()).substr(-2) +
+ '-' +
+ ('0' + t.getYear()).substr(-2);
+ break;
+ case 11: // yy/mm/dd
+ val =
+ ('0' + t.getYear()).substr(-2) +
+ '/' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '/' +
+ ('0' + t.getDate()).substr(-2);
+ break;
+ case 12: // yymmdd
+ val =
+ ('0' + t.getYear()).substr(-2) +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ ('0' + t.getDate()).substr(-2);
+ break;
+ case 101: // mm/dd/yyyy
+ val =
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '/' +
+ ('0' + t.getDate()).substr(-2) +
+ '/' +
+ t.getFullYear();
+ break;
+ case 102: // yyyy.mm.dd
+ val =
+ t.getFullYear() +
+ '.' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + t.getDate()).substr(-2);
+ break;
+ case 103: // dd/mm/yyyy
+ val =
+ ('0' + t.getDate()).substr(-2) +
+ '/' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '/' +
+ t.getFullYear();
+ break;
+ case 104: // dd.mm.yyyy
+ val =
+ ('0' + t.getDate()).substr(-2) +
+ '.' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '.' +
+ t.getFullYear();
+ break;
+ case 105: // dd-mm-yyyy
+ val =
+ ('0' + t.getDate()).substr(-2) +
+ '-' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '-' +
+ t.getFullYear();
+ break;
+ case 106: // dd mon yyyy
+ val =
+ ('0' + t.getDate()).substr(-2) +
+ ' ' +
+ t
+ .toString()
+ .substr(4, 3)
+ .toLowerCase() +
+ ' ' +
+ t.getFullYear();
+ break;
+ case 107: // Mon dd,yyyy
+ val =
+ t.toString().substr(4, 3) +
+ ' ' +
+ ('0' + t.getDate()).substr(-2) +
+ ',' +
+ t.getFullYear();
+ break;
+ case 110: // mm-dd-yyyy
+ val =
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '-' +
+ ('0' + t.getDate()).substr(-2) +
+ '-' +
+ t.getFullYear();
+ break;
+ case 111: // yyyy/mm/dd
+ val =
+ t.getFullYear() +
+ '/' +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ '/' +
+ ('0' + t.getDate()).substr(-2);
+ break;
+
+ case 112: // yyyymmdd
+ val =
+ t.getFullYear() +
+ ('0' + (t.getMonth() + 1)).substr(-2) +
+ ('0' + t.getDate()).substr(-2);
+ break;
+ default:
+ throw new Error('The CONVERT style ' + args.style + ' is not realized yet.');
+ }
+ }
+
+ var udbtypeid = args.dbtypeid.toUpperCase();
+
+ if (args.dbtypeid == 'Date') {
+ return new Date(val);
+ } else if (udbtypeid == 'DATE') {
+ var d = new Date(val);
+ var s =
+ d.getFullYear() +
+ '.' +
+ ('0' + (d.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + d.getDate()).substr(-2);
+ return s;
+ } else if (udbtypeid == 'DATETIME' || udbtypeid == 'DATETIME2') {
+ var d = new Date(val);
+ var s =
+ d.getFullYear() +
+ '.' +
+ ('0' + (d.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + d.getDate()).substr(-2);
+ s +=
+ ' ' +
+ ('0' + d.getHours()).substr(-2) +
+ ':' +
+ ('0' + d.getMinutes()).substr(-2) +
+ ':' +
+ ('0' + d.getSeconds()).substr(-2);
+ s += '.' + ('00' + d.getMilliseconds()).substr(-3);
+ return s;
+ } else if (['MONEY'].indexOf(udbtypeid) > -1) {
+ var m = +val;
+ return (m | 0) + ((m * 100) % 100) / 100;
+ } else if (['BOOLEAN'].indexOf(udbtypeid) > -1) {
+ return !!val;
+ } else if (
+ ['INT', 'INTEGER', 'SMALLINT', 'BIGINT', 'SERIAL', 'SMALLSERIAL', 'BIGSERIAL'].indexOf(
+ args.dbtypeid.toUpperCase()
+ ) > -1
+ ) {
+ return val | 0;
+ } else if (
+ ['STRING', 'VARCHAR', 'NVARCHAR', 'CHARACTER VARIABLE'].indexOf(
+ args.dbtypeid.toUpperCase()
+ ) > -1
+ ) {
+ if (args.dbsize) return ('' + val).substr(0, args.dbsize);
+ else return '' + val;
+ } else if (['CHAR', 'CHARACTER', 'NCHAR'].indexOf(udbtypeid) > -1) {
+ return (val + new Array(args.dbsize + 1).join(' ')).substr(0, args.dbsize);
+ //else return ""+val.substr(0,1);
+ } else if (['NUMBER', 'FLOAT', 'DECIMAL', 'NUMERIC'].indexOf(udbtypeid) > -1) {
+ var m = +val;
+ //toPrecision sets the number of numbers total in the result
+ m = args.dbsize !== undefined ? parseFloat(m.toPrecision(args.dbsize)) : m;
+ //toFixed sets the number of numbers to the right of the decimal
+ m = args.dbprecision !== undefined ? parseFloat(m.toFixed(args.dbprecision)) : m;
+ return m;
+ } else if (['JSON'].indexOf(udbtypeid) > -1) {
+ if (typeof val == 'object') return val;
+ try {
+ return JSON.parse(val);
+ } catch (err) {
+ throw new Error('Cannot convert string to JSON');
+ }
+ }
+ return val;
+};
+
+/*
+//
+// CREATE TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* global alasql, yy, hash */
+
+yy.ColumnDef = function(params) {
+ return yy.extend(this, params);
+};
+yy.ColumnDef.prototype.toString = function() {
+ var s = this.columnid;
+ if (this.dbtypeid) {
+ s += ' ' + this.dbtypeid;
+ }
+
+ if (this.dbsize) {
+ s += '(' + this.dbsize;
+ if (this.dbprecision) {
+ s += ',' + this.dbprecision;
+ }
+ s += ')';
+ }
+
+ if (this.primarykey) {
+ s += ' PRIMARY KEY';
+ }
+
+ if (this.notnull) {
+ s += ' NOT NULL';
+ }
+
+ return s;
+};
+
+yy.CreateTable = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateTable.prototype.toString = function() {
+ var s = 'CREATE';
+ if (this.temporary) {
+ s += ' TEMPORARY';
+ }
+
+ if (this.view) {
+ s += ' VIEW';
+ } else {
+ s += ' ' + (this["class"] ? 'CLASS' : 'TABLE');
+ }
+ if (this.ifnotexists) {
+ s += ' IF NOT EXISTS';
+ }
+ s += ' ' + this.table.toString();
+ if (this.viewcolumns) {
+ s +=
+ '(' +
+ this.viewcolumns
+ .map(function(vcol) {
+ return vcol.toString();
+ })
+ .join(',') +
+ ')';
+ }
+ if (this.as) {
+ s += ' AS ' + this.as;
+ } else {
+ var ss = this.columns.map(function(col) {
+ return col.toString();
+ });
+ s += ' (' + ss.join(',') + ')';
+ }
+
+ if (this.view && this.select) {
+ s += ' AS ' + this.select.toString();
+ }
+
+ return s;
+};
+
+// CREATE TABLE
+//yy.CreateTable.prototype.compile = returnUndefined;
+yy.CreateTable.prototype.execute = function(databaseid, params, cb) {
+ // var self = this;
+ var db = alasql.databases[this.table.databaseid || databaseid];
+
+ var tableid = this.table.tableid;
+ if (!tableid) {
+ throw new Error('Table name is not defined');
+ }
+
+ // var ifnotexists = this.ifnotexists;
+ var columns = this.columns;
+ // if(false) {
+ // if(!columns) {
+ // throw new Error('Columns are not defined');
+ // }
+ // }
+ var constraints = this.constraints || [];
+
+ // IF NOT EXISTS
+ if (this.ifnotexists && db.tables[tableid]) {
+ return cb ? cb(0) : 0;
+ }
+
+ if (db.tables[tableid]) {
+ throw new Error(
+ "Can not create table '" +
+ tableid +
+ "', because it already exists in the database '" +
+ db.databaseid +
+ "'"
+ );
+ }
+
+ var table = (db.tables[tableid] = new alasql.Table()); // TODO Can use special object?
+ // If this is a class
+ if (this["class"]) {
+ table.isclass = true;
+ }
+
+ var ss = []; // DEFAULT function components
+ var uss = []; // ON UPDATE function components
+ if (columns) {
+ columns.forEach(function(col) {
+ var dbtypeid = col.dbtypeid;
+ if (!alasql.fn[dbtypeid]) {
+ dbtypeid = dbtypeid.toUpperCase();
+ }
+
+ // Process SERIAL data type like Postgress
+ if (['SERIAL', 'SMALLSERIAL', 'BIGSERIAL'].indexOf(dbtypeid) > -1) {
+ col.identity = {value: 1, step: 1};
+ }
+
+ var newcol = {
+ columnid: col.columnid,
+ dbtypeid: dbtypeid,
+ dbsize: col.dbsize, // Fixed issue #150
+ dbprecision: col.dbprecision, // Fixed issue #150
+ notnull: col.notnull,
+ identity: col.identity,
+ };
+ if (col.identity) {
+ table.identities[col.columnid] = {
+ value: +col.identity.value,
+ step: +col.identity.step,
+ };
+ // ss.push('\''+col.columnid+'\':(alasql.databases[\''+db.databaseid+'\'].tables[\''
+ // +tableid+'\'].identities[\''+col.columnid+'\'].value)');
+ }
+ if (col.check) {
+ table.checks.push({
+ id: col.check.constrantid,
+ fn: new Function('r', 'var y;return ' + col.check.expression.toJS('r', '')),
+ });
+ }
+
+ if (col["default"]) {
+ ss.push("'" + col.columnid + "':" + col["default"].toJS('r', ''));
+ }
+
+ // Check for primary key
+ if (col.primarykey) {
+ var pk = (table.pk = {});
+ pk.columns = [col.columnid];
+ pk.onrightfns = "r['" + col.columnid + "']";
+ pk.onrightfn = new Function('r', 'var y;return ' + pk.onrightfns);
+ pk.hh = hash(pk.onrightfns);
+ table.uniqs[pk.hh] = {};
+ }
+
+ // UNIQUE clause
+ if (col.unique) {
+ var uk = {};
+ table.uk = table.uk || [];
+ table.uk.push(uk);
+ uk.columns = [col.columnid];
+ uk.onrightfns = "r['" + col.columnid + "']";
+ uk.onrightfn = new Function('r', 'var y;return ' + uk.onrightfns);
+ uk.hh = hash(uk.onrightfns);
+ table.uniqs[uk.hh] = {};
+ }
+
+ // UNIQUE clause
+ if (col.foreignkey) {
+
+ var fk = col.foreignkey.table;
+ var fktable = alasql.databases[fk.databaseid || databaseid].tables[fk.tableid];
+ if (typeof fk.columnid === 'undefined') {
+ if (fktable.pk.columns && fktable.pk.columns.length > 0) {
+ fk.columnid = fktable.pk.columns[0];
+ } else {
+ throw new Error('FOREIGN KEY allowed only to tables with PRIMARY KEYs');
+ }
+ }
+
+ var fkfn = function(r) {
+ var rr = {};
+ if (typeof r[col.columnid] === 'undefined') {
+ return true;
+ }
+ rr[fk.columnid] = r[col.columnid];
+ var addr = fktable.pk.onrightfn(rr);
+
+ if (!fktable.uniqs[fktable.pk.hh][addr]) {
+ throw new Error(
+ 'Foreign key "' +
+ r[col.columnid] +
+ '" is not found in table ' +
+ fktable.tableid
+ );
+ }
+ return true;
+ };
+ table.checks.push({fn: fkfn});
+
+ }
+
+ if (col.onupdate) {
+ uss.push("r['" + col.columnid + "']=" + col.onupdate.toJS('r', ''));
+ }
+
+ table.columns.push(newcol);
+ table.xcolumns[newcol.columnid] = newcol;
+ });
+ }
+ table.defaultfns = ss.join(',');
+ table.onupdatefns = uss.join(';');
+
+ // if(constraints) {
+ constraints.forEach(function(con) {
+
+ var checkfn;
+
+ if (con.type === 'PRIMARY KEY') {
+ if (table.pk) {
+ throw new Error('Primary key already exists');
+ }
+ var pk = (table.pk = {});
+ pk.columns = con.columns;
+ pk.onrightfns = pk.columns
+ .map(function(columnid) {
+ return "r['" + columnid + "']";
+ })
+ .join("+'`'+");
+ pk.onrightfn = new Function('r', 'var y;return ' + pk.onrightfns);
+ pk.hh = hash(pk.onrightfns);
+ table.uniqs[pk.hh] = {};
+ } else if (con.type === 'CHECK') {
+
+ checkfn = new Function('r', 'var y;return ' + con.expression.toJS('r', ''));
+ } else if (con.type === 'UNIQUE') {
+
+ var uk = {};
+ table.uk = table.uk || [];
+ table.uk.push(uk);
+ uk.columns = con.columns;
+ uk.onrightfns = uk.columns
+ .map(function(columnid) {
+ return "r['" + columnid + "']";
+ })
+ .join("+'`'+");
+ uk.onrightfn = new Function('r', 'var y;return ' + uk.onrightfns);
+ uk.hh = hash(uk.onrightfns);
+ table.uniqs[uk.hh] = {};
+ } else if (con.type === 'FOREIGN KEY') {
+
+ var col = table.xcolumns[con.columns[0]];
+ var fk = con.fktable;
+ if (con.fkcolumns && con.fkcolumns.length > 0) {
+ fk.columnid = con.fkcolumns[0];
+ }
+ var fktable = alasql.databases[fk.databaseid || databaseid].tables[fk.tableid];
+ if (typeof fk.columnid === 'undefined') {
+ fk.columnid = fktable.pk.columns[0];
+ }
+
+ checkfn = function(r) {
+ var rr = {};
+ if (typeof r[col.columnid] === 'undefined') {
+ return true;
+ }
+ rr[fk.columnid] = r[col.columnid];
+ var addr = fktable.pk.onrightfn(rr);
+
+ if (!fktable.uniqs[fktable.pk.hh][addr]) {
+
+ throw new Error(
+ 'Foreign key "' +
+ r[col.columnid] +
+ '" is not found in table ' +
+ fktable.tableid
+ );
+ }
+ return true;
+ };
+ }
+ if (checkfn) {
+ table.checks.push({fn: checkfn, id: con.constraintid, fk: con.type === 'FOREIGN KEY'});
+ }
+ });
+
+ if (this.view && this.viewcolumns) {
+ var self = this;
+ this.viewcolumns.forEach(function(vcol, idx) {
+ self.select.columns[idx].as = vcol.columnid;
+ });
+ }
+
+ //Used in 420from queryfn when table.view = true!
+ if (this.view && this.select) {
+ table.view = true;
+
+ table.select = this.select.compile(this.table.databaseid || databaseid);
+ }
+
+ if (db.engineid) {
+
+ return alasql.engines[db.engineid].createTable(
+ this.table.databaseid || databaseid,
+ tableid,
+ this.ifnotexists,
+ cb
+ );
+
+ // return res1;
+ }
+
+ // }
+ // if(table.pk) {
+
+ table.insert = function(r, orreplace) {
+ var oldinserted = alasql.inserted;
+ alasql.inserted = [r];
+
+ var table = this;
+
+ var toreplace = false; // For INSERT OR REPLACE
+
+ /*
+ // IDENTINY or AUTO_INCREMENT
+ // if(table.identities && table.identities.length>0) {
+ // table.identities.forEach(function(ident){
+ // r[ident.columnid] = ident.value;
+ // });
+ // }
+*/
+ // Trigger prevent functionality
+ var prevent = false;
+ for (var tr in table.beforeinsert) {
+ var trigger = table.beforeinsert[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ if (alasql.fn[trigger.funcid](r) === false) prevent = prevent || true;
+ } else if (trigger.statement) {
+ if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
+ }
+ }
+ }
+ if (prevent) return;
+
+ // Trigger prevent functionality
+ var escape = false;
+ for (tr in table.insteadofinsert) {
+ escape = true;
+ trigger = table.insteadofinsert[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ if (escape) return;
+
+ for (var columnid in table.identities) {
+ var ident = table.identities[columnid];
+
+ r[columnid] = ident.value;
+
+ }
+
+ if (table.checks && table.checks.length > 0) {
+ table.checks.forEach(function(check) {
+ if (!check.fn(r)) {
+ // if(orreplace) toreplace=true; else
+ throw new Error('Violation of CHECK constraint ' + (check.id || ''));
+ }
+ });
+ }
+
+ table.columns.forEach(function(column) {
+ if (column.notnull && typeof r[column.columnid] === 'undefined') {
+ throw new Error('Wrong NULL value in NOT NULL column ' + column.columnid);
+ }
+ });
+ if (table.pk) {
+ var pk = table.pk;
+ var addr = pk.onrightfn(r);
+
+ if (typeof table.uniqs[pk.hh][addr] !== 'undefined') {
+
+ if (orreplace) toreplace = table.uniqs[pk.hh][addr];
+ else
+ throw new Error(
+ 'Cannot insert record, because it already exists in primary key index'
+ );
+ }
+ // table.uniqs[pk.hh][addr]=r;
+ }
+
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ var ukaddr = uk.onrightfn(r);
+ if (typeof table.uniqs[uk.hh][ukaddr] !== 'undefined') {
+ if (orreplace) toreplace = table.uniqs[uk.hh][ukaddr];
+ else
+ throw new Error(
+ 'Cannot insert record, because it already exists in unique index'
+ );
+ }
+ // table.uniqs[uk.hh][ukaddr]=r;
+ });
+ }
+
+ if (toreplace) {
+ // Do UPDATE!!!
+
+ table.update(
+ function(t) {
+ for (var f in r) t[f] = r[f];
+ },
+ table.data.indexOf(toreplace),
+ params
+ );
+ } else {
+ table.data.push(r);
+
+ // Final change before insert
+
+ // Update indices
+
+ for (var columnid in table.identities) {
+ var ident = table.identities[columnid];
+
+ ident.value += ident.step;
+
+ }
+
+ if (table.pk) {
+ var pk = table.pk;
+ var addr = pk.onrightfn(r);
+ table.uniqs[pk.hh][addr] = r;
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ var ukaddr = uk.onrightfn(r);
+ table.uniqs[uk.hh][ukaddr] = r;
+ });
+ }
+ }
+
+ // Trigger prevent functionality
+ for (var tr in table.afterinsert) {
+ var trigger = table.afterinsert[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ alasql.inserted = oldinserted;
+ };
+
+ table["delete"] = function(index) {
+ var table = this;
+ var r = table.data[index];
+
+ // Prevent trigger
+ var prevent = false;
+ for (var tr in table.beforedelete) {
+ var trigger = table.beforedelete[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ if (alasql.fn[trigger.funcid](r) === false) prevent = prevent || true;
+ } else if (trigger.statement) {
+ if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
+ }
+ }
+ }
+ if (prevent) return false;
+
+ // Trigger prevent functionality
+ var escape = false;
+ for (var tr in table.insteadofdelete) {
+ escape = true;
+ var trigger = table.insteadofdelete[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ if (escape) return;
+
+ if (this.pk) {
+ var pk = this.pk;
+ var addr = pk.onrightfn(r);
+ if (typeof this.uniqs[pk.hh][addr] === 'undefined') {
+ throw new Error('Something wrong with primary key index on table');
+ } else {
+ this.uniqs[pk.hh][addr] = undefined;
+ }
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ var ukaddr = uk.onrightfn(r);
+ if (typeof table.uniqs[uk.hh][ukaddr] === 'undefined') {
+ throw new Error('Something wrong with unique index on table');
+ }
+ table.uniqs[uk.hh][ukaddr] = undefined;
+ });
+ }
+ };
+
+ table.deleteall = function() {
+ this.data.length = 0;
+ if (this.pk) {
+ // var r = this.data[i];
+ this.uniqs[this.pk.hh] = {};
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ table.uniqs[uk.hh] = {};
+ });
+ }
+ };
+
+ table.update = function(assignfn, i, params) {
+ // TODO: Analyze the speed
+ var r = cloneDeep(this.data[i]);
+
+ var pk;
+ // PART 1 - PRECHECK
+ if (this.pk) {
+ pk = this.pk;
+ pk.pkaddr = pk.onrightfn(r, params);
+ if (typeof this.uniqs[pk.hh][pk.pkaddr] === 'undefined') {
+ throw new Error('Something wrong with index on table');
+ }
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ uk.ukaddr = uk.onrightfn(r);
+ if (typeof table.uniqs[uk.hh][uk.ukaddr] === 'undefined') {
+ throw new Error('Something wrong with unique index on table');
+ }
+ });
+ }
+
+ assignfn(r, params, alasql);
+
+ // Prevent trigger
+ var prevent = false;
+ for (var tr in table.beforeupdate) {
+ var trigger = table.beforeupdate[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ if (alasql.fn[trigger.funcid](this.data[i], r) === false)
+ prevent = prevent || true;
+ } else if (trigger.statement) {
+ if (trigger.statement.execute(databaseid) === false) prevent = prevent || true;
+ }
+ }
+ }
+ if (prevent) return false;
+
+ // Trigger prevent functionality
+ var escape = false;
+ for (var tr in table.insteadofupdate) {
+ escape = true;
+ var trigger = table.insteadofupdate[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](this.data[i], r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ if (escape) return;
+
+ // PART 2 - POST CHECK
+ if (table.checks && table.checks.length > 0) {
+ table.checks.forEach(function(check) {
+ if (!check.fn(r)) {
+ throw new Error('Violation of CHECK constraint ' + (check.id || ''));
+ }
+ });
+ }
+
+ table.columns.forEach(function(column) {
+ if (column.notnull && typeof r[column.columnid] === 'undefined') {
+ throw new Error('Wrong NULL value in NOT NULL column ' + column.columnid);
+ }
+ });
+ if (this.pk) {
+ pk.newpkaddr = pk.onrightfn(r);
+ if (
+ typeof this.uniqs[pk.hh][pk.newpkaddr] !== 'undefined' &&
+ pk.newpkaddr !== pk.pkaddr
+ ) {
+ throw new Error('Record already exists');
+ }
+ }
+
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ uk.newukaddr = uk.onrightfn(r);
+ if (
+ typeof table.uniqs[uk.hh][uk.newukaddr] !== 'undefined' &&
+ uk.newukaddr !== uk.ukaddr
+ ) {
+ throw new Error('Record already exists');
+ }
+ });
+ }
+
+ // PART 3 UPDATE
+ if (this.pk) {
+ this.uniqs[pk.hh][pk.pkaddr] = undefined;
+ this.uniqs[pk.hh][pk.newpkaddr] = r;
+ }
+ if (table.uk && table.uk.length) {
+ table.uk.forEach(function(uk) {
+ table.uniqs[uk.hh][uk.ukaddr] = undefined;
+ table.uniqs[uk.hh][uk.newukaddr] = r;
+ });
+ }
+
+ this.data[i] = r;
+
+ // Trigger prevent functionality
+ for (var tr in table.afterupdate) {
+ var trigger = table.afterupdate[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid](this.data[i], r);
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+ };
+
+ var res;
+
+ if (!alasql.options.nocount) {
+ res = 1;
+ }
+
+ if (cb) res = cb(res);
+ return res;
+};
+
+//
+// Date functions
+//
+// (c) 2014, Andrey Gershun
+//
+
+/** Standard JavaScript data types */
+
+alasql.fn.Date = Object;
+alasql.fn.Date = Date;
+alasql.fn.Number = Number;
+alasql.fn.String = String;
+alasql.fn.Boolean = Boolean;
+
+/** Extend Object with properties */
+stdfn.EXTEND = alasql.utils.extend;
+
+stdfn.CHAR = String.fromCharCode.bind(String);
+stdfn.ASCII = function(a) {
+ return a.charCodeAt(0);
+};
+
+/**
+ Return first non-null argument
+ See https://msdn.microsoft.com/en-us/library/ms190349.aspx
+*/
+stdfn.COALESCE = function() {
+ for (var i = 0; i < arguments.length; i++) {
+ if (typeof arguments[i] == 'undefined') continue;
+ if (typeof arguments[i] == 'number' && isNaN(arguments[i])) continue;
+ return arguments[i];
+ }
+ return undefined;
+};
+
+stdfn.USER = function() {
+ return 'alasql';
+};
+
+stdfn.OBJECT_ID = function(objid) {
+ return !!alasql.tables[objid];
+};
+
+stdfn.DATE = function(d) {
+ if (/\d{8}/.test(d)) return new Date(+d.substr(0, 4), +d.substr(4, 2) - 1, +d.substr(6, 2));
+ return new Date(d);
+};
+
+stdfn.NOW = function() {
+ var d = new Date();
+ var s =
+ d.getFullYear() +
+ '.' +
+ ('0' + (d.getMonth() + 1)).substr(-2) +
+ '.' +
+ ('0' + d.getDate()).substr(-2);
+ s +=
+ ' ' +
+ ('0' + d.getHours()).substr(-2) +
+ ':' +
+ ('0' + d.getMinutes()).substr(-2) +
+ ':' +
+ ('0' + d.getSeconds()).substr(-2);
+ s += '.' + ('00' + d.getMilliseconds()).substr(-3);
+ return s;
+};
+
+stdfn.GETDATE = stdfn.NOW;
+stdfn.CURRENT_TIMESTAMP = stdfn.NOW;
+
+stdfn.SECOND = function(d) {
+ var d = new Date(d);
+ return d.getSeconds();
+};
+
+stdfn.MINUTE = function(d) {
+ var d = new Date(d);
+ return d.getMinutes();
+};
+
+stdfn.HOUR = function(d) {
+ var d = new Date(d);
+ return d.getHours();
+};
+
+stdfn.DAYOFWEEK = stdfn.WEEKDAY = function(d) {
+ var d = new Date(d);
+ return d.getDay();
+};
+
+stdfn.DAY = stdfn.DAYOFMONTH = function(d) {
+ var d = new Date(d);
+ return d.getDate();
+};
+
+stdfn.MONTH = function(d) {
+ var d = new Date(d);
+ return d.getMonth() + 1;
+};
+
+stdfn.YEAR = function(d) {
+ var d = new Date(d);
+ return d.getFullYear();
+};
+
+var PERIODS = {
+ year: 1000 * 3600 * 24 * 365,
+ quarter: 1000 * 3600 * 24 * 365 / 4,
+ month: 1000 * 3600 * 24 * 30,
+ week: 1000 * 3600 * 24 * 7,
+ day: 1000 * 3600 * 24,
+ dayofyear: 1000 * 3600 * 24,
+ weekday: 1000 * 3600 * 24,
+ hour: 1000 * 3600,
+ minute: 1000 * 60,
+ second: 1000,
+ millisecond: 1,
+ microsecond: 0.001,
+};
+
+alasql.stdfn.DATEDIFF = function(period, d1, d2) {
+ var interval = new Date(d2).getTime() - new Date(d1).getTime();
+ return interval / PERIODS[period.toLowerCase()];
+};
+
+alasql.stdfn.DATEADD = function(period, interval, d) {
+ var nd = new Date(d).getTime() + interval * PERIODS[period.toLowerCase()];
+ return new Date(nd);
+};
+
+alasql.stdfn.INTERVAL = function(interval, period) {
+ return interval * PERIODS[period.toLowerCase()];
+};
+
+alasql.stdfn.DATE_ADD = alasql.stdfn.ADDDATE = function(d, interval) {
+ var nd = new Date(d).getTime() + interval;
+ return new Date(nd);
+};
+
+alasql.stdfn.DATE_SUB = alasql.stdfn.SUBDATE = function(d, interval) {
+ var nd = new Date(d).getTime() - interval;
+ return new Date(nd);
+};
+
+/*
+//
+// DROP TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.DropTable = function(params) {
+ return yy.extend(this, params);
+};
+yy.DropTable.prototype.toString = function() {
+ var s = 'DROP' + ' ';
+ if (this.view) s += 'VIEW';
+ else s += 'TABLE';
+ if (this.ifexists) s += ' IF EXISTS';
+ s += ' ' + this.tables.toString();
+ return s;
+};
+
+// DROP TABLE
+/**
+ Drop tables
+ @param {string} databaseid Database id
+ @param {object} params Parameters
+ @param {callback} cb Callback function
+ @return Number of dropped tables
+ @example
+ DROP TABLE one;
+ DROP TABLE IF NOT EXISTS two, three;
+*/
+yy.DropTable.prototype.execute = function(databaseid, params, cb) {
+ var ifexists = this.ifexists;
+ var res = 0; // No tables removed
+ var count = 0;
+ var tlen = this.tables.length;
+
+ // For each table in the list
+ this.tables.forEach(function(table) {
+ var db = alasql.databases[table.databaseid || databaseid];
+ var tableid = table.tableid;
+
+ /** @todo Test with AUTOCOMMIT flag is ON */
+ /** @todo Test with IndexedDB and multiple tables */
+
+ if (!ifexists || (ifexists && db.tables[tableid])) {
+ if (!db.tables[tableid]) {
+ if (!alasql.options.dropifnotexists) {
+ throw new Error(
+ "Can not drop table '" +
+ table.tableid +
+ "', because it does not exist in the database."
+ );
+ }
+ } else {
+ if (db.engineid /*&& alasql.options.autocommit*/) {
+ alasql.engines[db.engineid].dropTable(
+ table.databaseid || databaseid,
+ tableid,
+ ifexists,
+ function(res1) {
+ delete db.tables[tableid];
+ res += res1;
+ count++;
+ if (count == tlen && cb) cb(res);
+ }
+ );
+ } else {
+ delete db.tables[tableid];
+ res++;
+ count++;
+ if (count == tlen && cb) cb(res);
+ }
+ }
+ } else {
+ count++;
+ if (count == tlen && cb) cb(res);
+ }
+ });
+ // if(cb) res = cb(res);
+ return res;
+};
+
+yy.TruncateTable = function(params) {
+ return yy.extend(this, params);
+};
+yy.TruncateTable.prototype.toString = function() {
+ var s = 'TRUNCATE TABLE';
+ s += ' ' + this.table.toString();
+ return s;
+};
+
+yy.TruncateTable.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[this.table.databaseid || databaseid];
+ var tableid = this.table.tableid;
+ if (db.engineid) {
+ return alasql.engines[db.engineid].truncateTable(
+ this.table.databaseid || databaseid,
+ tableid,
+ this.ifexists,
+ cb
+ );
+ }
+ if (db.tables[tableid]) {
+ db.tables[tableid].data = [];
+ } else {
+ throw new Error('Cannot truncate table becaues it does not exist');
+ }
+ return cb ? cb(0) : 0;
+};
+
+/*
+//
+// CREATE VERTEX for AlaSQL
+// Date: 21.04.2015
+// (c) 2015, Andrey Gershun
+//
+*/
+
+yy.CreateVertex = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateVertex.prototype.toString = function() {
+ var s = 'CREATE VERTEX ';
+ if (this["class"]) {
+ s += this["class"] + ' ';
+ }
+ if (this.sharp) {
+ s += '#' + this.sharp + ' ';
+ }
+ if (this.sets) {
+ s += this.sets.toString();
+ } else if (this.content) {
+ s += this.content.toString();
+ } else if (this.select) {
+ s += this.select.toString();
+ }
+
+ return s;
+};
+
+yy.CreateVertex.prototype.toJS = function(context) {
+
+ var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
+ // var s = '';
+ return s;
+};
+
+// CREATE TABLE
+
+yy.CreateVertex.prototype.compile = function(databaseid) {
+ var dbid = databaseid;
+
+ // CREATE VERTEX #id
+ var sharp = this.sharp;
+
+ // CREATE VERTEX "Name"
+ if (typeof this.name !== 'undefined') {
+ var s = 'x.name=' + this.name.toJS();
+ var namefn = new Function('x', s);
+ }
+
+ if (this.sets && this.sets.length > 0) {
+ var s = this.sets
+ .map(function(st) {
+ return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
+ })
+ .join(';');
+ var setfn = new Function('x,params,alasql', s);
+ }
+
+ // Todo: check for content, select and default
+
+ var statement = function(params, cb) {
+ var res;
+
+ // CREATE VERTEX without parameters
+ var db = alasql.databases[dbid];
+ var id;
+ if (typeof sharp !== 'undefined') {
+ id = sharp;
+ } else {
+ id = db.counter++;
+ }
+ var vertex = {$id: id, $node: 'VERTEX'};
+ db.objects[vertex.$id] = vertex;
+ res = vertex;
+ if (namefn) {
+ namefn(vertex);
+ }
+ if (setfn) {
+ setfn(vertex, params, alasql);
+ }
+
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+ };
+ return statement;
+};
+
+yy.CreateEdge = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateEdge.prototype.toString = function() {
+
+ var s = 'CREATE EDGE' + ' ';
+ if (this["class"]) {
+ s += this["class"] + ' ';
+ }
+ // todo: SET
+ // todo: CONTENT
+ // todo: SELECT
+ return s;
+};
+
+yy.CreateEdge.prototype.toJS = function(context) {
+ var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
+ return s;
+};
+
+// CREATE TABLE
+
+yy.CreateEdge.prototype.compile = function(databaseid) {
+ var dbid = databaseid;
+ var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
+ var tofn = new Function('params,alasql', 'var y;return ' + this.to.toJS());
+
+ // CREATE VERTEX "Name"
+ if (typeof this.name !== 'undefined') {
+ var s = 'x.name=' + this.name.toJS();
+ var namefn = new Function('x', s);
+ }
+
+ if (this.sets && this.sets.length > 0) {
+ var s = this.sets
+ .map(function(st) {
+ return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
+ })
+ .join(';');
+ var setfn = new Function('x,params,alasql', 'var y;' + s);
+ }
+
+ /*
+ todo: handle content, select and default
+ else if(this.content) {
+
+ } else if(this.select) {
+
+ } else {
+ }
+ */
+
+ var statement = function(params, cb) {
+ var res = 0;
+ // CREATE VERTEX without parameters
+ var db = alasql.databases[dbid];
+ var edge = {$id: db.counter++, $node: 'EDGE'};
+ var v1 = fromfn(params, alasql);
+ var v2 = tofn(params, alasql);
+ // Set link
+ edge.$in = [v1.$id];
+ edge.$out = [v2.$id];
+ // Set sides
+ if (v1.$out === undefined) {
+ v1.$out = [];
+ }
+ v1.$out.push(edge.$id);
+
+ if (typeof v2.$in === undefined) {
+ v2.$in = [];
+ }
+ v2.$in.push(edge.$id);
+
+ // Save in objects
+ db.objects[edge.$id] = edge;
+ res = edge;
+ if (namefn) {
+ namefn(edge);
+ }
+
+ if (setfn) {
+ setfn(edge, params, alasql);
+ }
+
+ if (cb) {
+ res = cb(res);
+ }
+
+ return res;
+ };
+ return statement;
+};
+
+yy.CreateGraph = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateGraph.prototype.toString = function() {
+ var s = 'CREATE GRAPH' + ' ';
+ if (this["class"]) {
+ s += this["class"] + ' ';
+ }
+ return s;
+};
+
+yy.CreateGraph.prototype.execute = function(databaseid, params, cb) {
+ var res = [];
+ if (this.from) {
+ if (alasql.from[this.from.funcid]) {
+ this.graph = alasql.from[this.from.funcid.toUpperCase()];
+ }
+ }
+
+ // stop;
+ this.graph.forEach(function(g) {
+ if (g.source) {
+ // GREATE EDGE
+ var e = {};
+ if (typeof g.as !== 'undefined') {
+ alasql.vars[g.as] = e;
+ }
+
+ if (typeof g.prop !== 'undefined') {
+ // e[g.prop] = e;
+ // v.$id = g.prop; // We do not create $id for edge automatically
+ e.name = g.prop;
+ }
+ if (typeof g.sharp !== 'undefined') {
+ e.$id = g.sharp;
+ }
+ if (typeof g.name !== 'undefined') {
+ e.name = g.name;
+ }
+ if (typeof g["class"] !== 'undefined') {
+ e.$class = g["class"];
+ }
+
+ var db = alasql.databases[databaseid];
+ if (typeof e.$id === 'undefined') {
+ e.$id = db.counter++;
+ }
+ e.$node = 'EDGE';
+ if (typeof g.json !== 'undefined') {
+ extend(
+ e,
+ new Function('params,alasql', 'var y;return ' + g.json.toJS())(params, alasql)
+ );
+ }
+
+ var v1;
+ if (g.source.vars) {
+ var vo = alasql.vars[g.source.vars];
+ if (typeof vo === 'object') {
+ v1 = vo;
+ } else {
+ v1 = db.objects[vo];
+ }
+ } else {
+ var av1 = g.source.sharp;
+ if (typeof av1 === 'undefined') {
+ av1 = g.source.prop;
+ }
+ v1 = alasql.databases[databaseid].objects[av1];
+ if (
+ typeof v1 === 'undefined' &&
+ alasql.options.autovertex &&
+ (typeof g.source.prop !== 'undefined' || typeof g.source.name !== 'undefined')
+ ) {
+ v1 = findVertex(g.source.prop || g.source.name);
+ if (typeof v1 === 'undefined') {
+ v1 = createVertex(g.source);
+ }
+ }
+ }
+
+ var v2;
+ if (g.source.vars) {
+ var vo = alasql.vars[g.target.vars];
+ if (typeof vo === 'object') {
+ v2 = vo;
+ } else {
+ v2 = db.objects[vo];
+ }
+ } else {
+ var av2 = g.target.sharp;
+ if (typeof av2 === 'undefined') {
+ av2 = g.target.prop;
+ }
+ v2 = alasql.databases[databaseid].objects[av2];
+ if (
+ typeof v2 === 'undefined' &&
+ alasql.options.autovertex &&
+ (typeof g.target.prop !== 'undefined' || typeof g.target.name !== 'undefined')
+ ) {
+ v2 = findVertex(g.target.prop || g.target.name);
+ if (typeof v2 === 'undefined') {
+ v2 = createVertex(g.target);
+ }
+ }
+ }
+
+ // Set link
+ e.$in = [v1.$id];
+ e.$out = [v2.$id];
+ // Set sides
+ if (typeof v1.$out === 'undefined') {
+ v1.$out = [];
+ }
+ v1.$out.push(e.$id);
+ if (typeof v2.$in === 'undefined') {
+ v2.$in = [];
+ }
+ v2.$in.push(e.$id);
+
+ db.objects[e.$id] = e;
+ if (typeof e.$class !== 'undefined') {
+ if (typeof alasql.databases[databaseid].tables[e.$class] === 'undefined') {
+ throw new Error('No such class. Pleace use CREATE CLASS');
+ } else {
+ // TODO - add insert()
+ alasql.databases[databaseid].tables[e.$class].data.push(e);
+ }
+ }
+
+ res.push(e.$id);
+ } else {
+ createVertex(g);
+ }
+ });
+
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+
+ // Find vertex by name
+ function findVertex(name) {
+ var objects = alasql.databases[alasql.useid].objects;
+ for (var k in objects) {
+ if (objects[k].name === name) {
+ return objects[k];
+ }
+ }
+ return undefined;
+ }
+
+ function createVertex(g) {
+ // GREATE VERTEX
+ var v = {};
+ if (typeof g.as !== 'undefined') {
+ alasql.vars[g.as] = v;
+ }
+
+ if (typeof g.prop !== 'undefined') {
+ // v[g.prop] = true;
+ v.$id = g.prop;
+ v.name = g.prop;
+ }
+
+ if (typeof g.sharp !== 'undefined') {
+ v.$id = g.sharp;
+ }
+ if (typeof g.name !== 'undefined') {
+ v.name = g.name;
+ }
+ if (typeof g["class"] !== 'undefined') {
+ v.$class = g["class"];
+ }
+
+ var db = alasql.databases[databaseid];
+ if (typeof v.$id === 'undefined') {
+ v.$id = db.counter++;
+ }
+ v.$node = 'VERTEX';
+ if (typeof g.json !== 'undefined') {
+ extend(
+ v,
+ new Function('params,alasql', 'var y;return ' + g.json.toJS())(params, alasql)
+ );
+ }
+ db.objects[v.$id] = v;
+ if (typeof v.$class !== 'undefined') {
+ if (typeof alasql.databases[databaseid].tables[v.$class] === 'undefined') {
+ throw new Error('No such class. Pleace use CREATE CLASS');
+ } else {
+ // TODO - add insert()
+ alasql.databases[databaseid].tables[v.$class].data.push(v);
+ }
+ }
+
+ res.push(v.$id);
+ return v;
+ }
+};
+
+yy.CreateGraph.prototype.compile1 = function(databaseid) {
+ var dbid = databaseid;
+ var fromfn = new Function('params,alasql', 'var y;return ' + this.from.toJS());
+ var tofn = new Function('params,alasql', 'var y;return ' + this.to.toJS());
+
+ // CREATE VERTEX "Name"
+ if (typeof this.name !== 'undefined') {
+ var s = 'x.name=' + this.name.toJS();
+ var namefn = new Function('x', s);
+ }
+
+ if (this.sets && this.sets.length > 0) {
+ var s = this.sets
+ .map(function(st) {
+ return "x['" + st.column.columnid + "']=" + st.expression.toJS('x', '');
+ })
+ .join(';');
+ var setfn = new Function('x,params,alasql', 'var y;' + s);
+ }
+
+ // Todo: handle content, select and default
+
+ var statement = function(params, cb) {
+ var res = 0;
+ // CREATE VERTEX without parameters
+ var db = alasql.databases[dbid];
+ var edge = {$id: db.counter++, $node: 'EDGE'};
+ var v1 = fromfn(params, alasql);
+ var v2 = tofn(params, alasql);
+ // Set link
+ edge.$in = [v1.$id];
+ edge.$out = [v2.$id];
+ // Set sides
+ if (typeof v1.$out === 'undefined') {
+ v1.$out = [];
+ }
+ v1.$out.push(edge.$id);
+
+ if (typeof v2.$in === 'undefined') {
+ v2.$in = [];
+ }
+ v2.$in.push(edge.$id);
+ // Save in objects
+ db.objects[edge.$id] = edge;
+ res = edge;
+ if (namefn) {
+ namefn(edge);
+ }
+ if (setfn) {
+ setfn(edge, params, alasql);
+ }
+
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+ };
+ return statement;
+};
+
+/*
+//
+// ALTER TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+/* global alasql yy */
+
+// ALTER TABLE table1 RENAME TO table2
+yy.AlterTable = function(params) {
+ return yy.extend(this, params);
+};
+yy.AlterTable.prototype.toString = function() {
+ var s = 'ALTER TABLE ' + this.table.toString();
+ if (this.renameto) s += ' RENAME TO ' + this.renameto;
+ return s;
+};
+
+yy.AlterTable.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[databaseid];
+ db.dbversion = Date.now();
+
+ if (this.renameto) {
+ var oldtableid = this.table.tableid;
+ var newtableid = this.renameto;
+ var res = 1;
+ if (db.tables[newtableid]) {
+ throw new Error(
+ "Can not rename a table '" +
+ oldtableid +
+ "' to '" +
+ newtableid +
+ "', because the table with this name already exists"
+ );
+ } else if (newtableid === oldtableid) {
+ throw new Error("Can not rename a table '" + oldtableid + "' to itself");
+ } else {
+ db.tables[newtableid] = db.tables[oldtableid];
+ delete db.tables[oldtableid];
+ res = 1;
+ }
+ if (cb) cb(res);
+ return res;
+ } else if (this.addcolumn) {
+ db = alasql.databases[this.table.databaseid || databaseid];
+ db.dbversion++;
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var columnid = this.addcolumn.columnid;
+ if (table.xcolumns[columnid]) {
+ throw new Error(
+ 'Cannot add column "' +
+ columnid +
+ '", because it already exists in the table "' +
+ tableid +
+ '"'
+ );
+ }
+
+ var col = {
+ columnid: columnid,
+ dbtypeid: this.dbtypeid,
+ dbsize: this.dbsize,
+ dbprecision: this.dbprecision,
+ dbenum: this.dbenum,
+ defaultfns: null, // TODO defaultfns!!!
+ };
+
+ var defaultfn = function() {};
+
+ table.columns.push(col);
+ table.xcolumns[columnid] = col;
+
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+
+ table.data[i][columnid] = defaultfn();
+ }
+
+ // TODO
+ return cb ? cb(1) : 1;
+ } else if (this.modifycolumn) {
+ var db = alasql.databases[this.table.databaseid || databaseid];
+ db.dbversion++;
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var columnid = this.modifycolumn.columnid;
+
+ if (!table.xcolumns[columnid]) {
+ throw new Error(
+ 'Cannot modify column "' +
+ columnid +
+ '", because it was not found in the table "' +
+ tableid +
+ '"'
+ );
+ }
+
+ col = table.xcolumns[columnid];
+ col.dbtypeid = this.dbtypeid;
+ col.dbsize = this.dbsize;
+ col.dbprecision = this.dbprecision;
+ col.dbenum = this.dbenum;
+
+ // TODO
+ return cb ? cb(1) : 1;
+ } else if (this.renamecolumn) {
+ var db = alasql.databases[this.table.databaseid || databaseid];
+ db.dbversion++;
+
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var columnid = this.renamecolumn;
+ var tocolumnid = this.to;
+
+ var col;
+ if (!table.xcolumns[columnid]) {
+ throw new Error(
+ 'Column "' + columnid + '" is not found in the table "' + tableid + '"'
+ );
+ }
+ if (table.xcolumns[tocolumnid]) {
+ throw new Error(
+ 'Column "' + tocolumnid + '" already exists in the table "' + tableid + '"'
+ );
+ }
+
+ if (columnid != tocolumnid) {
+ for (var j = 0; j < table.columns.length; j++) {
+ if (table.columns[j].columnid == columnid) {
+ table.columns[j].columnid = tocolumnid;
+ }
+ }
+
+ table.xcolumns[tocolumnid] = table.xcolumns[columnid];
+ delete table.xcolumns[columnid];
+
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+
+ table.data[i][tocolumnid] = table.data[i][columnid];
+ delete table.data[i][columnid];
+ }
+ return table.data.length;
+ } else {
+ return cb ? cb(0) : 0;
+ }
+ } else if (this.dropcolumn) {
+ var db = alasql.databases[this.table.databaseid || databaseid];
+ db.dbversion++;
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var columnid = this.dropcolumn;
+
+ var found = false;
+ for (var j = 0; j < table.columns.length; j++) {
+ if (table.columns[j].columnid == columnid) {
+ found = true;
+ table.columns.splice(j, 1);
+ break;
+ }
+ }
+
+ if (!found) {
+ throw new Error(
+ 'Cannot drop column "' +
+ columnid +
+ '", because it was not found in the table "' +
+ tableid +
+ '"'
+ );
+ }
+
+ delete table.xcolumns[columnid];
+
+ for (i = 0, ilen = table.data.length; i < ilen; i++) {
+ delete table.data[i][columnid];
+ }
+ return cb ? cb(table.data.length) : table.data.length;
+ } else {
+ throw Error('Unknown ALTER TABLE method');
+ }
+};
+
+/*
+//
+// CREATE TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.CreateIndex = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateIndex.prototype.toString = function() {
+ var s = 'CREATE';
+ if (this.unique) s += ' UNIQUE';
+ s += ' INDEX ' + this.indexid + ' ON ' + this.table.toString();
+ s += '(' + this.columns.toString() + ')';
+ return s;
+};
+
+// CREATE TABLE
+yy.CreateIndex.prototype.execute = function(databaseid, params, cb) {
+ // var self = this;
+ var db = alasql.databases[databaseid];
+ var tableid = this.table.tableid;
+ var table = db.tables[tableid];
+ var indexid = this.indexid;
+ db.indices[indexid] = tableid;
+
+ var rightfns = this.columns
+ .map(function(expr) {
+ return expr.expression.toJS('r', '');
+ })
+ .join("+'`'+");
+
+ var rightfn = new Function('r,params,alasql', 'return ' + rightfns);
+
+ if (this.unique) {
+ table.uniqdefs[indexid] = {
+ rightfns: rightfns,
+ };
+ var ux = (table.uniqs[indexid] = {});
+ if (table.data.length > 0) {
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+ var addr = rightfns(table.data[i]);
+ if (!ux[addr]) {
+ ux[addr] = {num: 0};
+ }
+ ux[addr].num++;
+ }
+ }
+ } else {
+ var hh = hash(rightfns);
+ table.inddefs[indexid] = {rightfns: rightfns, hh: hh};
+ table.indices[hh] = {};
+
+ var ix = (table.indices[hh] = {});
+ if (table.data.length > 0) {
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+ var addr = rightfn(table.data[i], params, alasql);
+ if (!ix[addr]) {
+ ix[addr] = [];
+ }
+ ix[addr].push(table.data[i]);
+ }
+ }
+ }
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+yy.Reindex = function(params) {
+ return yy.extend(this, params);
+};
+yy.Reindex.prototype.toString = function() {
+ var s = 'REINDEX ' + this.indexid;
+ return s;
+};
+
+// CREATE TABLE
+yy.Reindex.prototype.execute = function(databaseid, params, cb) {
+ // var self = this;
+ var db = alasql.databases[databaseid];
+ var indexid = this.indexid;
+
+ var tableid = db.indices[indexid];
+ var table = db.tables[tableid];
+ table.indexColumns();
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+/*
+//
+// DROP TABLE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.DropIndex = function(params) {
+ return yy.extend(this, params);
+};
+yy.DropIndex.prototype.toString = function() {
+ return 'DROP INDEX' + this.indexid;
+};
+
+// DROP TABLE
+yy.DropIndex.prototype.compile = function(db) {
+ var indexid = this.indexid;
+ return function() {
+ return 1;
+ };
+};
+
+/*
+//
+// WITH SELECT for Alasql.js
+// Date: 11.01.2015
+// (c) 2015, Andrey Gershun
+//
+*/
+
+yy.WithSelect = function(params) {
+ return yy.extend(this, params);
+};
+yy.WithSelect.prototype.toString = function() {
+ var s = 'WITH ';
+ s +=
+ this.withs
+ .map(function(w) {
+ return w.name + ' AS (' + w.select.toString() + ')';
+ })
+ .join(',') + ' ';
+ s += this.select.toString();
+ return s;
+};
+
+yy.WithSelect.prototype.execute = function(databaseid, params, cb) {
+ var self = this;
+ // Create temporary tables
+ var savedTables = [];
+ self.withs.forEach(function(w) {
+ savedTables.push(alasql.databases[databaseid].tables[w.name]);
+ var tb = (alasql.databases[databaseid].tables[w.name] = new Table({tableid: w.name}));
+ tb.data = w.select.execute(databaseid, params);
+ });
+
+ var res = 1;
+ res = this.select.execute(databaseid, params, function(data) {
+ // Clear temporary tables
+ // setTimeout(function(){
+ self.withs.forEach(function(w, idx) {
+ if (savedTables[idx]) alasql.databases[databaseid].tables[w.name] = savedTables[idx];
+ else delete alasql.databases[databaseid].tables[w.name];
+ });
+ // },0);
+
+ if (cb) data = cb(data);
+ return data;
+ });
+ return res;
+};
+
+/*
+//
+// IF for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.If = function(params) {
+ return yy.extend(this, params);
+};
+yy.If.prototype.toString = function() {
+ var s = 'IF' + ' ';
+ s += this.expression.toString();
+ s += ' ' + this.thenstat.toString();
+ if (this.elsestat) s += ' ELSE ' + this.thenstat.toString();
+ return s;
+};
+
+// CREATE TABLE
+
+yy.If.prototype.execute = function(databaseid, params, cb) {
+ var res;
+
+ var fn = new Function(
+ 'params,alasql,p',
+ 'var y;return ' + this.expression.toJS('({})', '', null)
+ ).bind(this);
+
+ if (fn(params, alasql)) res = this.thenstat.execute(databaseid, params, cb);
+ else {
+ if (this.elsestat) res = this.elsestat.execute(databaseid, params, cb);
+ else {
+ if (cb) res = cb(res);
+ }
+ }
+ // else res = this.elsestat.execute(databaseid,params,cb,scope);
+ return res;
+};
+
+/*
+//
+// CREATE VIEW for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.While = function(params) {
+ return yy.extend(this, params);
+};
+yy.While.prototype.toString = function() {
+ var s = 'WHILE ';
+ s += this.expression.toString();
+ s += ' ' + this.loopstat.toString();
+ return s;
+};
+
+yy.While.prototype.execute = function(databaseid, params, cb) {
+ var self = this;
+ var res = [];
+
+ var fn = new Function('params,alasql,p', 'var y;return ' + this.expression.toJS());
+
+ if (cb) {
+ var first = false;
+ loop();
+ function loop(data) {
+ if (first) {
+ res.push(data);
+ } else {
+ first = true;
+ }
+ setTimeout(function() {
+ if (fn(params, alasql)) {
+ self.loopstat.execute(databaseid, params, loop);
+ } else {
+ res = cb(res);
+ }
+ }, 0);
+ }
+ } else {
+ while (fn(params, alasql)) {
+ var res1 = self.loopstat.execute(databaseid, params);
+ res.push(res1);
+ }
+ }
+ return res;
+};
+
+yy.Break = function(params) {
+ return yy.extend(this, params);
+};
+yy.Break.prototype.toString = function() {
+ var s = 'BREAK';
+ return s;
+};
+
+yy.Break.prototype.execute = function(databaseid, params, cb, scope) {
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+yy.Continue = function(params) {
+ return yy.extend(this, params);
+};
+yy.Continue.prototype.toString = function() {
+ var s = 'CONTINUE';
+ return s;
+};
+
+yy.Continue.prototype.execute = function(databaseid, params, cb, scope) {
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+yy.BeginEnd = function(params) {
+ return yy.extend(this, params);
+};
+yy.BeginEnd.prototype.toString = function() {
+ var s = 'BEGIN ' + this.statements.toString() + ' END';
+ return s;
+};
+
+yy.BeginEnd.prototype.execute = function(databaseid, params, cb, scope) {
+ var self = this;
+ var res = [];
+
+ var idx = 0;
+ runone();
+ function runone() {
+ self.statements[idx].execute(databaseid, params, function(data) {
+ res.push(data);
+ idx++;
+ if (idx < self.statements.length) return runone();
+ if (cb) res = cb(res);
+ });
+ }
+ return res;
+};
+
+/*
+//
+// INSERT for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* global yy alasql*/
+yy.Insert = function(params) {
+ return yy.extend(this, params);
+};
+yy.Insert.prototype.toString = function() {
+ var s = 'INSERT ';
+ if (this.orreplace) s += 'OR REPLACE ';
+ if (this.replaceonly) s = 'REPLACE ';
+ s += 'INTO ' + this.into.toString();
+ if (this.columns) s += '(' + this.columns.toString() + ')';
+ if (this.values) s += ' VALUES ' + this.values.toString();
+ if (this.select) s += ' ' + this.select.toString();
+ return s;
+};
+
+yy.Insert.prototype.toJS = function(context, tableid, defcols) {
+
+ // if(this.expression.reduced) return 'true';
+ // return this.expression.toJS(context, tableid, defcols);
+
+ // var s = 'this.queriesdata['+(this.queriesidx-1)+'][0]';
+
+ var s = 'this.queriesfn[' + (this.queriesidx - 1) + '](this.params,null,' + context + ')';
+
+ return s;
+};
+
+yy.Insert.prototype.compile = function(databaseid) {
+ var self = this;
+ databaseid = self.into.databaseid || databaseid;
+ var db = alasql.databases[databaseid];
+
+ var tableid = self.into.tableid;
+ var table = db.tables[tableid];
+
+ if (!table) {
+ throw "Table '" + tableid + "' could not be found";
+ }
+
+ // Check, if this dirty flag is required
+ var s = '';
+ var sw = '';
+ var s = "db.tables['" + tableid + "'].dirty=true;";
+ var s3 = 'var a,aa=[],x;';
+
+ var s33;
+
+ // INSERT INTO table VALUES
+ if (this.values) {
+ if (this.exists) {
+ this.existsfn = this.exists.map(function(ex) {
+ var nq = ex.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+ if (this.queries) {
+ this.queriesfn = this.queries.map(function(q) {
+ var nq = q.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+
+ self.values.forEach(function(values) {
+ var ss = [];
+
+ // s += 'db.tables[\''+tableid+'\'].data.push({';
+
+ // s += '';
+ if (self.columns) {
+ self.columns.forEach(function(col, idx) {
+
+ // ss.push(col.columnid +':'+ self.values[idx].value.toString());
+
+ // if(rec[f.name.value] == "NULL") rec[f.name.value] = undefined;
+
+ // if(table.xflds[f.name.value].dbtypeid == "INT") rec[f.name.value] = +rec[f.name.value]|0;
+ // else if(table.xflds[f.name.value].dbtypeid == "FLOAT") rec[f.name.value] = +rec[f.name.value];
+ var q = "'" + col.columnid + "':";
+ if (table.xcolumns && table.xcolumns[col.columnid]) {
+ if (
+ ['INT', 'FLOAT', 'NUMBER', 'MONEY'].indexOf(
+ table.xcolumns[col.columnid].dbtypeid
+ ) >= 0
+ ) {
+ //q += ''
+ q += '(x=' + values[idx].toJS() + ',x==undefined?undefined:+x)';
+ } else if (alasql.fn[table.xcolumns[col.columnid].dbtypeid]) {
+ q += '(new ' + table.xcolumns[col.columnid].dbtypeid + '(';
+ q += values[idx].toJS();
+ q += '))';
+ } else {
+ q += values[idx].toJS();
+ }
+ } else {
+ q += values[idx].toJS();
+ }
+ ss.push(q);
+ });
+ } else {
+ // var table = db.tables[tableid];
+
+ if (Array.isArray(values) && table.columns && table.columns.length > 0) {
+ table.columns.forEach(function(col, idx) {
+ var q = "'" + col.columnid + "':";
+ // var val = values[idx].toJS();
+
+ if (['INT', 'FLOAT', 'NUMBER', 'MONEY'].indexOf(col.dbtypeid) >= 0) {
+ q += '+' + values[idx].toJS();
+ } else if (alasql.fn[col.dbtypeid]) {
+ q += '(new ' + col.dbtypeid + '(';
+ q += values[idx].toJS();
+ q += '))';
+ } else {
+ q += values[idx].toJS();
+ }
+
+ ss.push(q);
+
+ });
+ } else {
+
+ // sw = 'var w='+JSONtoJS(values)+';for(var k in w){r[k]=w[k]};';
+ sw = JSONtoJS(values);
+ }
+ }
+
+ if (db.tables[tableid].defaultfns) {
+ ss.unshift(db.tables[tableid].defaultfns);
+ }
+ if (sw) {
+ s += 'a=' + sw + ';';
+ } else {
+ s += 'a={' + ss.join(',') + '};';
+ }
+
+ // If this is a class
+ if (db.tables[tableid].isclass) {
+ s += "var db=alasql.databases['" + databaseid + "'];";
+ s += 'a.$class="' + tableid + '";';
+ s += 'a.$id=db.counter++;';
+ s += 'db.objects[a.$id]=a;';
+ }
+ // s += 'db.tables[\''+tableid+'\'].insert(r);';
+ if (db.tables[tableid].insert) {
+ s += "var db=alasql.databases['" + databaseid + "'];";
+ s +=
+ "db.tables['" +
+ tableid +
+ "'].insert(a," +
+ (self.orreplace ? 'true' : 'false') +
+ ');';
+ } else {
+ s += 'aa.push(a);';
+ }
+ });
+
+ s33 = s3 + s;
+
+ if (db.tables[tableid].insert) {
+ // s += 'alasql.databases[\''+databaseid+'\'].tables[\''+tableid+'\'].insert(r);';
+ } else {
+ s +=
+ "alasql.databases['" +
+ databaseid +
+ "'].tables['" +
+ tableid +
+ "'].data=" +
+ "alasql.databases['" +
+ databaseid +
+ "'].tables['" +
+ tableid +
+ "'].data.concat(aa);";
+ }
+
+ if (db.tables[tableid].insert) {
+ if (db.tables[tableid].isclass) {
+ s += 'return a.$id;';
+ } else {
+ s += 'return ' + self.values.length;
+ }
+ } else {
+ s += 'return ' + self.values.length;
+ }
+
+ var insertfn = new Function('db, params, alasql', 'var y;' + s3 + s).bind(this);
+
+ // INSERT INTO table SELECT
+ } else if (this.select) {
+ this.select.modifier = 'RECORDSET';
+ var selectfn = this.select.compile(databaseid);
+ if (db.engineid && alasql.engines[db.engineid].intoTable) {
+ var statement = function(params, cb) {
+ var aa = selectfn(params);
+ var res = alasql.engines[db.engineid].intoTable(
+ db.databaseid,
+ tableid,
+ aa.data,
+ null,
+ cb
+ );
+ return res;
+ };
+ return statement;
+ } else {
+
+ var defaultfns = 'return alasql.utils.extend(r,{' + table.defaultfns + '})';
+ var defaultfn = new Function('r,db,params,alasql', defaultfns);
+ var insertfn = function(db, params, alasql) {
+ var res = selectfn(params).data;
+ if (db.tables[tableid].insert) {
+ // If insert() function exists (issue #92)
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ var r = cloneDeep(res[i]);
+ defaultfn(r, db, params, alasql);
+ db.tables[tableid].insert(r, self.orreplace);
+ }
+ } else {
+ db.tables[tableid].data = db.tables[tableid].data.concat(res);
+ }
+ if (alasql.options.nocount) return;
+ else return res.length;
+ };
+ }
+ } else if (this["default"]) {
+ var insertfns =
+ "db.tables['" + tableid + "'].data.push({" + table.defaultfns + '});return 1;';
+ var insertfn = new Function('db,params,alasql', insertfns);
+ } else {
+ throw new Error('Wrong INSERT parameters');
+ }
+
+ if (db.engineid && alasql.engines[db.engineid].intoTable && alasql.options.autocommit) {
+ var statement = function(params, cb) {
+ var aa = new Function('db,params', 'var y;' + s33 + 'return aa;')(db, params);
+
+ var res = alasql.engines[db.engineid].intoTable(db.databaseid, tableid, aa, null, cb);
+ // if(cb) cb(res);
+ return res;
+ };
+ } else {
+ var statement = function(params, cb) {
+
+ var db = alasql.databases[databaseid];
+
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].loadTableData(databaseid, tableid);
+ }
+
+ var res = insertfn(db, params, alasql);
+
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].saveTableData(databaseid, tableid);
+ }
+ // var res = insertfn(db, params);
+ if (alasql.options.nocount) res = undefined;
+ if (cb) cb(res);
+ return res;
+ };
+ }
+
+ return statement;
+};
+
+yy.Insert.prototype.execute = function(databaseid, params, cb) {
+ return this.compile(databaseid)(params, cb);
+ // throw new Error('Insert statement is should be compiled')
+};
+
+/*
+//
+// TRIGGER for Alasql.js
+// Date: 29.12.2015
+//
+*/
+
+yy.CreateTrigger = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateTrigger.prototype.toString = function() {
+ var s = 'CREATE TRIGGER ' + this.trigger + ' ';
+ if (this.when) s += this.when + ' ';
+ s += this.action + ' ON ';
+ if (this.table.databaseid) s += this.table.databaseid + '.';
+ s += this.table.tableid + ' ';
+ s += this.statement.toString();
+ return s;
+};
+
+yy.CreateTrigger.prototype.execute = function(databaseid, params, cb) {
+ var res = 1; // No tables removed
+ var triggerid = this.trigger;
+ databaseid = this.table.databaseid || databaseid;
+ var db = alasql.databases[databaseid];
+ var tableid = this.table.tableid;
+
+ var trigger = {
+ action: this.action,
+ when: this.when,
+ statement: this.statement,
+ funcid: this.funcid,
+ };
+
+ db.triggers[triggerid] = trigger;
+ if (trigger.action == 'INSERT' && trigger.when == 'BEFORE') {
+ db.tables[tableid].beforeinsert[triggerid] = trigger;
+ } else if (trigger.action == 'INSERT' && trigger.when == 'AFTER') {
+ db.tables[tableid].afterinsert[triggerid] = trigger;
+ } else if (trigger.action == 'INSERT' && trigger.when == 'INSTEADOF') {
+ db.tables[tableid].insteadofinsert[triggerid] = trigger;
+ } else if (trigger.action == 'DELETE' && trigger.when == 'BEFORE') {
+ db.tables[tableid].beforedelete[triggerid] = trigger;
+ } else if (trigger.action == 'DELETE' && trigger.when == 'AFTER') {
+ db.tables[tableid].afterdelete[triggerid] = trigger;
+ } else if (trigger.action == 'DELETE' && trigger.when == 'INSTEADOF') {
+ db.tables[tableid].insteadofdelete[triggerid] = trigger;
+ } else if (trigger.action == 'UPDATE' && trigger.when == 'BEFORE') {
+ db.tables[tableid].beforeupdate[triggerid] = trigger;
+ } else if (trigger.action == 'UPDATE' && trigger.when == 'AFTER') {
+ db.tables[tableid].afterupdate[triggerid] = trigger;
+ } else if (trigger.action == 'UPDATE' && trigger.when == 'INSTEADOF') {
+ db.tables[tableid].insteadofupdate[triggerid] = trigger;
+ }
+
+ if (cb) res = cb(res);
+ return res;
+};
+
+yy.DropTrigger = function(params) {
+ return yy.extend(this, params);
+};
+yy.DropTrigger.prototype.toString = function() {
+ var s = 'DROP TRIGGER ' + this.trigger;
+ return s;
+};
+
+/**
+ Drop trigger
+ @param {string} databaseid Database id
+ @param {object} params Parameters
+ @param {callback} cb Callback function
+ @return Number of dropped triggers
+ @example
+ DROP TRIGGER one;
+*/
+yy.DropTrigger.prototype.execute = function(databaseid, params, cb) {
+ var res = 0; // No tables removed
+ var db = alasql.databases[databaseid];
+ var triggerid = this.trigger;
+ // For each table in the list
+ var tableid = db.triggers[triggerid];
+ if (tableid) {
+ res = 1;
+ delete db.tables[tableid].beforeinsert[triggerid];
+ delete db.tables[tableid].afterinsert[triggerid];
+ delete db.tables[tableid].insteadofinsert[triggerid];
+ delete db.tables[tableid].beforedelte[triggerid];
+ delete db.tables[tableid].afterdelete[triggerid];
+ delete db.tables[tableid].insteadofdelete[triggerid];
+ delete db.tables[tableid].beforeupdate[triggerid];
+ delete db.tables[tableid].afterupdate[triggerid];
+ delete db.tables[tableid].insteadofupdate[triggerid];
+ delete db.triggers[triggerid];
+ } else {
+ throw new Error('Trigger not found');
+ }
+ if (cb) res = cb(res);
+ return res;
+};
+
+/*
+//
+// DELETE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Delete = function(params) {
+ return yy.extend(this, params);
+};
+yy.Delete.prototype.toString = function() {
+ var s = 'DELETE FROM ' + this.table.toString();
+ if (this.where) s += ' WHERE ' + this.where.toString();
+ return s;
+};
+
+yy.Delete.prototype.compile = function(databaseid) {
+
+ databaseid = this.table.databaseid || databaseid;
+ var tableid = this.table.tableid;
+ var statement;
+ var db = alasql.databases[databaseid];
+
+ if (this.where) {
+
+ // this.query = {};
+
+ if (this.exists) {
+ this.existsfn = this.exists.map(function(ex) {
+ var nq = ex.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+ if (this.queries) {
+ this.queriesfn = this.queries.map(function(q) {
+ var nq = q.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+
+ // try {
+
+ // var query = {};
+
+ var wherefn = new Function(
+ 'r,params,alasql',
+ 'var y;return (' + this.where.toJS('r', '') + ')'
+ ).bind(this);
+
+ statement = function(params, cb) {
+ if (db.engineid && alasql.engines[db.engineid].deleteFromTable) {
+ return alasql.engines[db.engineid].deleteFromTable(
+ databaseid,
+ tableid,
+ wherefn,
+ params,
+ cb
+ );
+ }
+
+ if (alasql.options.autocommit && db.engineid && db.engineid == 'LOCALSTORAGE') {
+ alasql.engines[db.engineid].loadTableData(databaseid, tableid);
+ }
+
+ var table = db.tables[tableid];
+ // table.dirty = true;
+ var orignum = table.data.length;
+
+ var newtable = [];
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+ if (wherefn(table.data[i], params, alasql)) {
+ // Check for transaction - if it is not possible then return all back
+ if (table["delete"]) {
+ table["delete"](i, params, alasql);
+ } else {
+ // Simply do not push
+ }
+ } else newtable.push(table.data[i]);
+ }
+ // table.data = table.data.filter(function(r){return !;});
+ table.data = newtable;
+
+ // Trigger prevent functionality
+ for (var tr in table.afterdelete) {
+ var trigger = table.afterdelete[tr];
+ if (trigger) {
+ if (trigger.funcid) {
+ alasql.fn[trigger.funcid]();
+ } else if (trigger.statement) {
+ trigger.statement.execute(databaseid);
+ }
+ }
+ }
+
+ var res = orignum - table.data.length;
+ if (alasql.options.autocommit && db.engineid && db.engineid == 'LOCALSTORAGE') {
+ alasql.engines[db.engineid].saveTableData(databaseid, tableid);
+ }
+
+ if (cb) cb(res);
+ return res;
+ };
+ // .bind(query);
+
+ // if(!this.queries) return;
+ // query.queriesfn = this.queries.map(function(q) {
+ // return q.compile(alasql.useid);
+ // });
+ } else {
+ statement = function(params, cb) {
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].loadTableData(databaseid, tableid);
+ }
+
+ var table = db.tables[tableid];
+ table.dirty = true;
+ var orignum = db.tables[tableid].data.length;
+ //table.deleteall();
+ // Delete all records from the array
+ db.tables[tableid].data.length = 0;
+
+ // Reset PRIMARY KEY and indexes
+ for (var ix in db.tables[tableid].uniqs) {
+ db.tables[tableid].uniqs[ix] = {};
+ }
+
+ for (var ix in db.tables[tableid].indices) {
+ db.tables[tableid].indices[ix] = {};
+ }
+
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].saveTableData(databaseid, tableid);
+ }
+
+ if (cb) cb(orignum);
+ return orignum;
+ };
+ }
+
+ return statement;
+};
+
+yy.Delete.prototype.execute = function(databaseid, params, cb) {
+ return this.compile(databaseid)(params, cb);
+};
+
+/*
+//
+// UPDATE for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* global yy alasql */
+
+yy.Update = function(params) {
+ return yy.extend(this, params);
+};
+yy.Update.prototype.toString = function() {
+ var s = 'UPDATE ' + this.table.toString();
+ if (this.columns) s += ' SET ' + this.columns.toString();
+ if (this.where) s += ' WHERE ' + this.where.toString();
+ return s;
+};
+
+yy.SetColumn = function(params) {
+ return yy.extend(this, params);
+};
+yy.SetColumn.prototype.toString = function() {
+ return this.column.toString() + '=' + this.expression.toString();
+};
+
+yy.Update.prototype.compile = function(databaseid) {
+
+ databaseid = this.table.databaseid || databaseid;
+ var tableid = this.table.tableid;
+
+ if (this.where) {
+ if (this.exists) {
+ this.existsfn = this.exists.map(function(ex) {
+ var nq = ex.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+ if (this.queries) {
+ this.queriesfn = this.queries.map(function(q) {
+ var nq = q.compile(databaseid);
+ nq.query.modifier = 'RECORDSET';
+ return nq;
+ });
+ }
+
+ var wherefn = new Function(
+ 'r,params,alasql',
+ 'var y;return ' + this.where.toJS('r', '')
+ ).bind(this);
+ }
+
+ // Construct update function
+ var s = alasql.databases[databaseid].tables[tableid].onupdatefns || '';
+ s += ';';
+ this.columns.forEach(function(col) {
+ s += "r['" + col.column.columnid + "']=" + col.expression.toJS('r', '') + ';';
+ });
+
+ var assignfn = new Function('r,params,alasql', 'var y;' + s);
+
+ var statement = function(params, cb) {
+ var db = alasql.databases[databaseid];
+
+ if (db.engineid && alasql.engines[db.engineid].updateTable) {
+
+ return alasql.engines[db.engineid].updateTable(
+ databaseid,
+ tableid,
+ assignfn,
+ wherefn,
+ params,
+ cb
+ );
+ }
+
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].loadTableData(databaseid, tableid);
+ }
+
+ var table = db.tables[tableid];
+ if (!table) {
+ throw new Error("Table '" + tableid + "' not exists");
+ }
+ // table.dirty = true;
+ var numrows = 0;
+ for (var i = 0, ilen = table.data.length; i < ilen; i++) {
+ if (!wherefn || wherefn(table.data[i], params, alasql)) {
+ if (table.update) {
+ table.update(assignfn, i, params);
+ } else {
+ assignfn(table.data[i], params, alasql);
+ }
+ numrows++;
+ }
+ }
+
+ if (alasql.options.autocommit && db.engineid) {
+ alasql.engines[db.engineid].saveTableData(databaseid, tableid);
+ }
+
+ if (cb) cb(numrows);
+ return numrows;
+ };
+ return statement;
+};
+
+yy.Update.prototype.execute = function(databaseid, params, cb) {
+ return this.compile(databaseid)(params, cb);
+};
+
+/*
+//
+// SET for Alasql.js
+// Date: 01.12.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* global alasql, yy */
+
+yy.Merge = function(params) {
+ return yy.extend(this, params);
+};
+yy.Merge.prototype.toString = function() {
+ var s = 'MERGE ';
+ s += this.into.tableid + ' ';
+ if (this.into.as) s += 'AS ' + this.into.as + ' ';
+ s += 'USING ' + this.using.tableid + ' ';
+ if (this.using.as) s += 'AS ' + this.using.as + ' ';
+ s += 'ON ' + this.on.toString() + ' ';
+ this.matches.forEach(function(m) {
+ s += 'WHEN ';
+ if (!m.matched) s += 'NOT ';
+ s += 'MATCHED ';
+ if (m.bytarget) s += 'BY TARGET ';
+ if (m.bysource) s += 'BY SOURCE ';
+ if (m.expr) s += 'AND' + ' ' + m.expr.toString() + ' ';
+ s += 'THEN ';
+ if (m.action["delete"]) s += 'DELETE ';
+ if (m.action.insert) {
+ s += 'INSERT ';
+ if (m.action.columns) s += '(' + m.action.columns.toString() + ') ';
+ if (m.action.values) s += 'VALUES (' + m.action.values.toString() + ') ';
+ if (m.action.defaultvalues) s += 'DEFAULT VALUES ';
+ }
+ if (m.action.update) {
+ s += 'UPDATE ';
+ s +=
+ m.action.update
+ .map(function(u) {
+ return u.toString();
+ })
+ .join(',') + ' ';
+ }
+ });
+
+ return s;
+};
+
+yy.Merge.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+
+ if (cb) res = cb(res);
+ return res;
+};
+
+/*
+//
+// UPDATE for Alasql.js
+// Date: 03.11.2014
+// Modified: 16.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* global yy alasql */
+
+// CREATE DATABASE databaseid
+yy.CreateDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.CreateDatabase.prototype.toString = function() {
+ var s = 'CREATE';
+ if (this.engineid) s += ' ' + this.engineid;
+ s += ' DATABASE';
+ if (this.ifnotexists) s += ' IF NOT EXISTS';
+ s += ' ' + this.databaseid;
+ if (this.args && this.args.length > 0) {
+ s +=
+ '(' +
+ this.args
+ .map(function(arg) {
+ return arg.toString();
+ })
+ .join(', ') +
+ ')';
+ }
+ if (this.as) s += ' AS ' + this.as;
+ return s;
+};
+//yy.CreateDatabase.prototype.compile = returnUndefined;
+yy.CreateDatabase.prototype.execute = function(databaseid, params, cb) {
+ var args;
+ if (this.args && this.args.length > 0) {
+ args = this.args.map(function(arg) {
+
+ return new Function('params,alasql', 'var y;return ' + arg.toJS())(params, alasql);
+ });
+ }
+ if (this.engineid) {
+ var res = alasql.engines[this.engineid].createDatabase(
+ this.databaseid,
+ this.args,
+ this.ifnotexists,
+ this.as,
+ cb
+ );
+ return res;
+ } else {
+ var dbid = this.databaseid;
+ if (alasql.databases[dbid]) {
+ throw new Error("Database '" + dbid + "' already exists");
+ }
+ var a = new alasql.Database(dbid);
+ var res = 1;
+ if (cb) return cb(res);
+ return res;
+ }
+};
+
+// CREATE DATABASE databaseid
+yy.AttachDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.AttachDatabase.prototype.toString = function(args) {
+ var s = 'ATTACH';
+ if (this.engineid) s += ' ' + this.engineid;
+ s += ' DATABASE' + ' ' + this.databaseid;
+ // TODO add params
+ if (args) {
+ s += '(';
+ if (args.length > 0) {
+ s += args
+ .map(function(arg) {
+ return arg.toString();
+ })
+ .join(', ');
+ }
+ s += ')';
+ }
+ if (this.as) s += ' AS' + ' ' + this.as;
+ return s;
+};
+//yy.CreateDatabase.prototype.compile = returnUndefined;
+yy.AttachDatabase.prototype.execute = function(databaseid, params, cb) {
+ if (!alasql.engines[this.engineid]) {
+ throw new Error('Engine "' + this.engineid + '" is not defined.');
+ }
+ var res = alasql.engines[this.engineid].attachDatabase(
+ this.databaseid,
+ this.as,
+ this.args,
+ params,
+ cb
+ );
+ return res;
+};
+
+// CREATE DATABASE databaseid
+yy.DetachDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.DetachDatabase.prototype.toString = function() {
+ var s = 'DETACH';
+ s += ' DATABASE' + ' ' + this.databaseid;
+ return s;
+};
+//yy.CreateDatabase.prototype.compile = returnUndefined;
+yy.DetachDatabase.prototype.execute = function(databaseid, params, cb) {
+ if (!alasql.databases[this.databaseid].engineid) {
+ throw new Error(
+ 'Cannot detach database "' + this.engineid + '", because it was not attached.'
+ );
+ }
+ var res;
+
+ var dbid = this.databaseid;
+
+ if (dbid === alasql.DEFAULTDATABASEID) {
+ throw new Error('Drop of default database is prohibited');
+ }
+
+ if (!alasql.databases[dbid]) {
+ if (!this.ifexists) {
+ throw new Error("Database '" + dbid + "' does not exist");
+ } else {
+ res = 0;
+ }
+ } else {
+ delete alasql.databases[dbid];
+ if (dbid === alasql.useid) {
+ alasql.use();
+ }
+ res = 1;
+ }
+ if (cb) cb(res);
+ return res;
+ // var res = alasql.engines[this.engineid].attachDatabase(this.databaseid, this.as, cb);
+ // return res;
+};
+
+// USE DATABSE databaseid
+// USE databaseid
+yy.UseDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.UseDatabase.prototype.toString = function() {
+ return 'USE' + ' ' + 'DATABASE' + ' ' + this.databaseid;
+};
+//yy.UseDatabase.prototype.compile = returnUndefined;
+yy.UseDatabase.prototype.execute = function(databaseid, params, cb) {
+ var dbid = this.databaseid;
+ if (!alasql.databases[dbid]) {
+ throw new Error("Database '" + dbid + "' does not exist");
+ }
+ alasql.use(dbid);
+ var res = 1;
+ if (cb) cb(res);
+ return res;
+};
+
+// DROP DATABASE databaseid
+yy.DropDatabase = function(params) {
+ return yy.extend(this, params);
+};
+yy.DropDatabase.prototype.toString = function() {
+ var s = 'DROP';
+ if (this.ifexists) s += ' IF EXISTS';
+ s += ' DATABASE ' + this.databaseid;
+ return s;
+};
+//yy.DropDatabase.prototype.compile = returnUndefined;
+yy.DropDatabase.prototype.execute = function(databaseid, params, cb) {
+ if (this.engineid) {
+ return alasql.engines[this.engineid].dropDatabase(this.databaseid, this.ifexists, cb);
+ }
+ var res;
+
+ var dbid = this.databaseid;
+
+ if (dbid === alasql.DEFAULTDATABASEID) {
+ throw new Error('Drop of default database is prohibited');
+ }
+ if (!alasql.databases[dbid]) {
+ if (!this.ifexists) {
+ throw new Error("Database '" + dbid + "' does not exist");
+ } else {
+ res = 0;
+ }
+ } else {
+ if (alasql.databases[dbid].engineid) {
+ throw new Error(
+ "Cannot drop database '" + dbid + "', because it is attached. Detach it."
+ );
+ }
+
+ delete alasql.databases[dbid];
+ if (dbid === alasql.useid) {
+ alasql.use();
+ }
+ res = 1;
+ }
+ if (cb) cb(res);
+ return res;
+};
+
+/*
+//
+// SET for Alasql.js
+// Date: 01.12.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Declare = function(params) {
+ return yy.extend(this, params);
+};
+yy.Declare.prototype.toString = function() {
+ var s = 'DECLARE ';
+ if (this.declares && this.declares.length > 0) {
+ s = this.declares
+ .map(function(declare) {
+ var s = '';
+ s += '@' + declare.variable + ' ';
+ s += declare.dbtypeid;
+ if (this.dbsize) {
+ s += '(' + this.dbsize;
+ if (this.dbprecision) {
+ s += ',' + this.dbprecision;
+ }
+ s += ')';
+ }
+ if (declare.expression) {
+ s += ' = ' + declare.expression.toString();
+ }
+ return s;
+ })
+ .join(',');
+ }
+ return s;
+};
+
+yy.Declare.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ if (this.declares && this.declares.length > 0) {
+ this.declares.map(function(declare) {
+ var dbtypeid = declare.dbtypeid;
+ if (!alasql.fn[dbtypeid]) {
+ dbtypeid = dbtypeid.toUpperCase();
+ }
+ alasql.declares[declare.variable] = {
+ dbtypeid: dbtypeid,
+ dbsize: declare.dbsize,
+ dbprecision: declare.dbprecision,
+ };
+
+ // Set value
+ if (declare.expression) {
+
+ alasql.vars[declare.variable] = new Function(
+ 'params,alasql',
+ 'return ' + declare.expression.toJS('({})', '', null)
+ )(params, alasql);
+ if (alasql.declares[declare.variable]) {
+ alasql.vars[declare.variable] = alasql.stdfn.CONVERT(
+ alasql.vars[declare.variable],
+ alasql.declares[declare.variable]
+ );
+ }
+ }
+ });
+ }
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
+
+/*
+//
+// SHOW for Alasql.js
+// Date: 19.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.ShowDatabases = function(params) {
+ return yy.extend(this, params);
+};
+yy.ShowDatabases.prototype.toString = function() {
+ var s = 'SHOW DATABASES';
+ if (this.like) s += 'LIKE ' + this.like.toString();
+ return s;
+};
+yy.ShowDatabases.prototype.execute = function(databaseid, params, cb) {
+ if (this.engineid) {
+ return alasql.engines[this.engineid].showDatabases(this.like, cb);
+ } else {
+ var self = this;
+ var res = [];
+ for (var dbid in alasql.databases) {
+ res.push({databaseid: dbid});
+ }
+ if (self.like && res && res.length > 0) {
+ res = res.filter(function(d) {
+ // return d.databaseid.match(new RegExp((self.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g'));
+ return alasql.utils.like(self.like.value, d.databaseid);
+ });
+ }
+ if (cb) cb(res);
+ return res;
+ }
+};
+
+yy.ShowTables = function(params) {
+ return yy.extend(this, params);
+};
+yy.ShowTables.prototype.toString = function() {
+ var s = 'SHOW TABLES';
+ if (this.databaseid) s += ' FROM ' + this.databaseid;
+ if (this.like) s += ' LIKE ' + this.like.toString();
+ return s;
+};
+yy.ShowTables.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[this.databaseid || databaseid];
+
+ var self = this;
+ var res = [];
+ for (var tableid in db.tables) {
+ res.push({tableid: tableid});
+ }
+ if (self.like && res && res.length > 0) {
+ res = res.filter(function(d) {
+ //return d.tableid.match(new RegExp((self.like.value||'').replace(/\%/g,'.*').replace(/\?|_/g,'.'),'g'));
+ return alasql.utils.like(self.like.value, d.tableid);
+ });
+ }
+ if (cb) cb(res);
+ return res;
+};
+
+yy.ShowColumns = function(params) {
+ return yy.extend(this, params);
+};
+yy.ShowColumns.prototype.toString = function() {
+ var s = 'SHOW COLUMNS';
+ if (this.table.tableid) s += ' FROM ' + this.table.tableid;
+ if (this.databaseid) s += ' FROM ' + this.databaseid;
+ return s;
+};
+
+yy.ShowColumns.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[this.databaseid || databaseid];
+ var table = db.tables[this.table.tableid];
+
+ if (table && table.columns) {
+ var res = table.columns.map(function(col) {
+ return {columnid: col.columnid, dbtypeid: col.dbtypeid, dbsize: col.dbsize};
+ });
+ if (cb) cb(res);
+ return res;
+ } else {
+ if (cb) cb([]);
+ return [];
+ }
+};
+
+yy.ShowIndex = function(params) {
+ return yy.extend(this, params);
+};
+yy.ShowIndex.prototype.toString = function() {
+ var s = 'SHOW INDEX';
+ if (this.table.tableid) s += ' FROM ' + this.table.tableid;
+ if (this.databaseid) s += ' FROM ' + this.databaseid;
+ return s;
+};
+yy.ShowIndex.prototype.execute = function(databaseid, params, cb) {
+ var db = alasql.databases[this.databaseid || databaseid];
+ var table = db.tables[this.table.tableid];
+ var res = [];
+ if (table && table.indices) {
+ for (var ind in table.indices) {
+ res.push({hh: ind, len: Object.keys(table.indices[ind]).length});
+ }
+ }
+
+ if (cb) cb(res);
+ return res;
+};
+
+yy.ShowCreateTable = function(params) {
+ return yy.extend(this, params);
+};
+yy.ShowCreateTable.prototype.toString = function() {
+ var s = 'SHOW CREATE TABLE ' + this.table.tableid;
+ if (this.databaseid) s += ' FROM ' + this.databaseid;
+ return s;
+};
+yy.ShowCreateTable.prototype.execute = function(databaseid) {
+ var db = alasql.databases[this.databaseid || databaseid];
+ var table = db.tables[this.table.tableid];
+ if (table) {
+ var s = 'CREATE TABLE ' + this.table.tableid + ' (';
+ var ss = [];
+ if (table.columns) {
+ table.columns.forEach(function(col) {
+ var a = col.columnid + ' ' + col.dbtypeid;
+ if (col.dbsize) a += '(' + col.dbsize + ')';
+ if (col.primarykey) a += ' PRIMARY KEY';
+ // TODO extend
+ ss.push(a);
+ });
+ s += ss.join(', ');
+ }
+ s += ')';
+ return s;
+ } else {
+ throw new Error('There is no such table "' + this.table.tableid + '"');
+ }
+};
+
+/*
+//
+// SET for Alasql.js
+// Date: 01.12.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.SetVariable = function(params) {
+ return yy.extend(this, params);
+};
+yy.SetVariable.prototype.toString = function() {
+ var s = 'SET ';
+ if (typeof this.value != 'undefined')
+ s += this.variable.toUpperCase() + ' ' + (this.value ? 'ON' : 'OFF');
+ if (this.expression) s += this.method + this.variable + ' = ' + this.expression.toString();
+ return s;
+};
+
+yy.SetVariable.prototype.execute = function(databaseid, params, cb) {
+
+ if (typeof this.value != 'undefined') {
+ var val = this.value;
+ if (val == 'ON') val = true;
+ else if (val == 'OFF') val = false;
+ // if(this.method == '@') {
+ alasql.options[this.variable] = val;
+ // } else {
+ // params[this.variable] = val;
+ // }
+ } else if (this.expression) {
+ if (this.exists) {
+ this.existsfn = this.exists.map(function(ex) {
+ var nq = ex.compile(databaseid);
+ if (nq.query && !nq.query.modifier) nq.query.modifier = 'RECORDSET';
+ return nq;
+ // return ex.compile(databaseid);
+ // TODO Include modifier
+ });
+ }
+ if (this.queries) {
+ this.queriesfn = this.queries.map(function(q) {
+ var nq = q.compile(databaseid);
+ if (nq.query && !nq.query.modifier) nq.query.modifier = 'RECORDSET';
+ return nq;
+ // TODO Include modifier
+ });
+ }
+
+ var res = new Function(
+ 'params,alasql',
+ 'return ' + this.expression.toJS('({})', '', null)
+ ).bind(this)(params, alasql);
+ if (alasql.declares[this.variable]) {
+ res = alasql.stdfn.CONVERT(res, alasql.declares[this.variable]);
+ }
+ if (this.props && this.props.length > 0) {
+ if (this.method == '@') {
+ var fs = "alasql.vars['" + this.variable + "']";
+ } else {
+ var fs = "params['" + this.variable + "']";
+ }
+ fs += this.props
+ .map(function(prop) {
+ if (typeof prop == 'string') {
+ return "['" + prop + "']";
+ } else if (typeof prop == 'number') {
+ return '[' + prop + ']';
+ } else {
+
+ return '[' + prop.toJS() + ']';
+ // } else {
+
+ // throw new Error('Wrong SET property');
+ }
+ })
+ .join();
+
+ new Function('value,params,alasql', 'var y;' + fs + '=value')(res, params, alasql);
+ } else {
+ if (this.method == '@') {
+ alasql.vars[this.variable] = res;
+ } else {
+ params[this.variable] = res;
+ }
+ }
+ }
+ var res = 1;
+ if (cb) res = cb(res);
+ return res;
+};
+
+// Console functions
+
+/* global alasql, yy */
+
+alasql.test = function(name, times, fn) {
+ if (arguments.length === 0) {
+ alasql.log(alasql.con.results);
+ return;
+ }
+
+ var tm = Date.now();
+
+ if (arguments.length === 1) {
+ fn();
+ alasql.con.log(Date.now() - tm);
+ return;
+ }
+
+ if (arguments.length === 2) {
+ fn = times;
+ times = 1;
+ }
+
+ for (var i = 0; i < times; i++) {
+ fn();
+ }
+ alasql.con.results[name] = Date.now() - tm;
+};
+
+// Console
+// alasql.log = function(sql, params) {
+
+// };
+
+/* global alasql, yy, utils */
+
+// Console
+alasql.log = function(sql, params) {
+ var olduseid = alasql.useid;
+ var target = alasql.options.logtarget;
+ // For node other
+ if (utils.isNode) {
+ target = 'console';
+ }
+
+ var res;
+ if (typeof sql === 'string') {
+ res = alasql(sql, params);
+ } else {
+ res = sql;
+ }
+
+ // For Node and console.output
+ if (target === 'console' || utils.isNode) {
+ if (typeof sql === 'string' && alasql.options.logprompt) {
+ console.log(olduseid + '>', sql);
+ }
+
+ if (Array.isArray(res)) {
+ if (console.table) {
+ // For Chrome and other consoles
+ console.table(res);
+ } else {
+ // Add print procedure
+ console.log(JSONtoString(res));
+ }
+ } else {
+ console.log(JSONtoString(res));
+ }
+ } else {
+ var el;
+ if (target === 'output') {
+ el = document.getElementsByTagName('output')[0];
+ } else {
+ if (typeof target === 'string') {
+ el = document.getElementById(target);
+ } else {
+ // in case of DOM
+ el = target;
+ }
+ }
+
+ var s = '';
+
+ if (typeof sql === 'string' && alasql.options.logprompt) {
+ // s += ''+olduseid+'> '+alasql.pretty(sql)+'
';
+ s += '' + alasql.pretty(sql) + ' ';
+ }
+
+ if (Array.isArray(res)) {
+ if (res.length === 0) {
+ s += '[ ]
';
+ } else if (typeof res[0] !== 'object' || Array.isArray(res[0])) {
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ s += '' + loghtml(res[i]) + '
';
+ }
+ } else {
+ s += loghtml(res);
+ }
+ } else {
+ s += loghtml(res);
+ }
+ el.innerHTML += s;
+ }
+};
+
+alasql.clear = function() {
+ var target = alasql.options.logtarget;
+ // For node other
+
+ if (utils.isNode || utils.isMeteorServer) {
+ if (console.clear) {
+ console.clear();
+ }
+ } else {
+ var el;
+ if (target === 'output') {
+ el = document.getElementsByTagName('output')[0];
+ } else {
+ if (typeof target === 'string') {
+ el = document.getElementById(target);
+ } else {
+ // in case of DOM
+ el = target;
+ }
+ }
+ el.innerHTML = '';
+ }
+};
+
+alasql.write = function(s) {
+
+ var target = alasql.options.logtarget;
+ // For node other
+ if (utils.isNode || utils.isMeteorServer) {
+ if (console.log) {
+ console.log(s);
+ }
+ } else {
+ var el;
+ if (target === 'output') {
+ el = document.getElementsByTagName('output')[0];
+ } else {
+ if (typeof target === 'string') {
+ el = document.getElementById(target);
+ } else {
+ // in case of DOM
+ el = target;
+ }
+ }
+ el.innerHTML += s;
+ }
+};
+
+function loghtml(res) {
+
+ var s = '';
+ if (res === undefined) {
+ s += 'undefined';
+ } else if (Array.isArray(res)) {
+ s += '';
+ s += '';
+ var cols = [];
+ for (var colid in res[0]) {
+ cols.push(colid);
+ }
+ s += '#';
+ cols.forEach(function(colid) {
+ s += ' ' + colid;
+ });
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ s += ' ' + (i + 1);
+ cols.forEach(function(colid) {
+ s += ' ';
+ if (res[i][colid] == +res[i][colid]) {
+ // jshint ignore:line
+ s += '';
+ if (typeof res[i][colid] === 'undefined') {
+ s += 'NULL';
+ } else {
+ s += res[i][colid];
+ }
+ s += '
';
+ } else {
+ if (typeof res[i][colid] === 'undefined') {
+ s += 'NULL';
+ } else if (typeof res[i][colid] === 'string') {
+ s += res[i][colid];
+ } else {
+ s += JSONtoString(res[i][colid]);
+ }
+ // s += res[i][colid];
+ }
+ });
+ }
+
+ s += '
';
+ } else {
+ s += '' + JSONtoString(res) + '
';
+ }
+ // if() {}
+
+ // if(typeof res == 'object') {
+ // s += ''+JSON.stringify(res)+'
';
+ // } else {
+ // }
+ return s;
+}
+
+function scrollTo(element, to, duration) {
+ if (duration <= 0) {
+ return;
+ }
+ var difference = to - element.scrollTop;
+ var perTick = difference / duration * 10;
+
+ setTimeout(function() {
+ if (element.scrollTop === to) {
+ return;
+ }
+ element.scrollTop = element.scrollTop + perTick;
+ scrollTo(element, to, duration - 10);
+ }, 10);
+}
+
+alasql.prompt = function(el, useidel, firstsql) {
+ if (utils.isNode) {
+ throw new Error('The prompt not realized for Node.js');
+ }
+
+ var prompti = 0;
+
+ if (typeof el === 'string') {
+ el = document.getElementById(el);
+ }
+
+ if (typeof useidel === 'string') {
+ useidel = document.getElementById(useidel);
+ }
+
+ useidel.textContent = alasql.useid;
+
+ if (firstsql) {
+ alasql.prompthistory.push(firstsql);
+ prompti = alasql.prompthistory.length;
+ try {
+ var tm = Date.now();
+ alasql.log(firstsql);
+ alasql.write('' + (Date.now() - tm) + ' ms
');
+ } catch (err) {
+ alasql.write('' + olduseid + '> ' + sql + '
');
+ alasql.write('' + err + '
');
+ }
+ }
+
+ var y = el.getBoundingClientRect().top + document.getElementsByTagName('body')[0].scrollTop;
+ scrollTo(document.getElementsByTagName('body')[0], y, 500);
+
+ el.onkeydown = function(event) {
+ if (event.which === 13) {
+ var sql = el.value;
+ var olduseid = alasql.useid;
+ el.value = '';
+ alasql.prompthistory.push(sql);
+ prompti = alasql.prompthistory.length;
+ try {
+ var tm = Date.now();
+ alasql.log(sql);
+ alasql.write('
' + (Date.now() - tm) + ' ms
');
+ } catch (err) {
+ alasql.write('' + olduseid + '> ' + alasql.pretty(sql, false) + '
');
+ alasql.write('' + err + '
');
+ }
+ el.focus();
+
+ useidel.textContent = alasql.useid;
+ var y =
+ el.getBoundingClientRect().top + document.getElementsByTagName('body')[0].scrollTop;
+ scrollTo(document.getElementsByTagName('body')[0], y, 500);
+ } else if (event.which === 38) {
+ prompti--;
+ if (prompti < 0) {
+ prompti = 0;
+ }
+ if (alasql.prompthistory[prompti]) {
+ el.value = alasql.prompthistory[prompti];
+ event.preventDefault();
+ }
+ } else if (event.which === 40) {
+ prompti++;
+ if (prompti >= alasql.prompthistory.length) {
+ prompti = alasql.prompthistory.length;
+ el.value = '';
+ } else if (alasql.prompthistory[prompti]) {
+ el.value = alasql.prompthistory[prompti];
+ event.preventDefault();
+ }
+ }
+ };
+};
+
+/*
+//
+// Commit for Alasql.js
+// Date: 01.12.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+yy.BeginTransaction = function(params) {
+ return yy.extend(this, params);
+};
+yy.BeginTransaction.prototype.toString = function() {
+ return 'BEGIN TRANSACTION';
+};
+
+yy.BeginTransaction.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ if (alasql.databases[databaseid].engineid) {
+ return alasql.engines[alasql.databases[alasql.useid].engineid].begin(databaseid, cb);
+ } else {
+ // alasql commit!!!
+ }
+ if (cb) cb(res);
+ return res;
+};
+
+yy.CommitTransaction = function(params) {
+ return yy.extend(this, params);
+};
+yy.CommitTransaction.prototype.toString = function() {
+ return 'COMMIT TRANSACTION';
+};
+
+yy.CommitTransaction.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ if (alasql.databases[databaseid].engineid) {
+ return alasql.engines[alasql.databases[alasql.useid].engineid].commit(databaseid, cb);
+ } else {
+ // alasql commit!!!
+ }
+ if (cb) cb(res);
+ return res;
+};
+
+yy.RollbackTransaction = function(params) {
+ return yy.extend(this, params);
+};
+yy.RollbackTransaction.prototype.toString = function() {
+ return 'ROLLBACK TRANSACTION';
+};
+
+yy.RollbackTransaction.prototype.execute = function(databaseid, params, cb) {
+ var res = 1;
+ if (alasql.databases[databaseid].engineid) {
+ return alasql.engines[alasql.databases[databaseid].engineid].rollback(databaseid, cb);
+ } else {
+ // alasql commit!!!
+ }
+ if (cb) cb(res);
+ return res;
+};
+
+if (alasql.options.tsql) {
+ //
+ // Check tables and views
+ // IF OBJECT_ID('dbo.Employees') IS NOT NULL
+ // DROP TABLE dbo.Employees;
+ // IF OBJECT_ID('dbo.VSortedOrders', 'V') IS NOT NULL
+ // DROP VIEW dbo.VSortedOrders;
+
+ alasql.stdfn.OBJECT_ID = function(name, type) {
+ if (typeof type == 'undefined') type = 'T';
+ type = type.toUpperCase();
+
+ var sname = name.split('.');
+ var dbid = alasql.useid;
+ var objname = sname[0];
+ if (sname.length == 2) {
+ dbid = sname[0];
+ objname = sname[1];
+ }
+
+ var tables = alasql.databases[dbid].tables;
+ dbid = alasql.databases[dbid].databaseid;
+ for (var tableid in tables) {
+ if (tableid == objname) {
+ // TODO: What OBJECT_ID actually returns
+
+ if (tables[tableid].view && type == 'V') return dbid + '.' + tableid;
+ if (!tables[tableid].view && type == 'T') return dbid + '.' + tableid;
+ return undefined;
+ }
+ }
+
+ return undefined;
+ };
+}
+
+if (alasql.options.mysql) {
+}
+
+if (alasql.options.mysql || alasql.options.sqlite) {
+ // Pseudo INFORMATION_SCHEMA function
+ alasql.from.INFORMATION_SCHEMA = function(filename, opts, cb, idx, query) {
+ if (filename == 'VIEWS' || filename == 'TABLES') {
+ var res = [];
+ for (var databaseid in alasql.databases) {
+ var tables = alasql.databases[databaseid].tables;
+ for (var tableid in tables) {
+ if (
+ (tables[tableid].view && filename == 'VIEWS') ||
+ (!tables[tableid].view && filename == 'TABLES')
+ ) {
+ res.push({TABLE_CATALOG: databaseid, TABLE_NAME: tableid});
+ }
+ }
+ }
+ if (cb) res = cb(res, idx, query);
+ return res;
+ }
+ throw new Error('Unknown INFORMATION_SCHEMA table');
+ };
+}
+
+if (alasql.options.postgres) {
+}
+
+if (alasql.options.oracle) {
+}
+
+if (alasql.options.sqlite) {
+}
+
+//
+// into functions
+//
+// (c) 2014 Andrey Gershun
+//
+
+alasql.into.SQL = function(filename, opts, data, columns, cb) {
+ var res;
+ if (typeof filename === 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+ var opt = {};
+ alasql.utils.extend(opt, opts);
+ if (typeof opt.tableid === 'undefined') {
+ throw new Error('Table for INSERT TO is not defined.');
+ }
+
+ var s = '';
+ if (columns.length === 0) {
+ if (typeof data[0] === 'object') {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ } else {
+ // What should I do?
+ // columns = [{columnid:"_"}];
+ }
+ }
+
+ for (var i = 0, ilen = data.length; i < ilen; i++) {
+ s += 'INSERT INTO ' + opts.tableid + '(';
+ s += columns
+ .map(function(col) {
+ return col.columnid;
+ })
+ .join(',');
+ s += ') VALUES (';
+ s += columns.map(function(col) {
+ var val = data[i][col.columnid];
+ if (col.typeid) {
+ if (
+ col.typeid === 'STRING' ||
+ col.typeid === 'VARCHAR' ||
+ col.typeid === 'NVARCHAR' ||
+ col.typeid === 'CHAR' ||
+ col.typeid === 'NCHAR'
+ ) {
+ val = "'" + escapeqq(val) + "'";
+ }
+ } else {
+ if (typeof val == 'string') {
+ val = "'" + escapeqq(val) + "'";
+ }
+ }
+ return val;
+ });
+ s += ');\n';
+ }
+ // if(filename === '') {
+ // res = s;
+ // } else {
+ // res = data.length;
+ filename = alasql.utils.autoExtFilename(filename, 'sql', opts);
+ res = alasql.utils.saveFile(filename, s);
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
+
+alasql.into.HTML = function(selector, opts, data, columns, cb) {
+ var res = 1;
+ if (typeof exports !== 'object') {
+ var opt = {headers: true};
+ alasql.utils.extend(opt, opts);
+
+ var sel = document.querySelector(selector);
+ if (!sel) {
+ throw new Error('Selected HTML element is not found');
+ }
+
+ if (columns.length === 0) {
+ if (typeof data[0] === 'object') {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ } else {
+ // What should I do?
+ // columns = [{columnid:"_"}];
+ }
+ }
+
+ var tbe = document.createElement('table');
+ var thead = document.createElement('thead');
+ tbe.appendChild(thead);
+ if (opt.headers) {
+ var tre = document.createElement('tr');
+ for (var i = 0; i < columns.length; i++) {
+ var the = document.createElement('th');
+ the.textContent = columns[i].columnid;
+ tre.appendChild(the);
+ }
+ thead.appendChild(tre);
+ }
+
+ var tbody = document.createElement('tbody');
+ tbe.appendChild(tbody);
+ for (var j = 0; j < data.length; j++) {
+ var tre = document.createElement('tr');
+ for (var i = 0; i < columns.length; i++) {
+ var the = document.createElement('td');
+ the.textContent = data[j][columns[i].columnid];
+ tre.appendChild(the);
+ }
+ tbody.appendChild(tre);
+ }
+ alasql.utils.domEmptyChildren(sel);
+
+ sel.appendChild(tbe);
+ }
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
+
+alasql.into.JSON = function(filename, opts, data, columns, cb) {
+ var res = 1;
+ if (typeof filename === 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+ var s = JSON.stringify(data);
+
+ filename = alasql.utils.autoExtFilename(filename, 'json', opts);
+ res = alasql.utils.saveFile(filename, s);
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
+
+alasql.into.TXT = function(filename, opts, data, columns, cb) {
+ // If columns is empty
+ if (columns.length === 0 && data.length > 0) {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
+ // If one parameter
+ if (typeof filename === 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+
+ var res = data.length;
+ var s = '';
+ if (data.length > 0) {
+ var key = columns[0].columnid;
+ s += data
+ .map(function(d) {
+ return d[key];
+ })
+ .join('\n');
+ }
+
+ // } else {
+ // if(utils.isNode) {
+ // process.stdout.write(s);
+ // } else {
+
+ // };
+ // }
+ filename = alasql.utils.autoExtFilename(filename, 'txt', opts);
+ res = alasql.utils.saveFile(filename, s);
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
+
+alasql.into.TAB = alasql.into.TSV = function(filename, opts, data, columns, cb) {
+ var opt = {};
+ alasql.utils.extend(opt, opts);
+ opt.separator = '\t';
+ filename = alasql.utils.autoExtFilename(filename, 'tab', opts);
+ opt.autoExt = false;
+ return alasql.into.CSV(filename, opt, data, columns, cb);
+};
+
+alasql.into.CSV = function(filename, opts, data, columns, cb) {
+ if (columns.length === 0 && data.length > 0) {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
+ if (typeof filename === 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+
+ var opt = {headers: true};
+ //opt.separator = ',';
+ opt.separator = ';';
+ opt.quote = '"';
+
+ opt.utf8Bom = true;
+ if (opts && !opts.headers && typeof opts.headers !== 'undefined') {
+ opt.utf8Bom = false;
+ }
+
+ alasql.utils.extend(opt, opts);
+ var res = data.length;
+ var s = opt.utf8Bom ? '\ufeff' : '';
+ if (opt.headers) {
+ s +=
+ opt.quote +
+ columns
+ .map(function(col) {
+ return col.columnid.trim();
+ })
+ .join(opt.quote + opt.separator + opt.quote) +
+ opt.quote +
+ '\r\n';
+ }
+
+ data.forEach(function(d) {
+ s +=
+ columns
+ .map(function(col) {
+ var s = d[col.columnid];
+ // escape the character wherever it appears in the field
+ if (opt.quote !== '') {
+ s = (s + '').replace(
+ new RegExp('\\' + opt.quote, 'g'),
+ opt.quote + opt.quote
+ );
+ }
+ // if((s+"").indexOf(opt.separator) > -1 || (s+"").indexOf(opt.quote) > -1) s = opt.quote + s + opt.quote;
+
+ //Excel 2013 needs quotes around strings - thanks for _not_ complying with RFC for CSV
+ if (+s != s) {
+ // jshint ignore:line
+ s = opt.quote + s + opt.quote;
+ }
+
+ return s;
+ })
+ .join(opt.separator) + '\r\n';
+ });
+
+ filename = alasql.utils.autoExtFilename(filename, 'csv', opts);
+ res = alasql.utils.saveFile(filename, s, null, {disableAutoBom: true});
+ if (cb) {
+ res = cb(res);
+ }
+ return res;
+};
+
+//
+// 831xl.js - Coloring Excel
+// 18.04.2015
+// Generate XLS file with colors and styles
+// with Excel
+
+alasql.into.XLS = function(filename, opts, data, columns, cb) {
+ // If filename is not defined then output to the result
+ if (typeof filename == 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+
+ // Set sheets
+ var sheets = {};
+ if (opts && opts.sheets) {
+ sheets = opts.sheets;
+ }
+
+ // Default sheet
+ var sheet = {headers: true};
+ if (typeof sheets['Sheet1'] != 'undefined') {
+ sheet = sheets[0];
+ } else {
+ if (typeof opts != 'undefined') {
+ sheet = opts;
+ }
+ }
+
+ // Set sheet name and default is 'Sheet1'
+ if (typeof sheet.sheetid == 'undefined') {
+ sheet.sheetid = 'Sheet1';
+ }
+
+ var s = toHTML();
+
+ // File is ready to save
+ filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
+ var res = alasql.utils.saveFile(filename, s);
+ if (cb) res = cb(res);
+ return res;
+
+ function toHTML() {
+ // Generate prologue
+ var s =
+ '
\
+ \
+ ';
+
+ // Generate body
+ s += '';
+ s += '';
+ if (typeof sheet.caption != 'undefined') {
+ var caption = sheet.caption;
+ if (typeof caption == 'string') {
+ caption = {title: caption};
+ }
+ s += '';
+ s += caption.title;
+ s += ' ';
+ }
+
+ // Columns
+
+ // var columns = [];
+
+ // If columns defined in sheet, then take them
+ if (typeof sheet.columns != 'undefined') {
+ columns = sheet.columns;
+ } else {
+ // Autogenerate columns if they are passed as parameters
+ if (columns.length == 0 && data.length > 0) {
+ if (typeof data[0] == 'object') {
+ if (Array.isArray(data[0])) {
+ columns = data[0].map(function(d, columnidx) {
+ return {columnid: columnidx};
+ });
+ } else {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
+ }
+ }
+ }
+
+ // Prepare columns
+ columns.forEach(function(column, columnidx) {
+ if (typeof sheet.column != 'undefined') {
+ extend(column, sheet.column);
+ }
+
+ if (typeof column.width == 'undefined') {
+ if (sheet.column && sheet.column.width != 'undefined') {
+ column.width = sheet.column.width;
+ } else {
+ column.width = '120px';
+ }
+ }
+ if (typeof column.width == 'number') column.width = column.width + 'px';
+ if (typeof column.columnid == 'undefined') column.columnid = columnidx;
+ if (typeof column.title == 'undefined') column.title = '' + column.columnid.trim();
+ if (sheet.headers && Array.isArray(sheet.headers))
+ column.title = sheet.headers[columnidx];
+ });
+
+ // Set columns widths
+ s += '';
+ columns.forEach(function(column) {
+ s += ' ';
+ });
+ s += ' ';
+
+ // Headers
+ if (sheet.headers) {
+ s += '';
+ s += '';
+
+ // TODO: Skip columns to body
+
+ // Headers
+ columns.forEach(function(column, columnidx) {
+ s += '';
+
+ // Column title
+ if (typeof column.title != 'undefined') {
+ if (typeof column.title == 'function') {
+ s += column.title(sheet, column, columnidx);
+ } else {
+ s += column.title;
+ }
+ }
+ s += ' ';
+ });
+
+ s += ' ';
+ s += ' ';
+ }
+
+ s += '';
+
+ // TODO: Skip lines between header and body
+
+ if (data && data.length > 0) {
+ // TODO: Skip columns to body
+
+ // Loop over data rows
+ data.forEach(function(row, rowidx) {
+ // Limit number of rows on the sheet
+ if (rowidx > sheet.limit) return;
+ // Create row
+ s += '';
+ // Loop over columns
+ columns.forEach(function(column, columnidx) {
+ // Parameters
+ var cell = {};
+ extend(cell, sheet.cell);
+ extend(cell, srow.cell);
+ if (typeof sheet.column != 'undefined') {
+ extend(cell, sheet.column.cell);
+ }
+ extend(cell, column.cell);
+ if (sheet.cells && sheet.cells[rowidx] && sheet.cells[rowidx][columnidx]) {
+ extend(cell, sheet.cells[rowidx][columnidx]);
+ }
+
+ // Create value
+ var value = row[column.columnid];
+ if (typeof cell.value == 'function') {
+ value = cell.value(value, sheet, row, column, cell, rowidx, columnidx);
+ }
+
+ // Define cell type
+ var typeid = cell.typeid;
+ if (typeof typeid == 'function') {
+ typeid = typeid(value, sheet, row, column, cell, rowidx, columnidx);
+ }
+
+ if (typeof typeid == 'undefined') {
+ if (typeof value == 'number') typeid = 'number';
+ else if (typeof value == 'string') typeid = 'string';
+ else if (typeof value == 'boolean') typeid = 'boolean';
+ else if (typeof value == 'object') {
+ if (value instanceof Date) typeid = 'date';
+ }
+ }
+
+ var typestyle = '';
+
+ if (typeid == 'money') {
+ typestyle =
+ 'mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;';
+ } else if (typeid == 'number') {
+ typestyle = ' ';
+ } else if (typeid == 'date') {
+ typestyle = 'mso-number-format:"Short Date";';
+ } else {
+ // FOr other types is saved
+ if (opts.types && opts.types[typeid] && opts.types[typeid].typestyle) {
+ typestyle = opts.types[typeid].typestyle;
+ }
+ }
+
+ // TODO Replace with extend...
+ typestyle = typestyle || 'mso-number-format:"\\@";'; // Default type style
+
+ s += "';
+
+ // TODO Replace with extend...
+ var format = cell.format;
+ if (typeof value == 'undefined') {
+ s += '';
+ } else if (typeof format != 'undefined') {
+ if (typeof format == 'function') {
+ s += format(value);
+ } else if (typeof format == 'string') {
+ s += value; // TODO - add string format
+ } else {
+ throw new Error('Unknown format type. Should be function or string');
+ }
+ } else {
+ if (typeid == 'number' || typeid == 'date') {
+ s += value.toString();
+ } else if (typeid == 'money') {
+ s += (+value).toFixed(2);
+ } else {
+ s += value;
+ }
+ }
+ s += ' ';
+ });
+
+ s += ' ';
+ });
+ }
+
+ s += ' ';
+
+ // Generate epilogue
+ s += '
';
+ s += '';
+ s += '';
+
+ return s;
+ }
+
+ // Style function
+ function style(a) {
+ var s = ' style="';
+ if (a && typeof a.style != 'undefined') {
+ s += a.style + ';';
+ }
+ s += '" ';
+ return s;
+ }
+};
+
+alasql.into.XLSXML = function(filename, opts, data, columns, cb) {
+ opts = opts || {};
+
+ // If filename is not defined then output to the result
+ if (typeof filename == 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+
+ // Set sheets
+ var sheets = {};
+ var sheetsdata;
+ var sheetscolumns;
+ if (opts && opts.sheets) {
+ sheets = opts.sheets;
+ // data and columns are already an array for the sheets
+ sheetsdata = data;
+ sheetscolumns = columns;
+ } else {
+ sheets.Sheet1 = opts;
+ // wrapd ata and columns array for single sheet
+ sheetsdata = [data];
+ sheetscolumns = [columns];
+ }
+
+ // File is ready to save
+ filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
+ var res = alasql.utils.saveFile(filename, toXML());
+ if (cb) res = cb(res);
+ return res;
+
+ function toXML() {
+ var s1 =
+ ' \
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ 0 \
+ \
+ \
+ ';
+
+ var s2 = ''; // for styles
+
+ var s3 = ' ';
+
+ var styles = {}; // hash based storage for styles
+ var stylesn = 62; // First style
+
+ // Generate style
+ function hstyle(st) {
+ // Prepare string
+ var s = '';
+ for (var key in st) {
+ s += '<' + key;
+ for (var attr in st[key]) {
+ s += ' ';
+ if (attr.substr(0, 2) == 'x:') {
+ s += attr;
+ } else {
+ s += 'ss:';
+ }
+ s += attr + '="' + st[key][attr] + '"';
+ }
+ s += '/>';
+ }
+
+ var hh = hash(s);
+ // Store in hash
+ if (styles[hh]) {
+ } else {
+ styles[hh] = {styleid: stylesn};
+ s2 += '';
+ stylesn++;
+ }
+ return 's' + styles[hh].styleid;
+ }
+
+ function values(obj) {
+ try {
+ return Object.values(obj);
+ } catch (e) {
+ // support for older runtimes
+ return Object.keys(obj).map(function(e) {
+ return obj[e];
+ });
+ }
+ }
+
+ var sheetidx = 0;
+ for (var sheetid in sheets) {
+ var sheet = sheets[sheetid];
+ var idx = typeof sheet.dataidx != 'undefined' ? sheet.dataidx : sheetidx++;
+ var data = values(sheetsdata[idx]);
+ // If columns defined in sheet, then take them
+ var columns = undefined;
+ if (typeof sheet.columns != 'undefined') {
+ columns = sheet.columns;
+ } else {
+ // Autogenerate columns if they are passed as parameters
+ columns = sheetscolumns[idx];
+ if (columns === undefined || (columns.length == 0 && data.length > 0)) {
+ if (typeof data[0] == 'object') {
+ if (Array.isArray(data[0])) {
+ columns = data[0].map(function(d, columnidx) {
+ return {columnid: columnidx};
+ });
+ } else {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
+ }
+ }
+ }
+
+ // Prepare columns
+ columns.forEach(function(column, columnidx) {
+ if (typeof sheet.column != 'undefined') {
+ extend(column, sheet.column);
+ }
+
+ if (typeof column.width == 'undefined') {
+ if (sheet.column && typeof sheet.column.width != 'undefined') {
+ column.width = sheet.column.width;
+ } else {
+ column.width = 120;
+ }
+ }
+ if (typeof column.width == 'number') column.width = column.width;
+ if (typeof column.columnid == 'undefined') column.columnid = columnidx;
+ if (typeof column.title == 'undefined') column.title = '' + column.columnid.trim();
+ if (sheet.headers && Array.isArray(sheet.headers))
+ column.title = sheet.headers[columnidx];
+ });
+
+ // Header
+ s3 +=
+ ' \
+ ';
+
+ columns.forEach(function(column, columnidx) {
+ s3 +=
+ ' ';
+ });
+
+ // Headers
+ if (sheet.headers) {
+ s3 += '';
+
+ // TODO: Skip columns to body
+
+ // Headers
+ columns.forEach(function(column, columnidx) {
+ s3 += '';
+
+ // Column title
+ if (typeof column.title != 'undefined') {
+ if (typeof column.title == 'function') {
+ s3 += column.title(sheet, column, columnidx);
+ } else {
+ s3 += column.title;
+ }
+ }
+ s3 += ' | ';
+ });
+
+ s3 += '
';
+ }
+
+ // Data
+ if (data && data.length > 0) {
+ // Loop over data rows
+ data.forEach(function(row, rowidx) {
+ // Limit number of rows on the sheet
+ if (rowidx > sheet.limit) return;
+
+ // Extend row properties
+ var srow = {};
+ extend(srow, sheet.row);
+ if (sheet.rows && sheet.rows[rowidx]) {
+ extend(srow, sheet.rows[rowidx]);
+ }
+
+ s3 += ''; //'ss:AutoFitHeight="0">'
+
+ // Data
+ columns.forEach(function(column, columnidx) {
+ // Parameters
+ var cell = {};
+ extend(cell, sheet.cell);
+ extend(cell, srow.cell);
+ if (typeof sheet.column != 'undefined') {
+ extend(cell, sheet.column.cell);
+ }
+ extend(cell, column.cell);
+ if (sheet.cells && sheet.cells[rowidx] && sheet.cells[rowidx][columnidx]) {
+ extend(cell, sheet.cells[rowidx][columnidx]);
+ }
+
+ // Create value
+ var value = row[column.columnid];
+ if (typeof cell.value == 'function') {
+ value = cell.value(value, sheet, row, column, cell, rowidx, columnidx);
+ }
+
+ // Define cell type
+ var typeid = cell.typeid;
+ if (typeof typeid == 'function') {
+ typeid = typeid(value, sheet, row, column, cell, rowidx, columnidx);
+ }
+
+ if (typeof typeid == 'undefined') {
+ if (typeof value == 'number') typeid = 'number';
+ else if (typeof value == 'string') typeid = 'string';
+ else if (typeof value == 'boolean') typeid = 'boolean';
+ else if (typeof value == 'object') {
+ if (value instanceof Date) typeid = 'date';
+ }
+ }
+
+ var Type = 'String';
+ if (typeid == 'number') Type = 'Number';
+ else if (typeid == 'date') Type = 'Date';
+ // TODO: What else?
+
+ // Prepare Data types styles
+ var typestyle = '';
+
+ if (typeid == 'money') {
+ typestyle =
+ 'mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;';
+ } else if (typeid == 'number') {
+ typestyle = ' ';
+ } else if (typeid == 'date') {
+ typestyle = 'mso-number-format:"Short Date";';
+ } else {
+ // For other types is saved
+ if (opts.types && opts.types[typeid] && opts.types[typeid].typestyle) {
+ typestyle = opts.types[typeid].typestyle;
+ }
+ }
+
+ // TODO Replace with extend...
+ typestyle = typestyle || 'mso-number-format:"\\@";'; // Default type style
+
+ s3 += '';
+
+ s3 += '';
+
+ // TODO Replace with extend...
+ var format = cell.format;
+ if (typeof value == 'undefined') {
+ s3 += '';
+ } else if (typeof format != 'undefined') {
+ if (typeof format == 'function') {
+ s3 += format(value);
+ } else if (typeof format == 'string') {
+ s3 += value; // TODO - add string format
+ } else {
+ throw new Error(
+ 'Unknown format type. Should be function or string'
+ );
+ }
+ } else {
+ if (typeid == 'number' || typeid == 'date') {
+ s3 += value.toString();
+ } else if (typeid == 'money') {
+ s3 += (+value).toFixed(2);
+ } else {
+ s3 += value;
+ }
+ }
+
+ // s3 += row[column.columnid];
+ s3 += ' | ';
+ });
+
+ s3 += '
';
+ });
+ }
+ // Finish
+ s3 += '
';
+ }
+
+ s3 += ' ';
+
+ return s1 + s2 + s3;
+ }
+};
+
+/**
+ Export to XLSX function
+ @function
+ @param {string|object} filename Filename or options
+ @param {object|undefined} opts Options or undefined
+ @param {array} data Data
+ @param {array} columns Columns
+ @parab {callback} cb Callback function
+ @return {number} Number of files processed
+*/
+
+alasql.into.XLSX = function(filename, opts, data, columns, cb) {
+ /** @type {number} result */
+ var res = 1;
+
+ if (deepEqual(columns, [{columnid: '_'}])) {
+ data = data.map(function(dat) {
+ return dat._;
+ });
+ columns = undefined;
+ // res = [{_:1}];
+ } else {
+ // data = data1;
+ }
+
+ filename = alasql.utils.autoExtFilename(filename, 'xlsx', opts);
+
+ var XLSX = getXLSX();
+
+ /* If called without filename, use opts */
+ if (typeof filename == 'object') {
+ opts = filename;
+ filename = undefined;
+ }
+
+ /** @type {object} Workbook */
+ var wb = {SheetNames: [], Sheets: {}};
+
+ // ToDo: check if cb must be treated differently here
+ if (opts.sourcefilename) {
+ alasql.utils.loadBinaryFile(opts.sourcefilename, !!cb, function(data) {
+ wb = XLSX.read(data, {type: 'binary'});
+ doExport();
+ });
+ } else {
+ doExport();
+ }
+
+ /* Return result */
+ if (cb) res = cb(res);
+ return res;
+
+ /**
+ Export workbook
+ @function
+ */
+ function doExport() {
+ /*
+ If opts is array of arrays then this is a
+ multisheet workboook, else it is a singlesheet
+ */
+ if (typeof opts == 'object' && Array.isArray(opts)) {
+ if (data && data.length > 0) {
+ data.forEach(function(dat, idx) {
+ prepareSheet(opts[idx], dat, undefined, idx + 1);
+ });
+ }
+ } else {
+ prepareSheet(opts, data, columns, 1);
+ }
+
+ saveWorkbook(cb);
+ }
+
+ /**
+ Prepare sheet
+ @params {object} opts
+ @params {array|object} data
+ @params {array} columns Columns
+ */
+ function prepareSheet(opts, data, columns, idx) {
+ /** Default options for sheet */
+ var opt = {sheetid: 'Sheet ' + idx, headers: true};
+ alasql.utils.extend(opt, opts);
+
+ var dataLength = Object.keys(data).length;
+
+ // Generate columns if they are not defined
+ if ((!columns || columns.length == 0) && dataLength > 0) {
+ columns = Object.keys(data[0]).map(function(columnid) {
+ return {columnid: columnid};
+ });
+ }
+
+ var cells = {};
+
+ if (wb.SheetNames.indexOf(opt.sheetid) > -1) {
+ cells = wb.Sheets[opt.sheetid];
+ } else {
+ wb.SheetNames.push(opt.sheetid);
+ wb.Sheets[opt.sheetid] = {};
+ cells = wb.Sheets[opt.sheetid];
+ }
+
+ var range = 'A1';
+ if (opt.range) range = opt.range;
+
+ var col0 = alasql.utils.xlscn(range.match(/[A-Z]+/)[0]);
+ var row0 = +range.match(/[0-9]+/)[0] - 1;
+
+ if (wb.Sheets[opt.sheetid]['!ref']) {
+ var rangem = wb.Sheets[opt.sheetid]['!ref'];
+ var colm = alasql.utils.xlscn(rangem.match(/[A-Z]+/)[0]);
+ var rowm = +rangem.match(/[0-9]+/)[0] - 1;
+ } else {
+ var colm = 1,
+ rowm = 1;
+ }
+ var colmax = Math.max(col0 + columns.length, colm);
+ var rowmax = Math.max(row0 + dataLength + 2, rowm);
+
+ var i = row0 + 1;
+
+ wb.Sheets[opt.sheetid]['!ref'] = 'A1:' + alasql.utils.xlsnc(colmax) + rowmax;
+ // var i = 1;
+
+ if (opt.headers) {
+ columns.forEach(function(col, idx) {
+ cells[alasql.utils.xlsnc(col0 + idx) + '' + i] = {v: col.columnid.trim()};
+ });
+ i++;
+ }
+
+ for (var j = 0; j < dataLength; j++) {
+ columns.forEach(function(col, idx) {
+ var cell = {v: data[j][col.columnid]};
+ if (typeof data[j][col.columnid] == 'number') {
+ cell.t = 'n';
+ } else if (typeof data[j][col.columnid] == 'string') {
+ cell.t = 's';
+ } else if (typeof data[j][col.columnid] == 'boolean') {
+ cell.t = 'b';
+ } else if (typeof data[j][col.columnid] == 'object') {
+ if (data[j][col.columnid] instanceof Date) {
+ cell.t = 'd';
+ }
+ }
+ cells[alasql.utils.xlsnc(col0 + idx) + '' + i] = cell;
+ });
+ i++;
+ }
+ }
+
+ /**
+ Save Workbook
+ @params {array} wb Workbook
+ @params {callback} cb Callback
+ */
+ function saveWorkbook(cb) {
+
+ var XLSX;
+
+ if (typeof filename == 'undefined') {
+ res = wb;
+ } else {
+ XLSX = getXLSX();
+
+ if (utils.isNode || utils.isMeteorServer) {
+ XLSX.writeFile(wb, filename);
+ } else {
+ var wopts = {bookType: 'xlsx', bookSST: false, type: 'binary'};
+ var wbout = XLSX.write(wb, wopts);
+
+ function s2ab(s) {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
+ return buf;
+ }
+
+ /* the saveAs call downloads a file on the local machine */
+ // saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), '"'+filename+'"')
+ // saveAs(new Blob([s2ab(wbout)],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}), filename)
+ // saveAs(new Blob([s2ab(wbout)],{type:"application/vnd.ms-excel"}), '"'+filename+'"');
+ if (isIE() == 9) {
+ throw new Error(
+ 'Cannot save XLSX files in IE9. Please use XLS() export function'
+ );
+ // var URI = 'data:text/plain;charset=utf-8,';
+
+ /** @todo Check if this code is required */
+
+ // alert('ie9');
+ } else {
+ saveAs(new Blob([s2ab(wbout)], {type: 'application/octet-stream'}), filename);
+ }
+ }
+ }
+
+ }
+};
+
+/*
+//
+// FROM functions Alasql.js
+// Date: 11.12.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/**
+ Meteor
+ */
+
+/* global alasql Tabletop document Event */
+
+alasql.from.METEOR = function(filename, opts, cb, idx, query) {
+ var res = filename.find(opts).fetch();
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ return res;
+};
+
+/**
+ Google Spreadsheet reader
+ */
+alasql.from.TABLETOP = function(key, opts, cb, idx, query) {
+ var res = [];
+
+ var opt = {headers: true, simpleSheet: true, key: key};
+ alasql.utils.extend(opt, opts);
+ opt.callback = function(data) {
+ res = data;
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ };
+
+ Tabletop.init(opt);
+ return null;
+};
+
+alasql.from.HTML = function(selector, opts, cb, idx, query) {
+ var opt = {};
+ alasql.utils.extend(opt, opts);
+
+ var sel = document.querySelector(selector);
+ if (!sel && sel.tagName !== 'TABLE') {
+ throw new Error('Selected HTML element is not a TABLE');
+ }
+
+ var res = [];
+ var headers = opt.headers;
+
+ if (headers && !Array.isArray(headers)) {
+ headers = [];
+ var ths = sel.querySelector('thead tr').children;
+ for (var i = 0; i < ths.length; i++) {
+ if (
+ !(ths.item(i).style && ths.item(i).style.display === 'none' && opt.skipdisplaynone)
+ ) {
+ headers.push(ths.item(i).textContent);
+ } else {
+ headers.push(undefined);
+ }
+ }
+ }
+
+ var trs = sel.querySelectorAll('tbody tr');
+
+ for (var j = 0; j < trs.length; j++) {
+ var tds = trs.item(j).children;
+ var r = {};
+ for (i = 0; i < tds.length; i++) {
+ if (
+ !(tds.item(i).style && tds.item(i).style.display === 'none' && opt.skipdisplaynone)
+ ) {
+ if (headers) {
+ r[headers[i]] = tds.item(i).textContent;
+ } else {
+ r[i] = tds.item(i).textContent;
+
+ }
+ }
+ }
+ res.push(r);
+ }
+
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ return res;
+};
+
+alasql.from.RANGE = function(start, finish, cb, idx, query) {
+ var res = [];
+ for (var i = start; i <= finish; i++) {
+ res.push(i);
+ }
+ // res = new alasql.Recordset({data:res,columns:{columnid:'_'}});
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ return res;
+};
+
+// Read data from any file
+alasql.from.FILE = function(filename, opts, cb, idx, query) {
+ var fname;
+ if (typeof filename === 'string') {
+ fname = filename;
+ } else if (filename instanceof Event) {
+ fname = filename.target.files[0].name;
+ } else {
+ throw new Error('Wrong usage of FILE() function');
+ }
+
+ var parts = fname.split('.');
+
+ var ext = parts[parts.length - 1].toUpperCase();
+
+ if (alasql.from[ext]) {
+
+ return alasql.from[ext](filename, opts, cb, idx, query);
+ } else {
+ throw new Error('Cannot recognize file type for loading');
+ }
+};
+
+// Read JSON file
+
+alasql.from.JSON = function(filename, opts, cb, idx, query) {
+ var res;
+
+ filename = alasql.utils.autoExtFilename(filename, 'json', opts);
+ alasql.utils.loadFile(filename, !!cb, function(data) {
+
+ // res = [{a:1}];
+ res = JSON.parse(data);
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ });
+ return res;
+};
+
+alasql.from.TXT = function(filename, opts, cb, idx, query) {
+ var res;
+ filename = alasql.utils.autoExtFilename(filename, 'txt', opts);
+ alasql.utils.loadFile(filename, !!cb, function(data) {
+ res = data.split(/\r?\n/);
+
+ // Remove last line if empty
+ if (res[res.length - 1] === '') {
+ res.pop();
+ }
+ for (var i = 0, ilen = res.length; i < ilen; i++) {
+ // Please avoid '===' here
+ if (res[i] == +res[i]) {
+ // eslint:ignore
+ // jshint ignore:line
+ res[i] = +res[i];
+ }
+ res[i] = [res[i]];
+ }
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ });
+ return res;
+};
+
+alasql.from.TAB = alasql.from.TSV = function(filename, opts, cb, idx, query) {
+ opts = opts || {};
+ opts.separator = '\t';
+ filename = alasql.utils.autoExtFilename(filename, 'tab', opts);
+ opts.autoext = false;
+ return alasql.from.CSV(filename, opts, cb, idx, query);
+};
+
+alasql.from.CSV = function(contents, opts, cb, idx, query) {
+ var opt = {
+ separator: ',',
+ quote: '"',
+ headers: true,
+ };
+ alasql.utils.extend(opt, opts);
+ var res;
+ var hs = [];
+ function parseText(text) {
+ var delimiterCode = opt.separator.charCodeAt(0);
+ var quoteCode = opt.quote.charCodeAt(0);
+
+ var EOL = {},
+ EOF = {},
+ rows = [],
+ N = text.length,
+ I = 0,
+ n = 0,
+ t,
+ eol;
+ function token() {
+ if (I >= N) {
+ return EOF;
+ }
+ if (eol) {
+ return (eol = false, EOL);
+ }
+ var j = I;
+ if (text.charCodeAt(j) === quoteCode) {
+ var i = j;
+ while (i++ < N) {
+ if (text.charCodeAt(i) === quoteCode) {
+ if (text.charCodeAt(i + 1) !== quoteCode) {
+ break;
+ }
+ ++i;
+ }
+ }
+ I = i + 2;
+ var c = text.charCodeAt(i + 1);
+ if (c === 13) {
+ eol = true;
+ if (text.charCodeAt(i + 2) === 10) {
+ ++I;
+ }
+ } else if (c === 10) {
+ eol = true;
+ }
+ return text.substring(j + 1, i).replace(/""/g, '"');
+ }
+ while (I < N) {
+ var c = text.charCodeAt(I++),
+ k = 1;
+ if (c === 10) {
+ eol = true;
+ } else if (c === 13) {
+ eol = true;
+ if (text.charCodeAt(I) === 10) {
+ ++I;
+ ++k;
+ }
+ } else if (c !== delimiterCode) {
+ continue;
+ }
+ return text.substring(j, I - k);
+ }
+ return text.substring(j);
+ }
+
+ while ((t = token()) !== EOF) {
+ var a = [];
+ while (t !== EOL && t !== EOF) {
+ a.push(t.trim());
+ t = token();
+ }
+
+ if (opt.headers) {
+ if (n === 0) {
+ if (typeof opt.headers === 'boolean') {
+ hs = a;
+ } else if (Array.isArray(opt.headers)) {
+ hs = opt.headers;
+ var r = {};
+ hs.forEach(function(h, idx) {
+ r[h] = a[idx];
+ // Please avoid === here
+ if (
+ typeof r[h] !== 'undefined' &&
+ r[h].length !== 0 &&
+ r[h].trim() == +r[h]
+ ) {
+ // jshint ignore:line
+ r[h] = +r[h];
+ }
+ });
+ rows.push(r);
+ }
+ } else {
+ var r = {};
+ hs.forEach(function(h, idx) {
+ r[h] = a[idx];
+ if (
+ typeof r[h] !== 'undefined' &&
+ r[h].length !== 0 &&
+ r[h].trim() == +r[h]
+ ) {
+ // jshint ignore:line
+ r[h] = +r[h];
+ }
+ });
+ rows.push(r);
+ }
+ n++;
+ } else {
+ rows.push(a);
+ }
+ }
+
+ res = rows;
+
+ if (opt.headers) {
+ if (query && query.sources && query.sources[idx]) {
+ var columns = (query.sources[idx].columns = []);
+ hs.forEach(function(h) {
+ columns.push({columnid: h});
+ });
+ }
+ }
+
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ }
+ if (new RegExp('\n').test(contents)) {
+ parseText(contents);
+ } else {
+ contents = alasql.utils.autoExtFilename(contents, 'csv', opts);
+ alasql.utils.loadFile(contents, !!cb, parseText, query.cb);
+ }
+ return res;
+};
+
+function XLSXLSX(X, filename, opts, cb, idx, query) {
+ var opt = {};
+ opts = opts || {};
+ alasql.utils.extend(opt, opts);
+ if (typeof opt.headers === 'undefined') {
+ opt.headers = true;
+ }
+ var res;
+
+ /**
+ * see https://github.com/SheetJS/js-xlsx/blob/5ae6b1965bfe3764656a96f536b356cd1586fec7/README.md
+ * for example of using readAsArrayBuffer under `Parsing Workbooks`
+ */
+ function fixdata(data) {
+ var o = '',
+ l = 0,
+ w = 10240;
+ for (; l < data.byteLength / w; ++l)
+ o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
+ o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
+ return o;
+ }
+ function getHeaderText(text) {
+ // if casesensitive option is set to false and there is a text value return lowercase value of text
+ if (text && alasql.options.casesensitive === false) {
+ return text.toLowerCase();
+ } else {
+ return text;
+ }
+ }
+ filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
+ alasql.utils.loadBinaryFile(
+ filename,
+ !!cb,
+ function(data) {
+ // function processData(data) {
+ if (data instanceof ArrayBuffer) {
+ var arr = fixdata(data);
+ var workbook = X.read(btoa(arr), {type: 'base64'});
+ } else {
+ var workbook = X.read(data, {type: 'binary'});
+ }
+
+ var sheetid;
+ if (typeof opt.sheetid === 'undefined') {
+ sheetid = workbook.SheetNames[0];
+ } else if (typeof opt.sheetid === 'number') {
+ sheetid = workbook.SheetNames[opt.sheetid];
+ } else {
+ sheetid = opt.sheetid;
+ }
+ var range;
+ var res = [];
+ if (typeof opt.range === 'undefined') {
+ range = workbook.Sheets[sheetid]['!ref'];
+ } else {
+ range = opt.range;
+ if (workbook.Sheets[sheetid][range]) {
+ range = workbook.Sheets[sheetid][range];
+ }
+ }
+ // if range has some value then data is present in the current sheet
+ // else current sheet is empty
+ if (range) {
+ var rg = range.split(':');
+ var col0 = rg[0].match(/[A-Z]+/)[0];
+ var row0 = +rg[0].match(/[0-9]+/)[0];
+ var col1 = rg[1].match(/[A-Z]+/)[0];
+ var row1 = +rg[1].match(/[0-9]+/)[0];
+
+ var hh = {};
+ var xlscnCol0 = alasql.utils.xlscn(col0);
+ var xlscnCol1 = alasql.utils.xlscn(col1);
+ for (var j = xlscnCol0; j <= xlscnCol1; j++) {
+ var col = alasql.utils.xlsnc(j);
+ if (opt.headers) {
+ if (workbook.Sheets[sheetid][col + '' + row0]) {
+ hh[col] = getHeaderText(workbook.Sheets[sheetid][col + '' + row0].v);
+ } else {
+ hh[col] = getHeaderText(col);
+ }
+ } else {
+ hh[col] = col;
+ }
+ }
+ if (opt.headers) {
+ row0++;
+ }
+ for (var i = row0; i <= row1; i++) {
+ var row = {};
+ for (var j = xlscnCol0; j <= xlscnCol1; j++) {
+ var col = alasql.utils.xlsnc(j);
+ if (workbook.Sheets[sheetid][col + '' + i]) {
+ row[hh[col]] = workbook.Sheets[sheetid][col + '' + i].v;
+ }
+ }
+ res.push(row);
+ }
+ } else {
+ res.push([]);
+ }
+
+ // Remove last empty line (issue #548)
+ if (
+ res.length > 0 &&
+ res[res.length - 1] &&
+ Object.keys(res[res.length - 1]).length == 0
+ ) {
+ res.pop();
+ }
+
+ if (cb) {
+ res = cb(res, idx, query);
+ }
+ },
+ function(err) {
+ throw err;
+ }
+ );
+
+ return res;
+}
+
+alasql.from.XLS = function(filename, opts, cb, idx, query) {
+ opts = opts || {};
+ filename = alasql.utils.autoExtFilename(filename, 'xls', opts);
+ opts.autoExt = false;
+ return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
+};
+
+alasql.from.XLSX = function(filename, opts, cb, idx, query) {
+ opts = opts || {};
+ filename = alasql.utils.autoExtFilename(filename, 'xlsx', opts);
+ opts.autoExt = false;
+ return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
+};
+
+alasql.from.ODS = function(filename, opts, cb, idx, query) {
+ opts = opts || {};
+ filename = alasql.utils.autoExtFilename(filename, 'ods', opts);
+ opts.autoExt = false;
+ return XLSXLSX(getXLSX(), filename, opts, cb, idx, query);
+};
+
+alasql.from.XML = function(filename, opts, cb, idx, query) {
+ var res;
+
+ alasql.utils.loadFile(filename, !!cb, function(data) {
+
+ // res = [{a:1}];
+
+ res = xmlparse(data).root;
+
+ if (cb) res = cb(res, idx, query);
+ });
+ return res;
+};
+
+/**
+ * Parse the given string of `xml`.
+ *
+ * @param {String} xml
+ * @return {Object}
+ * @api public
+ */
+
+function xmlparse(xml) {
+ xml = xml.trim();
+
+ // strip comments
+ xml = xml.replace(//g, '');
+
+ return document();
+
+ /**
+ * XML document.
+ */
+
+ function document() {
+ return {
+ declaration: declaration(),
+ root: tag(),
+ };
+ }
+
+ /**
+ * Declaration.
+ */
+
+ function declaration() {
+ var m = match(/^<\?xml\s*/);
+ if (!m) return;
+
+ // tag
+ var node = {
+ attributes: {},
+ };
+
+ // attributes
+ while (!(eos() || is('?>'))) {
+ var attr = attribute();
+ if (!attr) return node;
+ node.attributes[attr.name] = attr.value;
+ }
+
+ match(/\?>\s*/);
+
+ return node;
+ }
+
+ /**
+ * Tag.
+ */
+
+ function tag() {
+ var m = match(/^<([\w-:.]+)\s*/);
+ if (!m) return;
+
+ // name
+ var node = {
+ name: m[1],
+ attributes: {},
+ children: [],
+ };
+
+ // attributes
+ while (!(eos() || is('>') || is('?>') || is('/>'))) {
+ var attr = attribute();
+ if (!attr) return node;
+ node.attributes[attr.name] = attr.value;
+ }
+
+ // self closing tag
+ if (match(/^\s*\/>\s*/)) {
+ return node;
+ }
+
+ match(/\??>\s*/);
+
+ // content
+ node.content = content();
+
+ // children
+ var child;
+ while ((child = tag())) {
+ node.children.push(child);
+ }
+
+ // closing
+ match(/^<\/[\w-:.]+>\s*/);
+
+ return node;
+ }
+
+ /**
+ * Text content.
+ */
+
+ function content() {
+ var m = match(/^([^<]*)/);
+ if (m) return m[1];
+ return '';
+ }
+
+ /**
+ * Attribute.
+ */
+
+ function attribute() {
+ var m = match(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);
+ if (!m) return;
+ return {name: m[1], value: strip(m[2])};
+ }
+
+ /**
+ * Strip quotes from `val`.
+ */
+
+ function strip(val) {
+ return val.replace(/^['"]|['"]$/g, '');
+ }
+
+ /**
+ * Match `re` and advance the string.
+ */
+
+ function match(re) {
+ var m = xml.match(re);
+ if (!m) return;
+ xml = xml.slice(m[0].length);
+ return m;
+ }
+
+ /**
+ * End-of-source.
+ */
+
+ function eos() {
+ return 0 == xml.length;
+ }
+
+ /**
+ * Check for `prefix`.
+ */
+
+ function is(prefix) {
+ return 0 == xml.indexOf(prefix);
+ }
+}
+
+alasql.from.GEXF = function(filename, opts, cb, idx, query) {
+ var res;
+ alasql('SEARCH FROM XML(' + filename + ')', [], function(data) {
+ res = data;
+
+ if (cb) res = cb(res);
+ });
+ return res;
+};
+
+/*
+//
+// HELP for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* globals: alasql, yy */
+
+/**
+ Print statement
+ @class
+ @param {object} params Initial setup properties
+*/
+
+/* global alasql, yy */
+
+yy.Print = function(params) {
+ return yy.extend(this, params);
+};
+
+/**
+ Generate SQL string
+ @this Print statement object
+*/
+yy.Print.prototype.toString = function() {
+ var s = 'PRINT';
+ if (this.statement) s += ' ' + this.statement.toString();
+ return s;
+};
+
+/**
+ Print result of select statement or expression
+ @param {string} databaseid Database identificator
+ @param {object} params Query parameters
+ @param {statement-callback} cb Callback function
+ @this Print statement object
+*/
+yy.Print.prototype.execute = function(databaseid, params, cb) {
+
+ var self = this;
+ var res = 1;
+
+ alasql.precompile(this, databaseid, params); /** @todo Change from alasql to this */
+
+ if (this.exprs && this.exprs.length > 0) {
+ var rs = this.exprs.map(function(expr) {
+
+ var exprfn = new Function(
+ 'params,alasql,p',
+ 'var y;return ' + expr.toJS('({})', '', null)
+ ).bind(self);
+ var r = exprfn(params, alasql);
+ return JSONtoString(r);
+ });
+ console.log.apply(console, rs);
+ } else if (this.select) {
+ var r = this.select.execute(databaseid, params);
+ console.log(JSONtoString(r));
+ } else {
+ console.log();
+ }
+
+ if (cb) res = cb(res);
+ return res;
+};
+
+/*
+//
+// HELP for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Source = function(params) {
+ return yy.extend(this, params);
+};
+yy.Source.prototype.toString = function() {
+ var s = 'SOURCE';
+ if (this.url) s += " '" + this.url + " '";
+ return s;
+};
+
+// SOURCE FILE
+yy.Source.prototype.execute = function(databaseid, params, cb) {
+
+ var res;
+ loadFile(
+ this.url,
+ !!cb,
+ function(data) {
+
+ // res = 1;
+ res = alasql(data);
+ if (cb) res = cb(res);
+ return res;
+ },
+ function(err) {
+ throw err;
+ }
+ );
+ return res;
+};
+
+/*
+//
+// HELP for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+/* global alasql, yy */
+
+yy.Require = function(params) {
+ return yy.extend(this, params);
+};
+yy.Require.prototype.toString = function() {
+ var s = 'REQUIRE';
+ if (this.paths && this.paths.length > 0) {
+ s += this.paths
+ .map(function(path) {
+ return path.toString();
+ })
+ .join(',');
+ }
+ if (this.plugins && this.plugins.length > 0) {
+ s += this.plugins
+ .map(function(plugin) {
+ return plugin.toUpperCase();
+ })
+ .join(',');
+ }
+ return s;
+};
+
+/**
+ Attach plug-in for Alasql
+ */
+yy.Require.prototype.execute = function(databaseid, params, cb) {
+ var self = this;
+ var res = 0;
+ var ss = '';
+
+ if (this.paths && this.paths.length > 0) {
+ this.paths.forEach(function(path) {
+ loadFile(path.value, !!cb, function(data) {
+ res++;
+
+ ss += data;
+ if (res < self.paths.length) return;
+
+ new Function('params,alasql', ss)(params, alasql);
+ if (cb) res = cb(res);
+ });
+ });
+ } else if (this.plugins && this.plugins.length > 0) {
+ this.plugins.forEach(function(plugin) {
+ // If plugin is not loaded already
+ if (!alasql.plugins[plugin]) {
+ loadFile(alasql.path + '/alasql-' + plugin.toLowerCase() + '.js', !!cb, function(
+ data
+ ) {
+ // Execute all plugins at the same time
+ res++;
+ ss += data;
+ if (res < self.plugins.length) return;
+
+ new Function('params,alasql', ss)(params, alasql);
+ alasql.plugins[plugin] = true; // Plugin is loaded
+ if (cb) res = cb(res);
+ });
+ }
+ });
+ } else {
+ if (cb) res = cb(res);
+ }
+ return res;
+};
+
+/*
+//
+// HELP for Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+yy.Assert = function(params) {
+ return yy.extend(this, params);
+};
+yy.Source.prototype.toString = function() {
+ var s = 'ASSERT';
+ if (this.value) s += ' ' + JSON.stringify(this.value);
+ return s;
+};
+
+// SOURCE FILE
+yy.Assert.prototype.execute = function(databaseid) {
+
+ if (!deepEqual(alasql.res, this.value)) {
+ // if(this.message) {
+ // throw this.
+ // } else {
+ throw new Error(
+ (this.message || 'Assert wrong') +
+ ': ' +
+ JSON.stringify(alasql.res) +
+ ' == ' +
+ JSON.stringify(this.value)
+ );
+ // }
+ }
+ return 1;
+};
+
+//
+// 91websql.js
+// WebSQL database support
+// (c) 2014, Andrey Gershun
+//
+
+var WEBSQL = (alasql.engines.WEBSQL = function() {});
+
+WEBSQL.createDatabase = function(wdbid, args, dbid, cb) {
+ var res = 1;
+ var wdb = openDatabase(wdbid, args[0], args[1], args[2]);
+ if (this.dbid) {
+ var db = alasql.createDatabase(this.dbid);
+ db.engineid = 'WEBSQL';
+ db.wdbid = wdbid;
+ sb.wdb = db;
+ }
+ if (!wdb) {
+ throw new Error('Cannot create WebSQL database "' + databaseid + '"');
+ }
+ if (cb) cb(res);
+ return res;
+};
+
+WEBSQL.dropDatabase = function(databaseid) {
+ throw new Error('This is impossible to drop WebSQL database.');
+};
+
+WEBSQL.attachDatabase = function(databaseid, dbid, args, params, cb) {
+ var res = 1;
+ if (alasql.databases[dbid]) {
+ throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
+ }
+ alasqlopenDatabase(databaseid, args[0], args[1], args[2]);
+ return res;
+};
+
+//
+// 91indexeddb.js
+// AlaSQL IndexedDB module
+// Date: 18.04.2015
+// (c) Andrey Gershun
+//
+
+/* global alasql, yy, utils*/
+
+var IDB = (alasql.engines.INDEXEDDB = function() {
+ '';
+});
+
+if (utils.hasIndexedDB) {
+ // For Chrome it work normally, for Firefox - simple shim
+ if (typeof utils.global.indexedDB.webkitGetDatabaseNames == 'function') {
+ IDB.getDatabaseNames = utils.global.indexedDB.webkitGetDatabaseNames.bind(
+ utils.global.indexedDB
+ );
+ } else {
+ IDB.getDatabaseNames = function() {
+ var request = {};
+ var result = {
+ contains: function(name) {
+ return true; // Always return true
+ },
+ notsupported: true,
+ };
+ setTimeout(function() {
+ var event = {target: {result: result}};
+ request.onsuccess(event);
+ }, 0);
+ return request;
+ };
+ IDB.getDatabaseNamesNotSupported = true;
+ }
+}
+
+//
+// SHOW DATABASES
+// work only in chrome
+//
+IDB.showDatabases = function(like, cb) {
+
+ var request = IDB.getDatabaseNames();
+ request.onsuccess = function(event) {
+ var dblist = event.target.result;
+ if (IDB.getDatabaseNamesNotSupported) {
+ throw new Error('SHOW DATABASE is not supported in this browser');
+ }
+ var res = [];
+ if (like) {
+ var relike = new RegExp(like.value.replace(/\%/g, '.*'), 'g');
+ }
+ for (var i = 0; i < dblist.length; i++) {
+ if (!like || dblist[i].match(relike)) {
+ res.push({databaseid: dblist[i]});
+ }
+ }
+ cb(res);
+ };
+};
+
+IDB.createDatabase = function(ixdbid, args, ifnotexists, dbid, cb) {
+
+ var indexedDB = utils.global.indexedDB;
+ if (ifnotexists) {
+ var request2 = indexedDB.open(ixdbid, 1);
+ request2.onsuccess = function(event) {
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ } else {
+ var request1 = indexedDB.open(ixdbid, 1);
+ request1.onupgradeneeded = function(e) {
+
+ e.target.transaction.abort();
+ };
+ request1.onsuccess = function(e) {
+
+ if (ifnotexists) {
+ if (cb) cb(0);
+ } else {
+ throw new Error(
+ 'IndexedDB: Cannot create new database "' +
+ ixdbid +
+ '" because it already exists'
+ );
+ }
+ };
+ }
+
+};
+
+IDB.createDatabase = function(ixdbid, args, ifnotexists, dbid, cb) {
+ var indexedDB = utils.global.indexedDB;
+ if (IDB.getDatabaseNamesNotSupported) {
+ // Hack for Firefox
+ if (ifnotexists) {
+
+ var dbExists = true;
+ var request2 = indexedDB.open(ixdbid);
+
+ request2.onupgradeneeded = function(e) {
+
+ dbExists = false;
+ // e.target.transaction.abort();
+ // cb(0);
+ };
+ request2.onsuccess = function(event) {
+
+ event.target.result.close();
+ if (dbExists) {
+ if (cb) cb(0);
+ } else {
+ if (cb) cb(1);
+ }
+ };
+ } else {
+
+ var request1 = indexedDB.open(ixdbid);
+ request1.onupgradeneeded = function(e) {
+ e.target.transaction.abort();
+ };
+ request1.onabort = function(event) {
+ if (cb) cb(1);
+ };
+ request1.onsuccess = function(event) {
+ event.target.result.close();
+ throw new Error(
+ 'IndexedDB: Cannot create new database "' +
+ ixdbid +
+ '" because it already exists'
+ );
+ // cb(0);
+ };
+ }
+ } else {
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event) {
+ var dblist = event.target.result;
+ if (dblist.contains(ixdbid)) {
+ if (ifnotexists) {
+ if (cb) cb(0);
+ return;
+ } else {
+ throw new Error(
+ 'IndexedDB: Cannot create new database "' +
+ ixdbid +
+ '" because it already exists'
+ );
+ }
+ }
+
+ var request2 = indexedDB.open(ixdbid, 1);
+ request2.onsuccess = function(event) {
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ };
+ }
+};
+
+IDB.dropDatabase = function(ixdbid, ifexists, cb) {
+ var indexedDB = utils.global.indexedDB;
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event) {
+ var dblist = event.target.result;
+ if (!dblist.contains(ixdbid)) {
+ if (ifexists) {
+ if (cb) cb(0);
+ return;
+ } else {
+ throw new Error(
+ 'IndexedDB: Cannot drop new database "' + ixdbid + '" because it does not exist'
+ );
+ }
+ }
+ var request2 = indexedDB.deleteDatabase(ixdbid);
+ request2.onsuccess = function(event) {
+
+ if (cb) cb(1);
+ };
+ };
+};
+
+IDB.attachDatabase = function(ixdbid, dbid, args, params, cb) {
+ if (!utils.hasIndexedDB) {
+ throw new Error('The current browser does not support IndexedDB');
+ }
+ var indexedDB = utils.global.indexedDB;
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event) {
+ var dblist = event.target.result;
+ if (!dblist.contains(ixdbid)) {
+ throw new Error(
+ 'IndexedDB: Cannot attach database "' + ixdbid + '" because it does not exist'
+ );
+ }
+ var request2 = indexedDB.open(ixdbid);
+ request2.onsuccess = function(event) {
+ var ixdb = event.target.result;
+ var db = new alasql.Database(dbid || ixdbid);
+ db.engineid = 'INDEXEDDB';
+ db.ixdbid = ixdbid;
+ db.tables = [];
+ var tblist = ixdb.objectStoreNames;
+ for (var i = 0; i < tblist.length; i++) {
+ db.tables[tblist[i]] = {};
+ }
+
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ };
+};
+
+IDB.createTable = function(databaseid, tableid, ifnotexists, cb) {
+ var indexedDB = utils.global.indexedDB;
+
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event__) {
+ var dblist = event__.target.result;
+ if (!dblist.contains(ixdbid)) {
+ throw new Error(
+ 'IndexedDB: Cannot create table in database "' +
+ ixdbid +
+ '" because it does not exist'
+ );
+ }
+ var request2 = indexedDB.open(ixdbid);
+ request2.onversionchange = function(event_) {
+
+ event_.target.result.close();
+ };
+ request2.onsuccess = function(event_) {
+ var version = event_.target.result.version;
+ event_.target.result.close();
+
+ var request3 = indexedDB.open(ixdbid, version + 1);
+ request3.onupgradeneeded = function(event) {
+ var ixdb = event.target.result;
+
+ var store = ixdb.createObjectStore(tableid, {autoIncrement: true});
+
+ };
+ request3.onsuccess = function(event) {
+
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ request3.onerror = function(event) {
+ throw event;
+
+ };
+ request3.onblocked = function(event) {
+ throw new Error(
+ 'Cannot create table "' +
+ tableid +
+ '" because database "' +
+ databaseid +
+ '" is blocked'
+ );
+
+ };
+ };
+ };
+};
+
+IDB.dropTable = function(databaseid, tableid, ifexists, cb) {
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+
+ var request1 = IDB.getDatabaseNames();
+ request1.onsuccess = function(event) {
+ var dblist = event.target.result;
+
+ if (!dblist.contains(ixdbid)) {
+ throw new Error(
+ 'IndexedDB: Cannot drop table in database "' +
+ ixdbid +
+ '" because it does not exist'
+ );
+ }
+
+ var request2 = indexedDB.open(ixdbid);
+ request2.onversionchange = function(event) {
+ event.target.result.close();
+ };
+
+ request2.onsuccess = function(event) {
+ var version = event.target.result.version;
+ event.target.result.close();
+
+ var request3 = indexedDB.open(ixdbid, version + 1);
+ request3.onupgradeneeded = function(event) {
+ var ixdb = event.target.result;
+ if (ixdb.objectStoreNames.contains(tableid)) {
+ ixdb.deleteObjectStore(tableid);
+ delete alasql.databases[databaseid].tables[tableid];
+ } else {
+ if (!ifexists) {
+ throw new Error(
+ 'IndexedDB: Cannot drop table "' +
+ tableid +
+ '" because it does not exist'
+ );
+ }
+ }
+ // var store = ixdb.createObjectStore(tableid);
+
+ };
+ request3.onsuccess = function(event) {
+
+ event.target.result.close();
+ if (cb) cb(1);
+ };
+ request3.onerror = function(event) {
+
+ throw event;
+ };
+ request3.onblocked = function(event) {
+ throw new Error(
+ 'Cannot drop table "' +
+ tableid +
+ '" because database "' +
+ databaseid +
+ '" is blocked'
+ );
+
+ };
+ };
+ };
+};
+
+IDB.intoTable = function(databaseid, tableid, value, columns, cb) {
+
+ // console.trace();
+
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+ var request1 = indexedDB.open(ixdbid);
+ request1.onsuccess = function(event) {
+ var ixdb = event.target.result;
+ var tx = ixdb.transaction([tableid], 'readwrite');
+ var tb = tx.objectStore(tableid);
+
+ for (var i = 0, ilen = value.length; i < ilen; i++) {
+ tb.add(value[i]);
+ }
+ tx.oncomplete = function() {
+ ixdb.close();
+
+ if (cb) cb(ilen);
+ };
+ };
+
+};
+
+IDB.fromTable = function(databaseid, tableid, cb, idx, query) {
+
+ // console.trace();
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+ var request = indexedDB.open(ixdbid);
+ request.onsuccess = function(event) {
+ var res = [];
+ var ixdb = event.target.result;
+
+ var tx = ixdb.transaction([tableid]);
+ var store = tx.objectStore(tableid);
+ var cur = store.openCursor();
+
+ cur.onblocked = function(event) {
+
+ };
+ cur.onerror = function(event) {
+
+ };
+ cur.onsuccess = function(event) {
+
+ var cursor = event.target.result;
+
+ if (cursor) {
+ res.push(cursor.value);
+ cursor["continue"]();
+ } else {
+
+ ixdb.close();
+ if (cb) cb(res, idx, query);
+ }
+ };
+ };
+};
+
+IDB.deleteFromTable = function(databaseid, tableid, wherefn, params, cb) {
+
+ // console.trace();
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+ var request = indexedDB.open(ixdbid);
+ request.onsuccess = function(event) {
+ var res = [];
+ var ixdb = event.target.result;
+
+ var tx = ixdb.transaction([tableid], 'readwrite');
+ var store = tx.objectStore(tableid);
+ var cur = store.openCursor();
+ var num = 0;
+
+ cur.onblocked = function(event) {
+
+ };
+ cur.onerror = function(event) {
+
+ };
+ cur.onsuccess = function(event) {
+
+ var cursor = event.target.result;
+
+ if (cursor) {
+ if (!wherefn || wherefn(cursor.value, params)) {
+
+ cursor["delete"]();
+ num++;
+ }
+ cursor["continue"]();
+ } else {
+
+ ixdb.close();
+ if (cb) cb(num);
+ }
+ };
+ };
+};
+
+IDB.updateTable = function(databaseid, tableid, assignfn, wherefn, params, cb) {
+
+ // console.trace();
+ var indexedDB = utils.global.indexedDB;
+ var ixdbid = alasql.databases[databaseid].ixdbid;
+ var request = indexedDB.open(ixdbid);
+ request.onsuccess = function(event) {
+ var res = [];
+ var ixdb = event.target.result;
+
+ var tx = ixdb.transaction([tableid], 'readwrite');
+ var store = tx.objectStore(tableid);
+ var cur = store.openCursor();
+ var num = 0;
+
+ cur.onblocked = function(event) {
+
+ };
+ cur.onerror = function(event) {
+
+ };
+ cur.onsuccess = function(event) {
+
+ var cursor = event.target.result;
+
+ if (cursor) {
+ if (!wherefn || wherefn(cursor.value, params)) {
+
+ var r = cursor.value;
+ assignfn(r, params);
+
+ cursor.update(r);
+ num++;
+ }
+ cursor["continue"]();
+ } else {
+
+ ixdb.close();
+ if (cb) cb(num);
+ }
+ };
+ };
+};
+
+//
+// 91localstorage.js
+// localStorage and DOM-Storage engine
+// Date: 09.12.2014
+// (c) Andrey Gershun
+//
+
+/* global alasql, yy, localStorage*/
+
+var LS = (alasql.engines.LOCALSTORAGE = function() {});
+
+/**
+ Read data from localStorage with security breaks
+ @param key {string} Address in localStorage
+ @return {object} JSON object
+*/
+LS.get = function(key) {
+ var s = localStorage.getItem(key);
+ if (typeof s === 'undefined') return;
+ var v;
+ try {
+ v = JSON.parse(s);
+ } catch (err) {
+ throw new Error('Cannot parse JSON object from localStorage' + s);
+ }
+ return v;
+};
+
+/**
+ Store data into localStorage with security breaks
+ @param key {string} Address in localStorage
+ @return {object} JSON object
+*/
+LS.set = function(key, value) {
+ if (typeof value === 'undefined') localStorage.removeItem(key);
+ else localStorage.setItem(key, JSON.stringify(value));
+};
+
+/**
+ Store table structure and data into localStorage
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param tableid {string} Table name
+ @return Nothing
+*/
+LS.storeTable = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ var table = db.tables[tableid];
+ // Create empty structure for table
+ var tbl = {};
+ tbl.columns = table.columns;
+ tbl.data = table.data;
+ tbl.identities = table.identities;
+ // TODO: May be add indexes, objects and other fields?
+ LS.set(db.lsdbid + '.' + tableid, tbl);
+};
+
+/**
+ Restore table structure and data
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param tableid {string} Table name
+ @return Nothing
+*/
+LS.restoreTable = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ var tbl = LS.get(db.lsdbid + '.' + tableid);
+ var table = new alasql.Table();
+ for (var f in tbl) {
+ table[f] = tbl[f];
+ }
+ db.tables[tableid] = table;
+ table.indexColumns();
+ // We need to add other things here
+ return table;
+};
+
+/**
+ Remove table from localStorage
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param tableid {string} Table name
+*/
+
+LS.removeTable = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ localStorage.removeItem(db.lsdbid + '.' + tableid);
+};
+
+/**
+ Create database in localStorage
+ @param lsdbid {string} localStorage database id
+ @param args {array} List of parameters (not used in localStorage)
+ @param ifnotexists {boolean} Check if database does not exist
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param cb {function} Callback
+*/
+
+LS.createDatabase = function(lsdbid, args, ifnotexists, databaseid, cb) {
+ var res = 1;
+ var ls = LS.get('alasql'); // Read list of all databases
+ if (!(ifnotexists && ls && ls.databases && ls.databases[lsdbid])) {
+ if (!ls) ls = {databases: {}}; // Empty record
+ if (ls.databases && ls.databases[lsdbid]) {
+ throw new Error(
+ 'localStorage: Cannot create new database "' +
+ lsdbid +
+ '" because it already exists'
+ );
+ }
+ ls.databases[lsdbid] = true;
+ LS.set('alasql', ls);
+ LS.set(lsdbid, {databaseid: lsdbid, tables: {}}); // Create database record
+ } else {
+ res = 0;
+ }
+ if (cb) res = cb(res);
+ return res;
+};
+
+/**
+ Drop external database
+ @param lsdbid {string} localStorage database id
+ @param ifexists {boolean} Check if database exists
+ @param cb {function} Callback
+*/
+LS.dropDatabase = function(lsdbid, ifexists, cb) {
+ var res = 1;
+ var ls = LS.get('alasql');
+ if (!(ifexists && ls && ls.databases && !ls.databases[lsdbid])) {
+ // 1. Remove record from 'alasql' record
+ if (!ls) {
+ if (!ifexists) {
+ throw new Error('There is no any AlaSQL databases in localStorage');
+ } else {
+ return cb ? cb(0) : 0;
+ }
+ }
+
+ if (ls.databases && !ls.databases[lsdbid]) {
+ throw new Error(
+ 'localStorage: Cannot drop database "' +
+ lsdbid +
+ '" because there is no such database'
+ );
+ }
+ delete ls.databases[lsdbid];
+ LS.set('alasql', ls);
+
+ // 2. Remove tables definitions
+ var db = LS.get(lsdbid);
+ for (var tableid in db.tables) {
+ localStorage.removeItem(lsdbid + '.' + tableid);
+ }
+
+ // 3. Remove database definition
+ localStorage.removeItem(lsdbid);
+ } else {
+ res = 0;
+ }
+ if (cb) res = cb(res);
+ return res;
+};
+
+/**
+ Attach existing localStorage database to AlaSQL database
+ @param lsdibid {string} localStorage database id
+ @param
+*/
+
+LS.attachDatabase = function(lsdbid, databaseid, args, params, cb) {
+ var res = 1;
+ if (alasql.databases[databaseid]) {
+ throw new Error(
+ 'Unable to attach database as "' + databaseid + '" because it already exists'
+ );
+ }
+ if (!databaseid) databaseid = lsdbid;
+ var db = new alasql.Database(databaseid);
+ db.engineid = 'LOCALSTORAGE';
+ db.lsdbid = lsdbid;
+ db.tables = LS.get(lsdbid).tables;
+ // IF AUTOABORT IS OFF then copy data to memory
+ if (!alasql.options.autocommit) {
+ if (db.tables) {
+ for (var tbid in db.tables) {
+ LS.restoreTable(databaseid, tbid);
+ // db.tables[tbid].data = LS.get(db.lsdbid+'.'+tbid);
+ }
+ }
+ }
+ if (cb) res = cb(res);
+ return res;
+};
+
+/**
+ Show list of databases from localStorage
+ @param like {string} Mathing pattern
+ @param cb {function} Callback
+*/
+LS.showDatabases = function(like, cb) {
+ var res = [];
+ var ls = LS.get('alasql');
+ if (like) {
+ // TODO: If we have a special function for LIKE patterns?
+ var relike = new RegExp(like.value.replace(/%/g, '.*'), 'g');
+ }
+ if (ls && ls.databases) {
+ for (var dbid in ls.databases) {
+ res.push({databaseid: dbid});
+ }
+ if (like && res && res.length > 0) {
+ res = res.filter(function(d) {
+ return d.databaseid.match(relike);
+ });
+ }
+ }
+ if (cb) res = cb(res);
+ return res;
+};
+
+/**
+ Create table in localStorage database
+ @param databaseid {string} AlaSQL database id
+ @param tableid {string} Table id
+ @param ifnotexists {boolean} If not exists flag
+ @param cb {function} Callback
+*/
+
+LS.createTable = function(databaseid, tableid, ifnotexists, cb) {
+ var res = 1;
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var tb = LS.get(lsdbid + '.' + tableid);
+ // Check if such record exists
+ if (tb && !ifnotexists) {
+ throw new Error(
+ 'Table "' + tableid + '" alsready exists in localStorage database "' + lsdbid + '"'
+ );
+ }
+ var lsdb = LS.get(lsdbid);
+ var table = alasql.databases[databaseid].tables[tableid];
+
+ // TODO: Check if required
+ lsdb.tables[tableid] = true;
+
+ LS.set(lsdbid, lsdb);
+ LS.storeTable(databaseid, tableid);
+
+ if (cb) res = cb(res);
+ return res;
+};
+
+/**
+ Empty table and reset identities
+ @param databaseid {string} AlaSQL database id (not external localStorage)
+ @param tableid {string} Table name
+ @param ifexists {boolean} If exists flag
+ @param cb {function} Callback
+ @return 1 on success
+*/
+LS.truncateTable = function(databaseid, tableid, ifexists, cb) {
+ var res = 1;
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var lsdb;
+ if (alasql.options.autocommit) {
+ lsdb = LS.get(lsdbid);
+ } else {
+ lsdb = alasql.databases[databaseid];
+ }
+
+ if (!ifexists && !lsdb.tables[tableid]) {
+ throw new Error(
+ 'Cannot truncate table "' + tableid + '" in localStorage, because it does not exist'
+ );
+ }
+
+ //load table
+ var tbl = LS.restoreTable(databaseid, tableid);
+
+ //clear data from table
+ tbl.data = [];
+ //TODO reset all identities
+ //but identities are not working on LOCALSTORAGE
+ //See test 607 for details
+
+ //store table
+ LS.storeTable(databaseid, tableid);
+
+ if (cb) res = cb(res);
+ return res;
+};
+
+/**
+ Create table in localStorage database
+ @param databaseid {string} AlaSQL database id
+ @param tableid {string} Table id
+ @param ifexists {boolean} If exists flag
+ @param cb {function} Callback
+*/
+
+LS.dropTable = function(databaseid, tableid, ifexists, cb) {
+ var res = 1;
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var lsdb;
+
+ if (alasql.options.autocommit) {
+ lsdb = LS.get(lsdbid);
+ } else {
+ lsdb = alasql.databases[databaseid];
+ }
+ if (!ifexists && !lsdb.tables[tableid]) {
+ throw new Error(
+ 'Cannot drop table "' + tableid + '" in localStorage, because it does not exist'
+ );
+ }
+ delete lsdb.tables[tableid];
+ LS.set(lsdbid, lsdb);
+ // localStorage.removeItem(lsdbid+'.'+tableid);
+ LS.removeTable(databaseid, tableid);
+ if (cb) res = cb(res);
+ return res;
+};
+
+/**
+ Read all data from table
+*/
+
+LS.fromTable = function(databaseid, tableid, cb, idx, query) {
+
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ // var res = LS.get(lsdbid+'.'+tableid);
+
+ var res = LS.restoreTable(databaseid, tableid).data;
+
+ if (cb) res = cb(res, idx, query);
+ return res;
+};
+
+/**
+ Insert data into the table
+ @param databaseid {string} Database id
+ @param tableid {string} Table id
+ @param value {array} Array of values
+ @param columns {array} Columns (not used)
+ @param cb {function} Callback
+*/
+
+LS.intoTable = function(databaseid, tableid, value, columns, cb) {
+
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var res = value.length;
+ // var tb = LS.get(lsdbid+'.'+tableid);
+ var tb = LS.restoreTable(databaseid, tableid);
+ for (var columnid in tb.identities) {
+ var ident = tb.identities[columnid];
+
+ for (var index in value) {
+ value[index][columnid] = ident.value;
+ ident.value += ident.step;
+ }
+ }
+ if (!tb.data) tb.data = [];
+ tb.data = tb.data.concat(value);
+ // LS.set(lsdbid+'.'+tableid, tb);
+ LS.storeTable(databaseid, tableid);
+
+ if (cb) res = cb(res);
+
+ return res;
+};
+
+/**
+ Laad data from table
+*/
+LS.loadTableData = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ LS.restoreTable(databaseid, tableid);
+ // db.tables[tableid].data = LS.get(lsdbid+'.'+tableid);
+};
+
+/**
+ Save data to the table
+*/
+
+LS.saveTableData = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ LS.storeTable(lsdbid, tableid);
+ // LS.set(lsdbid+'.'+tableid,db.tables[tableid].data);
+ db.tables[tableid].data = undefined;
+};
+
+/**
+ Commit
+*/
+
+LS.commit = function(databaseid, cb) {
+
+ var db = alasql.databases[databaseid];
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var lsdb = {databaseid: lsdbid, tables: {}};
+ if (db.tables) {
+ for (var tbid in db.tables) {
+ // TODO: Question - do we need this line
+ lsdb.tables[tbid] = true;
+ LS.storeTable(databaseid, tbid);
+ // LS.set(lsdbid+'.'+tbid, db.tables[tbid].data);
+ }
+ }
+ LS.set(lsdbid, lsdb);
+ return cb ? cb(1) : 1;
+};
+
+/**
+ Alias BEGIN = COMMIT
+*/
+LS.begin = LS.commit;
+
+/**
+ ROLLBACK
+*/
+
+LS.rollback = function(databaseid, cb) {
+ // This does not work and should be fixed
+ // Plus test 151 and 231
+
+ return;
+
+ var db = alasql.databases[databaseid];
+ db.dbversion++;
+
+ var lsdbid = alasql.databases[databaseid].lsdbid;
+ var lsdb = LS.get(lsdbid);
+ // if(!alasql.options.autocommit) {
+
+ delete alasql.databases[databaseid];
+ alasql.databases[databaseid] = new alasql.Database(databaseid);
+ extend(alasql.databases[databaseid], lsdb);
+ alasql.databases[databaseid].databaseid = databaseid;
+ alasql.databases[databaseid].engineid = 'LOCALSTORAGE';
+
+ if (lsdb.tables) {
+ for (var tbid in lsdb.tables) {
+ // var tb = new alasql.Table({columns: db.tables[tbid].columns});
+ // extend(tb,lsdb.tables[tbid]);
+ // lsdb.tables[tbid] = true;
+
+ // if(!alasql.options.autocommit) {
+
+ // lsdb.tables[tbid].data = LS.get(db.lsdbid+'.'+tbid);
+ LS.restoreTable(databaseid, tbid);
+ // }
+ // lsdb.tables[tbid].indexColumns();
+
+ // index columns
+ // convert types
+ }
+ }
+ // }
+
+};
+
+//
+// 91websql.js
+// WebSQL database support
+// (c) 2014, Andrey Gershun
+//
+
+var SQLITE = (alasql.engines.SQLITE = function() {});
+
+SQLITE.createDatabase = function(wdbid, args, ifnotexists, dbid, cb) {
+ throw new Error('Connot create SQLITE database in memory. Attach it.');
+};
+
+SQLITE.dropDatabase = function(databaseid) {
+ throw new Error('This is impossible to drop SQLite database. Detach it.');
+};
+
+SQLITE.attachDatabase = function(sqldbid, dbid, args, params, cb) {
+ var res = 1;
+ if (alasql.databases[dbid]) {
+ throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
+ }
+
+ if ((args[0] && args[0] instanceof yy.StringValue) || args[0] instanceof yy.ParamValue) {
+ if (args[0] instanceof yy.StringValue) {
+ var value = args[0].value;
+ } else if (args[0] instanceof yy.ParamValue) {
+ var value = params[args[0].param];
+ }
+ alasql.utils.loadBinaryFile(
+ value,
+ true,
+ function(data) {
+ var db = new alasql.Database(dbid || sqldbid);
+ db.engineid = 'SQLITE';
+ db.sqldbid = sqldbid;
+ var sqldb = (db.sqldb = new SQL.Database(data));
+ db.tables = [];
+ var tables = sqldb.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;
+
+ tables.forEach(function(tbl) {
+ db.tables[tbl[1]] = {};
+ var columns = (db.tables[tbl[1]].columns = []);
+ var ast = alasql.parse(tbl[4]);
+
+ var coldefs = ast.statements[0].columns;
+ if (coldefs && coldefs.length > 0) {
+ coldefs.forEach(function(cd) {
+ columns.push(cd);
+ });
+ }
+ });
+
+ cb(1);
+ },
+ function(err) {
+ throw new Error('Cannot open SQLite database file "' + args[0].value + '"');
+ }
+ );
+ return res;
+ } else {
+ throw new Error('Cannot attach SQLite database without a file');
+ }
+
+ return res;
+};
+
+SQLITE.fromTable = function(databaseid, tableid, cb, idx, query) {
+ var data = alasql.databases[databaseid].sqldb.exec('SELECT * FROM ' + tableid);
+ var columns = (query.sources[idx].columns = []);
+ if (data[0].columns.length > 0) {
+ data[0].columns.forEach(function(columnid) {
+ columns.push({columnid: columnid});
+ });
+ }
+
+ var res = [];
+ if (data[0].values.length > 0) {
+ data[0].values.forEach(function(d) {
+ var r = {};
+ columns.forEach(function(col, idx) {
+ r[col.columnid] = d[idx];
+ });
+ res.push(r);
+ });
+ }
+ if (cb) cb(res, idx, query);
+};
+
+SQLITE.intoTable = function(databaseid, tableid, value, columns, cb) {
+ var sqldb = alasql.databases[databaseid].sqldb;
+ for (var i = 0, ilen = value.length; i < ilen; i++) {
+ var s = 'INSERT INTO ' + tableid + ' (';
+ var d = value[i];
+ var keys = Object.keys(d);
+ s += keys.join(',');
+ s += ') VALUES (';
+ s += keys
+ .map(function(k) {
+ v = d[k];
+ if (typeof v == 'string') v = "'" + v + "'";
+ return v;
+ })
+ .join(',');
+ s += ')';
+ sqldb.exec(s);
+ }
+ var res = ilen;
+ if (cb) cb(res);
+ return res;
+};
+
+//
+// 91localstorage.js
+// localStorage and DOM-Storage engine
+// Date: 09.12.2014
+// (c) Andrey Gershun
+//
+
+var FS = (alasql.engines.FILESTORAGE = alasql.engines.FILE = function() {});
+
+FS.createDatabase = function(fsdbid, args, ifnotexists, dbid, cb) {
+
+ var res = 1;
+ var filename = args[0].value;
+
+ alasql.utils.fileExists(filename, function(fex) {
+
+ if (fex) {
+ if (ifnotexists) {
+ res = 0;
+ if (cb) res = cb(res);
+ return res;
+ } else {
+ throw new Error('Cannot create new database file, because it already exists');
+ }
+ } else {
+ var data = {tables: {}};
+ alasql.utils.saveFile(filename, JSON.stringify(data), function(data) {
+ if (cb) res = cb(res);
+ });
+ }
+ });
+ return res;
+};
+
+FS.dropDatabase = function(fsdbid, ifexists, cb) {
+ var res;
+ var filename = fsdbid.value;
+
+ alasql.utils.fileExists(filename, function(fex) {
+ if (fex) {
+ res = 1;
+ alasql.utils.deleteFile(filename, function() {
+ res = 1;
+ if (cb) res = cb(res);
+ });
+ } else {
+ if (!ifexists) {
+ throw new Error('Cannot drop database file, because it does not exist');
+ }
+ res = 0;
+ if (cb) res = cb(res);
+ }
+ });
+ return res;
+};
+
+FS.attachDatabase = function(fsdbid, dbid, args, params, cb) {
+
+ var res = 1;
+ if (alasql.databases[dbid]) {
+ throw new Error('Unable to attach database as "' + dbid + '" because it already exists');
+ }
+ var db = new alasql.Database(dbid || fsdbid);
+ db.engineid = 'FILESTORAGE';
+ // db.fsdbid = fsdbid;
+ db.filename = args[0].value;
+ loadFile(db.filename, !!cb, function(s) {
+ try {
+ db.data = JSON.parse(s);
+ } catch (err) {
+ throw new Error('Data in FileStorage database are corrupted');
+ }
+ db.tables = db.data.tables;
+ // IF AUTOCOMMIT IS OFF then copy data to memory
+ if (!alasql.options.autocommit) {
+ if (db.tables) {
+ for (var tbid in db.tables) {
+ db.tables[tbid].data = db.data[tbid];
+ }
+ }
+ }
+ if (cb) res = cb(res);
+ });
+ return res;
+};
+
+FS.createTable = function(databaseid, tableid, ifnotexists, cb) {
+ var db = alasql.databases[databaseid];
+ var tb = db.data[tableid];
+ var res = 1;
+
+ if (tb && !ifnotexists) {
+ throw new Error('Table "' + tableid + '" alsready exists in the database "' + fsdbid + '"');
+ }
+ var table = alasql.databases[databaseid].tables[tableid];
+ db.data.tables[tableid] = {columns: table.columns};
+ db.data[tableid] = [];
+
+ FS.updateFile(databaseid);
+
+ if (cb) cb(res);
+ return res;
+};
+
+FS.updateFile = function(databaseid) {
+
+ var db = alasql.databases[databaseid];
+ if (db.issaving) {
+ db.postsave = true;
+ return;
+ }
+ db.issaving = true;
+ db.postsave = false;
+ alasql.utils.saveFile(db.filename, JSON.stringify(db.data), function() {
+ db.issaving = false;
+
+ if (db.postsave) {
+ setTimeout(function() {
+ FS.updateFile(databaseid);
+ }, 50); // TODO Test with different timeout parameters
+ }
+ });
+};
+
+FS.dropTable = function(databaseid, tableid, ifexists, cb) {
+ var res = 1;
+ var db = alasql.databases[databaseid];
+ if (!ifexists && !db.tables[tableid]) {
+ throw new Error(
+ 'Cannot drop table "' + tableid + '" in fileStorage, because it does not exist'
+ );
+ }
+ delete db.tables[tableid];
+ delete db.data.tables[tableid];
+ delete db.data[tableid];
+ FS.updateFile(databaseid);
+ if (cb) cb(res);
+ return res;
+};
+
+FS.fromTable = function(databaseid, tableid, cb, idx, query) {
+
+ var db = alasql.databases[databaseid];
+ var res = db.data[tableid];
+ if (cb) res = cb(res, idx, query);
+ return res;
+};
+
+FS.intoTable = function(databaseid, tableid, value, columns, cb) {
+ var db = alasql.databases[databaseid];
+ var res = value.length;
+ var tb = db.data[tableid];
+ if (!tb) tb = [];
+ db.data[tableid] = tb.concat(value);
+ FS.updateFile(databaseid);
+ if (cb) cb(res);
+ return res;
+};
+
+FS.loadTableData = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ db.tables[tableid].data = db.data[tableid];
+};
+
+FS.saveTableData = function(databaseid, tableid) {
+ var db = alasql.databases[databaseid];
+ db.data[tableid] = db.tables[tableid].data;
+ db.tables[tableid].data = null;
+ FS.updateFile(databaseid);
+};
+
+FS.commit = function(databaseid, cb) {
+
+ var db = alasql.databases[databaseid];
+ var fsdb = {tables: {}};
+ if (db.tables) {
+ for (var tbid in db.tables) {
+ db.data.tables[tbid] = {columns: db.tables[tbid].columns};
+ db.data[tbid] = db.tables[tbid].data;
+ }
+ }
+ FS.updateFile(databaseid);
+ return cb ? cb(1) : 1;
+};
+
+FS.begin = FS.commit;
+
+FS.rollback = function(databaseid, cb) {
+ var res = 1;
+ var db = alasql.databases[databaseid];
+ db.dbversion++;
+
+ // var lsdbid = alasql.databases[databaseid].lsdbid;
+ // lsdb = LS.get(lsdbid);
+ wait();
+ function wait() {
+ setTimeout(function() {
+ if (db.issaving) {
+ return wait();
+ } else {
+ alasql.loadFile(db.filename, !!cb, function(data) {
+ db.data = data;
+ db.tables = {};
+ for (var tbid in db.data.tables) {
+ var tb = new alasql.Table({columns: db.data.tables[tbid].columns});
+ extend(tb, db.data.tables[tbid]);
+ db.tables[tbid] = tb;
+ if (!alasql.options.autocommit) {
+ db.tables[tbid].data = db.data[tbid];
+ }
+ db.tables[tbid].indexColumns();
+
+ // index columns
+ // convert types
+ }
+
+ delete alasql.databases[databaseid];
+ alasql.databases[databaseid] = new alasql.Database(databaseid);
+ extend(alasql.databases[databaseid], db);
+ alasql.databases[databaseid].engineid = 'FILESTORAGE';
+ alasql.databases[databaseid].filename = db.filename;
+
+ if (cb) res = cb(res);
+ // Todo: check why no return
+ });
+ }
+ }, 100);
+ }
+
+ // if(!alasql.options.autocommit) {
+
+};
+
+if(utils.isBrowser && !utils.isWebWorker) {
+
+alasql = alasql || false;
+
+if (!alasql) {
+ throw new Error('alasql was not found');
+}
+
+alasql.worker = function() {
+ throw new Error('Can find webworker in this enviroment');
+};
+
+if (typeof Worker !== 'undefined') {
+ alasql.worker = function(path, paths, cb) {
+ // var path;
+ if (path === true) {
+ path = undefined;
+ }
+
+ if (typeof path === 'undefined') {
+ var sc = document.getElementsByTagName('script');
+ for (var i = 0; i < sc.length; i++) {
+ if (sc[i].src.substr(-16).toLowerCase() === 'alasql-worker.js') {
+ path = sc[i].src.substr(0, sc[i].src.length - 16) + 'alasql.js';
+ break;
+ } else if (sc[i].src.substr(-20).toLowerCase() === 'alasql-worker.min.js') {
+ path = sc[i].src.substr(0, sc[i].src.length - 20) + 'alasql.min.js';
+ break;
+ } else if (sc[i].src.substr(-9).toLowerCase() === 'alasql.js') {
+ path = sc[i].src;
+ break;
+ } else if (sc[i].src.substr(-13).toLowerCase() === 'alasql.min.js') {
+ path = sc[i].src.substr(0, sc[i].src.length - 13) + 'alasql.min.js';
+ break;
+ }
+ }
+ }
+
+ if (typeof path === 'undefined') {
+ throw new Error('Path to alasql.js is not specified');
+ } else if (path !== false) {
+ var js = "importScripts('";
+ js += path;
+ js +=
+ "');self.onmessage = function(event) {" +
+ 'alasql(event.data.sql,event.data.params, function(data){' +
+ 'postMessage({id:event.data.id, data:data});});}';
+
+ var blob = new Blob([js], {type: 'text/plain'});
+ alasql.webworker = new Worker(URL.createObjectURL(blob));
+
+ alasql.webworker.onmessage = function(event) {
+ var id = event.data.id;
+
+ alasql.buffer[id](event.data.data);
+ delete alasql.buffer[id];
+ };
+
+ alasql.webworker.onerror = function(e) {
+ throw e;
+ };
+
+ if (arguments.length > 1) {
+ var sql =
+ 'REQUIRE ' +
+ paths
+ .map(function(p) {
+ return '"' + p + '"';
+ })
+ .join(',');
+ alasql(sql, [], cb);
+ }
+ } else if (path === false) {
+ delete alasql.webworker;
+ return;
+ }
+ };
+}
+
+/* FileSaver.js
+ * A saveAs() FileSaver implementation.
+ * 1.3.2
+ * 2016-06-16 18:25:19
+ *
+ * By Eli Grey, http://eligrey.com
+ * License: MIT
+ * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
+ */
+
+/*global self */
+/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
+
+/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
+
+var saveAs =
+ saveAs ||
+ (function(view) {
+ 'use strict';
+ // IE <10 is explicitly unsupported
+ if (
+ typeof view === 'undefined' ||
+ (typeof navigator !== 'undefined' && /MSIE [1-9]\./.test(navigator.userAgent))
+ ) {
+ return;
+ }
+ var doc = view.document,
+ // only get URL when necessary in case Blob.js hasn't overridden it yet
+ get_URL = function() {
+ return view.URL || view.webkitURL || view;
+ },
+ save_link = doc.createElementNS('http://www.w3.org/1999/xhtml', 'a'),
+ can_use_save_link = 'download' in save_link,
+ click = function(node) {
+ var event = new MouseEvent('click');
+ node.dispatchEvent(event);
+ },
+ is_safari = /constructor/i.test(view.HTMLElement) || view.safari,
+ is_chrome_ios = /CriOS\/[\d]+/.test(navigator.userAgent),
+ throw_outside = function(ex) {
+ (view.setImmediate || view.setTimeout)(function() {
+ throw ex;
+ }, 0);
+ },
+ force_saveable_type = 'application/octet-stream',
+ // the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
+ arbitrary_revoke_timeout = 1000 * 40, // in ms
+ revoke = function(file) {
+ var revoker = function() {
+ if (typeof file === 'string') {
+ // file is an object URL
+ get_URL().revokeObjectURL(file);
+ } else {
+ // file is a File
+ file.remove();
+ }
+ };
+ setTimeout(revoker, arbitrary_revoke_timeout);
+ },
+ dispatch = function(filesaver, event_types, event) {
+ event_types = [].concat(event_types);
+ var i = event_types.length;
+ while (i--) {
+ var listener = filesaver['on' + event_types[i]];
+ if (typeof listener === 'function') {
+ try {
+ listener.call(filesaver, event || filesaver);
+ } catch (ex) {
+ throw_outside(ex);
+ }
+ }
+ }
+ },
+ auto_bom = function(blob) {
+ // prepend BOM for UTF-8 XML and text/* types (including HTML)
+ // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
+ if (
+ /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(
+ blob.type
+ )
+ ) {
+ return new Blob([String.fromCharCode(0xfeff), blob], {type: blob.type});
+ }
+ return blob;
+ },
+ FileSaver = function(blob, name, no_auto_bom) {
+ if (!no_auto_bom) {
+ blob = auto_bom(blob);
+ }
+ // First try a.download, then web filesystem, then object URLs
+ var filesaver = this,
+ type = blob.type,
+ force = type === force_saveable_type,
+ object_url,
+ dispatch_all = function() {
+ dispatch(filesaver, 'writestart progress write writeend'.split(' '));
+ },
+ // on any filesys errors revert to saving with object URLs
+ fs_error = function() {
+ if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
+ // Safari doesn't allow downloading of blob urls
+ var reader = new FileReader();
+ reader.onloadend = function() {
+ var url = is_chrome_ios
+ ? reader.result
+ : reader.result.replace(
+ /^data:[^;]*;/,
+ 'data:attachment/file;'
+ );
+ var popup = view.open(url, '_blank');
+ if (!popup) view.location.href = url;
+ url = undefined; // release reference before dispatching
+ filesaver.readyState = filesaver.DONE;
+ dispatch_all();
+ };
+ reader.readAsDataURL(blob);
+ filesaver.readyState = filesaver.INIT;
+ return;
+ }
+ // don't create more object URLs than needed
+ if (!object_url) {
+ object_url = get_URL().createObjectURL(blob);
+ }
+ if (force) {
+ view.location.href = object_url;
+ } else {
+ var opened = view.open(object_url, '_blank');
+ if (!opened) {
+ // Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
+ view.location.href = object_url;
+ }
+ }
+ filesaver.readyState = filesaver.DONE;
+ dispatch_all();
+ revoke(object_url);
+ };
+ filesaver.readyState = filesaver.INIT;
+
+ if (can_use_save_link) {
+ object_url = get_URL().createObjectURL(blob);
+ setTimeout(function() {
+ save_link.href = object_url;
+ save_link.download = name;
+ click(save_link);
+ dispatch_all();
+ revoke(object_url);
+ filesaver.readyState = filesaver.DONE;
+ });
+ return;
+ }
+
+ fs_error();
+ },
+ FS_proto = FileSaver.prototype,
+ saveAs = function(blob, name, no_auto_bom) {
+ return new FileSaver(blob, name || blob.name || 'download', no_auto_bom);
+ };
+ // IE 10+ (native saveAs)
+ if (typeof navigator !== 'undefined' && navigator.msSaveOrOpenBlob) {
+ return function(blob, name, no_auto_bom) {
+ name = name || blob.name || 'download';
+
+ if (!no_auto_bom) {
+ blob = auto_bom(blob);
+ }
+ return navigator.msSaveOrOpenBlob(blob, name);
+ };
+ }
+
+ FS_proto.abort = function() {};
+ FS_proto.readyState = FS_proto.INIT = 0;
+ FS_proto.WRITING = 1;
+ FS_proto.DONE = 2;
+
+ FS_proto.error = FS_proto.onwritestart = FS_proto.onprogress = FS_proto.onwrite = FS_proto.onabort = FS_proto.onerror = FS_proto.onwriteend = null;
+
+ return saveAs;
+ })(
+ (typeof self !== 'undefined' && self) ||
+ (typeof window !== 'undefined' && window) ||
+ this.content
+ );
+// `self` is undefined in Firefox for Android content script context
+// while `this` is nsIContentFrameMessageManager
+// with an attribute `content` that corresponds to the window
+
+if (typeof module !== 'undefined' && module.exports) {
+ module.exports.saveAs = saveAs;
+} else if (typeof define !== 'undefined' && define !== null && define.amd !== null) {
+ define('FileSaver.js', function() {
+ return saveAs;
+ });
+}
+
+/* eslint-disable */
+
+/*
+//
+// Last part of Alasql.js
+// Date: 03.11.2014
+// (c) 2014, Andrey Gershun
+//
+*/
+
+// This is a final part of Alasql
+
+//*only-for-browser/*
+if(utils.isCordova || utils.isMeteorServer || utils.isNode ){
+ console.warn('It looks like you are using the browser version of AlaSQL. Please use the alasql.fs.js file instead.')
+}
+//*/
+
+// FileSaveAs
+alasql.utils.saveAs = saveAs;
+
+};
+
+// Create default database
+new Database("alasql");
+
+// Set default database
+alasql.use("alasql");
+
+return alasql;
+}));
+
diff --git a/dist/alasql.min.js b/dist/alasql.min.js
index 4012a76588..6ec5a7c0e7 100755
--- a/dist/alasql.min.js
+++ b/dist/alasql.min.js
@@ -1,5 +1,5 @@
-//! AlaSQL v0.4.11-develop-af510181undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
-"use strict";!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.alasql=t()}(this,function(){function e(e){return"(y="+e+",y===y?y:undefined)"}function t(e,t){return"(y="+e+',typeof y=="undefined"?undefined:'+t+")"}function r(){return!0}function n(){}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")&&parseInt(e.split("msie")[1])}function s(e,t,r){function n(e,r,a){var o,u,c,l=e[r];if(l.selid){if("PATH"===l.selid){for(var h=[{node:a,stack:[]}],d={},f=T.databases[T.useid].objects;h.length>0;){var p=h.shift(),b=p.node,E=p.stack,c=n(l.args,0,b);if(c.length>0){if(r+1+1>e.length)return E;var g=[];return E&&E.length>0&&E.forEach(function(t){g=g.concat(n(e,r+1,t))}),g}void 0===d[b.$id]&&(d[b.$id]=!0,b.$out&&b.$out.length>0&&b.$out.forEach(function(e){var t=f[e],r=E.concat(t);r.push(f[t.$out[0]]),h.push({node:f[t.$out[0]],stack:r})}))}return[]}if("NOT"===l.selid){var u=n(l.args,0,a);return u.length>0?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("DISTINCT"===l.selid){var u;if(u=void 0===l.args||0===l.args.length?P(a):n(l.args,0,a),0===u.length)return[];var m=P(u);return r+1+1>e.length?m:n(e,r+1,m)}if("AND"===l.selid){var m=!0;return l.args.forEach(function(e){m=m&&n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("OR"===l.selid){var m=!1;return l.args.forEach(function(e){m=m||n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("ALL"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("ANY"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?[u[0]]:n(e,r+1,[u[0]])}if("UNIONALL"===l.selid){var u=[];return l.args.forEach(function(e){u=u.concat(n(e,0,a))}),0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("UNION"===l.selid){var u=[];l.args.forEach(function(e){u=u.concat(n(e,0,a))});var u=P(u);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("IF"===l.selid){var u=n(l.args,0,a);return 0===u.length?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("REPEAT"===l.selid){var v,S,A=l.args[0].value;S=l.args[1]?l.args[1].value:A,l.args[2]&&(v=l.args[2].variable);var y=[];if(0===A&&(r+1+1>e.length?y=[a]:(v&&(T.vars[v]=0),y=y.concat(n(e,r+1,a)))),S>0)for(var N=[{value:a,lvl:1}],C=0;N.length>0;){var u=N[0];if(N.shift(),u.lvl<=S){v&&(T.vars[v]=u.lvl);var R=n(l.sels,0,u.value);R.forEach(function(e){N.push({value:e,lvl:u.lvl+1})}),u.lvl>=A&&(r+1+1>e.length?y=y.concat(R):R.forEach(function(t){y=y.concat(n(e,r+1,t))}))}if(++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("OF"===l.selid){if(r+1+1>e.length)return[a];var O=[];return Object.keys(a).forEach(function(t){T.vars[l.args[0].variable]=t,O=O.concat(n(e,r+1,a[t]))}),O}if("TO"===l.selid){var w=T.vars[l.args[0]],I=[];if(I=void 0!==w?w.slice(0):[],I.push(a),r+1+1>e.length)return[a];T.vars[l.args[0]]=I;var O=n(e,r+1,a);return T.vars[l.args[0]]=w,O}if("ARRAY"===l.selid){var u=n(l.args,0,a);return u.length>0?(o=u,r+1+1>e.length?[o]:n(e,r+1,o)):[]}if("SUM"===l.selid){var u=n(l.args,0,a);if(!(u.length>0))return[];var o=u.reduce(function(e,t){return e+t},0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("AVG"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.reduce(function(e,t){return e+t},0)/u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("COUNT"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("FIRST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[0],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("LAST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[u.length-1],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("MIN"===l.selid){if(u=n(l.args,0,a),0===u.length)return[];var o=u.reduce(function(e,t){return Math.min(e,t)},1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("MAX"===l.selid){var u=n(l.args,0,a);if(0===u.length)return[];var o=u.reduce(function(e,t){return Math.max(e,t)},-1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("PLUS"===l.selid){var y=[],N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N.shift();if(u=n(l.args,0,u),N=N.concat(u),r+1+1>e.length?y=y.concat(u):u.forEach(function(t){var a=n(e,r+1,t);y=y.concat(a)}),++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("STAR"===l.selid){var y=[];y=n(e,r+1,a);var N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N[0];if(N.shift(),u=n(l.args,0,u),N=N.concat(u),r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),++C>1e5)throw new Error("Loop brake. Number of iterations = "+C)}return y}if("QUESTION"===l.selid){var y=[];y=y.concat(n(e,r+1,a));var u=n(l.args,0,a);return r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),y}if("WITH"!==l.selid){if("ROOT"===l.selid)return r+1+1>e.length?[a]:n(e,r+1,s);throw new Error("Wrong selector "+l.selid)}var u=n(l.args,0,a);if(0===u.length)return[];var c={status:1,values:u}}else{if(!l.srchid)throw new Error("Selector not found");var c=T.srch[l.srchid.toUpperCase()](a,l.args,i,t)}void 0===c&&(c={status:1,values:[a]});var m=[];if(1===c.status){var x=c.values;if(r+1+1>e.length)m=x;else for(var C=0;C0&&(o&&o[0]&&"PROP"===o[0].srchid&&o[0].args&&o[0].args[0]&&("XML"===o[0].args[0].toUpperCase()?(i.mode="XML",o.shift()):"HTML"===o[0].args[0].toUpperCase()?(i.mode="HTML",o.shift()):"JSON"===o[0].args[0].toUpperCase()&&(i.mode="JSON",o.shift())),o.length>0&&"VALUE"===o[0].srchid&&(i.value=!0,o.shift())),this.from instanceof X.Column){var u=this.from.databaseid||e;s=T.databases[u].tables[this.from.columnid].data}else if(this.from instanceof X.FuncValue&&T.from[this.from.funcid.toUpperCase()]){var c=this.from.args.map(function(e){var r=e.toJS();return new Function("params,alasql","var y;return "+r).bind(this)(t,T)});s=T.from[this.from.funcid.toUpperCase()].apply(this,c)}else if(void 0===this.from)s=T.databases[e].objects;else{var l=new Function("params,alasql","var y;return "+this.from.toJS());s=l(t,T),"object"==typeof Mongo&&"object"!=typeof Mongo.Collection&&s instanceof Mongo.Collection&&(s=s.find().fetch())}if(a=void 0!==o&&o.length>0?n(o,0,s):s,this.into){var h,d;void 0!==this.into.args[0]&&(h=new Function("params,alasql","var y;return "+this.into.args[0].toJS())(t,T)),void 0!==this.into.args[1]&&(d=new Function("params,alasql","var y;return "+this.into.args[1].toJS())(t,T)),a=T.into[this.into.funcid.toUpperCase()](h,d,a,[],r)}else i.value&&a.length>0&&(a=a[0]),r&&(a=r(a));return a}function i(e,t,r,n,a){e.sources.length;e.sourceslen=e.sources.length;var s=e.sourceslen;e.query=e,e.A=n,e.B=a,e.cb=r,e.oldscope=t,e.queriesfn&&(e.sourceslen+=e.queriesfn.length,s+=e.queriesfn.length,e.queriesdata=[],e.queriesfn.forEach(function(t,r){t.query.params=e.params,o([],-r-1,e)}));var i;i=t?_(t):{},e.scope=i;var c;return e.sources.forEach(function(t,r){t.query=e;var n=t.datafn(e,e.params,o,r,T);void 0!==n&&((e.intofn||e.intoallfn)&&Array.isArray(n)&&(n=n.length),c=n),t.queriesdata=e.queriesdata}),0!=e.sources.length&&0!==s||(c=u(e)),c}function o(e,t,r){if(t>=0){var n=r.sources[t];n.data=e,"function"==typeof n.data&&(n.getfn=n.data,n.dontcache=n.getfn.dontcache,"OUTER"!=n.joinmode&&"RIGHT"!=n.joinmode&&"ANTI"!=n.joinmode||(n.dontcache=!1),n.data={})}else r.queriesdata[-t-1]=G(e);if(!(--r.sourceslen>0))return u(r)}function u(e){var t,r=e.scope;z(e),e.data=[],e.xgroups={},e.groups=[];if(h(e,r,0),e.groupfn){if(e.data=[],0===e.groups.length){var n={};e.selectGroup.length>0&&e.selectGroup.forEach(function(e){"COUNT"==e.aggregatorid||"SUM"==e.aggregatorid?n[e.nick]=0:n[e.nick]=void 0}),e.groups=[n]}if(e.aggrKeys.length>0){var a="";e.aggrKeys.forEach(function(e){a+="g['"+e.nick+"']=alasql.aggr['"+e.funcid+"'](undefined,g['"+e.nick+"'],3);"});var s=new Function("g,params,alasql","var y;"+a)}for(var i=0,o=e.groups.length;i0){var g=e.removeKeys;if((t=g.length)>0)for(o=e.data.length,i=0;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return g.forEach(function(r){e.columnid==r&&(t=!0)}),!t}))}if(void 0!==e.removeLikeKeys&&e.removeLikeKeys.length>0){for(var m=e.removeLikeKeys,i=0,o=e.data.length;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return m.forEach(function(r){T.utils.like(r,e.columnid)&&(t=!0)}),!t}))}if(e.pivotfn&&e.pivotfn(),e.unpivotfn&&e.unpivotfn(),e.intoallfn){var S=e.intoallfn(e.columns,e.cb,e.params,e.alasql);return S}if(e.intofn){for(o=e.data.length,i=0;i=e.sources.length)e.wherefn(t,e.params,T)&&(e.groupfn?e.groupfn(t,e.params,T):e.data.push(e.selectfn(t,e.params,T)));else if(e.sources[r].applyselect){var n=e.sources[r];n.applyselect(e.params,function(a){if(a.length>0)for(var s=0;s0){for(var a={},s=Math.min(t.length,T.options.columnlookup||10)-1;0<=s;s--)for(var i in t[s])a[i]=!0;n=Object.keys(a).map(function(e){return{columnid:e}})}else n=[];if("VALUE"===r)if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0],t=t[0][i]}else t=void 0;else if("ROW"===r)if(t.length>0){var i,o=[];for(var i in t[0])o.push(t[0][i]);t=o}else t=void 0;else if("COLUMN"===r){var u=[];if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0)i=n[0].columnid,d=n[1].columnid;else{var f=Object.keys(t[0]);i=f[0],d=f[1]}for(var s=0,c=t.length;s0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0?s.forEach(function(s){r&&"underscore"==T.options.joinstar?a.push("'"+t+"_"+s.columnid+"':p['"+t+"']['"+s.columnid+"']"):r&&"json"==T.options.joinstar?n+="r['"+t+"']['"+s.columnid+"']=p['"+t+"']['"+s.columnid+"'];":a.push("'"+s.columnid+"':p['"+t+"']['"+s.columnid+"']"),e.selectColumns[C(s.columnid)]=!0;var i={columnid:s.columnid,dbtypeid:s.dbtypeid,dbsize:s.dbsize,dbprecision:s.dbprecision,dbenum:s.dbenum};e.columns.push(i),e.xcolumns[i.columnid]=i}):(n+='var w=p["'+t+'"];for(var k in w){r[k]=w[k]};',e.dirtyColumns=!0),{s:a.join(","),sp:n}}function p(e,t){if(Array.isArray(e)){for(var r=[[]],n=0;n",t+="table {border:1px black solid; border-collapse: collapse; border-spacing: 0px;}",t+="td,th {border:1px black solid; padding-left:5px; padding-right:5px}",t+="th {background-color: #EEE}",t+="",t+="";var r=[];for(var n in e[0])r.push(n);t+="#",r.forEach(function(e){t+=" "+e});for(var a=0,s=e.length;a"+(a+1),r.forEach(function(r){t+=" ",e[a][r]==+e[a][r]?(t+='',void 0===e[a][r]?t+="NULL":t+=e[a][r],t+="
"):void 0===e[a][r]?t+="NULL":"string"==typeof e[a][r]?t+=e[a][r]:t+=oe(e[a][r])});t+="
"}else t+=""+oe(e)+"
";return t}function g(e,t,r){if(!(r<=0)){var n=t-e.scrollTop,a=n/r*10;setTimeout(function(){e.scrollTop!==t&&(e.scrollTop=e.scrollTop+a,g(e,t,r-10))},10)}}function m(e,t,r,n,a,s){function i(e){for(var t="",r=0,n=10240;r0&&d[d.length-1]&&0==Object.keys(d[d.length-1]).length&&d.pop(),n&&(d=n(d,a,s))},function(e){throw e})}function S(e){function t(){if(i(/^<\?xml\s*/)){for(var e={attributes:{}};!o()&&!u("?>");){var t=a();if(!t)return e;e.attributes[t.name]=t.value}return i(/\?>\s*/),e}}function r(){var e=i(/^<([\w-:.]+)\s*/);if(e){for(var t={name:e[1],attributes:{},children:[]};!(o()||u(">")||u("?>")||u("/>"));){var s=a();if(!s)return t;t.attributes[s.name]=s.value}if(i(/^\s*\/>\s*/))return t;i(/\??>\s*/),t.content=n();for(var c;c=r();)t.children.push(c);return i(/^<\/[\w-:.]+>\s*/),t}}function n(){var e=i(/^([^<]*)/);return e?e[1]:""}function a(){var e=i(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(e)return{name:e[1],value:s(e[2])}}function s(e){return e.replace(/^['"]|['"]$/g,"")}function i(t){var r=e.match(t);if(r)return e=e.slice(r[0].length),r}function o(){return 0==e.length}function u(t){return 0==e.indexOf(t)}return e=e.trim(),e=e.replace(//g,""),function(){return{declaration:t(),root:r()}}()}var T=function(e,t,r,n){if(t=t||[],"function"!=typeof importScripts&&T.webworker){var a=T.lastid++;return T.buffer[a]=r,void T.webworker.postMessage({id:a,sql:e,params:t})}return 0===arguments.length?new X.Select({columns:[new X.Column({columnid:"*"})],from:[new X.ParamValue({param:0})]}):1===arguments.length&&e.constructor===Array?T.promise(e):("function"==typeof t&&(n=r,r=t,t=[]),"object"!=typeof t&&(t=[t]),"string"==typeof e&&"#"===e[0]&&"object"==typeof document?e=document.querySelector(e).textContent:"object"==typeof e&&e instanceof HTMLElement?e=e.textContent:"function"==typeof e&&(e=e.toString(),e=(/\/\*([\S\s]+)\*\//m.exec(e)||["","Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function."])[1]),T.exec(e,t,r,n))};T.version="0.4.11-develop-af510181undefined",T.debug=void 0;var A=function(){return null},y=function(){function e(){this.yy={}}var t=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r
+//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+"use strict";!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.alasql=t()}(this,function(){function e(e){return"(y="+e+",y===y?y:undefined)"}function t(e,t){return"(y="+e+',typeof y=="undefined"?undefined:'+t+")"}function r(){return!0}function n(){}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")&&parseInt(e.split("msie")[1])}function s(e,t,r){function n(e,r,a){var o,u,c,l=e[r];if(l.selid){if("PATH"===l.selid){for(var h=[{node:a,stack:[]}],d={},f=T.databases[T.useid].objects;h.length>0;){var p=h.shift(),b=p.node,E=p.stack,c=n(l.args,0,b);if(c.length>0){if(r+1+1>e.length)return E;var g=[];return E&&E.length>0&&E.forEach(function(t){g=g.concat(n(e,r+1,t))}),g}void 0===d[b.$id]&&(d[b.$id]=!0,b.$out&&b.$out.length>0&&b.$out.forEach(function(e){var t=f[e],r=E.concat(t);r.push(f[t.$out[0]]),h.push({node:f[t.$out[0]],stack:r})}))}return[]}if("NOT"===l.selid){var u=n(l.args,0,a);return u.length>0?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("DISTINCT"===l.selid){var u;if(u=void 0===l.args||0===l.args.length?P(a):n(l.args,0,a),0===u.length)return[];var m=P(u);return r+1+1>e.length?m:n(e,r+1,m)}if("AND"===l.selid){var m=!0;return l.args.forEach(function(e){m=m&&n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("OR"===l.selid){var m=!1;return l.args.forEach(function(e){m=m||n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("ALL"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("ANY"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?[u[0]]:n(e,r+1,[u[0]])}if("UNIONALL"===l.selid){var u=[];return l.args.forEach(function(e){u=u.concat(n(e,0,a))}),0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("UNION"===l.selid){var u=[];l.args.forEach(function(e){u=u.concat(n(e,0,a))});var u=P(u);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("IF"===l.selid){var u=n(l.args,0,a);return 0===u.length?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("REPEAT"===l.selid){var v,S,A=l.args[0].value;S=l.args[1]?l.args[1].value:A,l.args[2]&&(v=l.args[2].variable);var y=[];if(0===A&&(r+1+1>e.length?y=[a]:(v&&(T.vars[v]=0),y=y.concat(n(e,r+1,a)))),S>0)for(var N=[{value:a,lvl:1}],C=0;N.length>0;){var u=N[0];if(N.shift(),u.lvl<=S){v&&(T.vars[v]=u.lvl);var R=n(l.sels,0,u.value);R.forEach(function(e){N.push({value:e,lvl:u.lvl+1})}),u.lvl>=A&&(r+1+1>e.length?y=y.concat(R):R.forEach(function(t){y=y.concat(n(e,r+1,t))}))}if(++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("OF"===l.selid){if(r+1+1>e.length)return[a];var O=[];return Object.keys(a).forEach(function(t){T.vars[l.args[0].variable]=t,O=O.concat(n(e,r+1,a[t]))}),O}if("TO"===l.selid){var w=T.vars[l.args[0]],I=[];if(I=void 0!==w?w.slice(0):[],I.push(a),r+1+1>e.length)return[a];T.vars[l.args[0]]=I;var O=n(e,r+1,a);return T.vars[l.args[0]]=w,O}if("ARRAY"===l.selid){var u=n(l.args,0,a);return u.length>0?(o=u,r+1+1>e.length?[o]:n(e,r+1,o)):[]}if("SUM"===l.selid){var u=n(l.args,0,a);if(!(u.length>0))return[];var o=u.reduce(function(e,t){return e+t},0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("AVG"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.reduce(function(e,t){return e+t},0)/u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("COUNT"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("FIRST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[0],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("LAST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[u.length-1],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("MIN"===l.selid){if(u=n(l.args,0,a),0===u.length)return[];var o=u.reduce(function(e,t){return Math.min(e,t)},1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("MAX"===l.selid){var u=n(l.args,0,a);if(0===u.length)return[];var o=u.reduce(function(e,t){return Math.max(e,t)},-1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("PLUS"===l.selid){var y=[],N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N.shift();if(u=n(l.args,0,u),N=N.concat(u),r+1+1>e.length?y=y.concat(u):u.forEach(function(t){var a=n(e,r+1,t);y=y.concat(a)}),++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("STAR"===l.selid){var y=[];y=n(e,r+1,a);var N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N[0];if(N.shift(),u=n(l.args,0,u),N=N.concat(u),r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),++C>1e5)throw new Error("Loop brake. Number of iterations = "+C)}return y}if("QUESTION"===l.selid){var y=[];y=y.concat(n(e,r+1,a));var u=n(l.args,0,a);return r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),y}if("WITH"!==l.selid){if("ROOT"===l.selid)return r+1+1>e.length?[a]:n(e,r+1,s);throw new Error("Wrong selector "+l.selid)}var u=n(l.args,0,a);if(0===u.length)return[];var c={status:1,values:u}}else{if(!l.srchid)throw new Error("Selector not found");var c=T.srch[l.srchid.toUpperCase()](a,l.args,i,t)}void 0===c&&(c={status:1,values:[a]});var m=[];if(1===c.status){var x=c.values;if(r+1+1>e.length)m=x;else for(var C=0;C0&&(o&&o[0]&&"PROP"===o[0].srchid&&o[0].args&&o[0].args[0]&&("XML"===o[0].args[0].toUpperCase()?(i.mode="XML",o.shift()):"HTML"===o[0].args[0].toUpperCase()?(i.mode="HTML",o.shift()):"JSON"===o[0].args[0].toUpperCase()&&(i.mode="JSON",o.shift())),o.length>0&&"VALUE"===o[0].srchid&&(i.value=!0,o.shift())),this.from instanceof X.Column){var u=this.from.databaseid||e;s=T.databases[u].tables[this.from.columnid].data}else if(this.from instanceof X.FuncValue&&T.from[this.from.funcid.toUpperCase()]){var c=this.from.args.map(function(e){var r=e.toJS();return new Function("params,alasql","var y;return "+r).bind(this)(t,T)});s=T.from[this.from.funcid.toUpperCase()].apply(this,c)}else if(void 0===this.from)s=T.databases[e].objects;else{var l=new Function("params,alasql","var y;return "+this.from.toJS());s=l(t,T),"object"==typeof Mongo&&"object"!=typeof Mongo.Collection&&s instanceof Mongo.Collection&&(s=s.find().fetch())}if(a=void 0!==o&&o.length>0?n(o,0,s):s,this.into){var h,d;void 0!==this.into.args[0]&&(h=new Function("params,alasql","var y;return "+this.into.args[0].toJS())(t,T)),void 0!==this.into.args[1]&&(d=new Function("params,alasql","var y;return "+this.into.args[1].toJS())(t,T)),a=T.into[this.into.funcid.toUpperCase()](h,d,a,[],r)}else i.value&&a.length>0&&(a=a[0]),r&&(a=r(a));return a}function i(e,t,r,n,a){e.sources.length;e.sourceslen=e.sources.length;var s=e.sourceslen;e.query=e,e.A=n,e.B=a,e.cb=r,e.oldscope=t,e.queriesfn&&(e.sourceslen+=e.queriesfn.length,s+=e.queriesfn.length,e.queriesdata=[],e.queriesfn.forEach(function(t,r){t.query.params=e.params,o([],-r-1,e)}));var i;i=t?_(t):{},e.scope=i;var c;return e.sources.forEach(function(t,r){t.query=e;var n=t.datafn(e,e.params,o,r,T);void 0!==n&&((e.intofn||e.intoallfn)&&Array.isArray(n)&&(n=n.length),c=n),t.queriesdata=e.queriesdata}),0!=e.sources.length&&0!==s||(c=u(e)),c}function o(e,t,r){if(t>=0){var n=r.sources[t];n.data=e,"function"==typeof n.data&&(n.getfn=n.data,n.dontcache=n.getfn.dontcache,"OUTER"!=n.joinmode&&"RIGHT"!=n.joinmode&&"ANTI"!=n.joinmode||(n.dontcache=!1),n.data={})}else r.queriesdata[-t-1]=G(e);if(!(--r.sourceslen>0))return u(r)}function u(e){var t,r=e.scope;z(e),e.data=[],e.xgroups={},e.groups=[];if(h(e,r,0),e.groupfn){if(e.data=[],0===e.groups.length){var n={};e.selectGroup.length>0&&e.selectGroup.forEach(function(e){"COUNT"==e.aggregatorid||"SUM"==e.aggregatorid?n[e.nick]=0:n[e.nick]=void 0}),e.groups=[n]}if(e.aggrKeys.length>0){var a="";e.aggrKeys.forEach(function(e){a+="g['"+e.nick+"']=alasql.aggr['"+e.funcid+"'](undefined,g['"+e.nick+"'],3);"});var s=new Function("g,params,alasql","var y;"+a)}for(var i=0,o=e.groups.length;i0){var g=e.removeKeys;if((t=g.length)>0)for(o=e.data.length,i=0;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return g.forEach(function(r){e.columnid==r&&(t=!0)}),!t}))}if(void 0!==e.removeLikeKeys&&e.removeLikeKeys.length>0){for(var m=e.removeLikeKeys,i=0,o=e.data.length;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return m.forEach(function(r){T.utils.like(r,e.columnid)&&(t=!0)}),!t}))}if(e.pivotfn&&e.pivotfn(),e.unpivotfn&&e.unpivotfn(),e.intoallfn){var S=e.intoallfn(e.columns,e.cb,e.params,e.alasql);return S}if(e.intofn){for(o=e.data.length,i=0;i=e.sources.length)e.wherefn(t,e.params,T)&&(e.groupfn?e.groupfn(t,e.params,T):e.data.push(e.selectfn(t,e.params,T)));else if(e.sources[r].applyselect){var n=e.sources[r];n.applyselect(e.params,function(a){if(a.length>0)for(var s=0;s0){for(var a={},s=Math.min(t.length,T.options.columnlookup||10)-1;0<=s;s--)for(var i in t[s])a[i]=!0;n=Object.keys(a).map(function(e){return{columnid:e}})}else n=[];if("VALUE"===r)if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0],t=t[0][i]}else t=void 0;else if("ROW"===r)if(t.length>0){var i,o=[];for(var i in t[0])o.push(t[0][i]);t=o}else t=void 0;else if("COLUMN"===r){var u=[];if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0)i=n[0].columnid,d=n[1].columnid;else{var f=Object.keys(t[0]);i=f[0],d=f[1]}for(var s=0,c=t.length;s0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0?s.forEach(function(s){r&&"underscore"==T.options.joinstar?a.push("'"+t+"_"+s.columnid+"':p['"+t+"']['"+s.columnid+"']"):r&&"json"==T.options.joinstar?n+="r['"+t+"']['"+s.columnid+"']=p['"+t+"']['"+s.columnid+"'];":a.push("'"+s.columnid+"':p['"+t+"']['"+s.columnid+"']"),e.selectColumns[C(s.columnid)]=!0;var i={columnid:s.columnid,dbtypeid:s.dbtypeid,dbsize:s.dbsize,dbprecision:s.dbprecision,dbenum:s.dbenum};e.columns.push(i),e.xcolumns[i.columnid]=i}):(n+='var w=p["'+t+'"];for(var k in w){r[k]=w[k]};',e.dirtyColumns=!0),{s:a.join(","),sp:n}}function p(e,t){if(Array.isArray(e)){for(var r=[[]],n=0;n",t+="table {border:1px black solid; border-collapse: collapse; border-spacing: 0px;}",t+="td,th {border:1px black solid; padding-left:5px; padding-right:5px}",t+="th {background-color: #EEE}",t+="",t+="";var r=[];for(var n in e[0])r.push(n);t+="#",r.forEach(function(e){t+=" "+e});for(var a=0,s=e.length;a"+(a+1),r.forEach(function(r){t+=" ",e[a][r]==+e[a][r]?(t+='',void 0===e[a][r]?t+="NULL":t+=e[a][r],t+="
"):void 0===e[a][r]?t+="NULL":"string"==typeof e[a][r]?t+=e[a][r]:t+=oe(e[a][r])});t+="
"}else t+=""+oe(e)+"
";return t}function g(e,t,r){if(!(r<=0)){var n=t-e.scrollTop,a=n/r*10;setTimeout(function(){e.scrollTop!==t&&(e.scrollTop=e.scrollTop+a,g(e,t,r-10))},10)}}function m(e,t,r,n,a,s){function i(e){for(var t="",r=0,n=10240;r0&&d[d.length-1]&&0==Object.keys(d[d.length-1]).length&&d.pop(),n&&(d=n(d,a,s))},function(e){throw e})}function S(e){function t(){if(i(/^<\?xml\s*/)){for(var e={attributes:{}};!o()&&!u("?>");){var t=a();if(!t)return e;e.attributes[t.name]=t.value}return i(/\?>\s*/),e}}function r(){var e=i(/^<([\w-:.]+)\s*/);if(e){for(var t={name:e[1],attributes:{},children:[]};!(o()||u(">")||u("?>")||u("/>"));){var s=a();if(!s)return t;t.attributes[s.name]=s.value}if(i(/^\s*\/>\s*/))return t;i(/\??>\s*/),t.content=n();for(var c;c=r();)t.children.push(c);return i(/^<\/[\w-:.]+>\s*/),t}}function n(){var e=i(/^([^<]*)/);return e?e[1]:""}function a(){var e=i(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(e)return{name:e[1],value:s(e[2])}}function s(e){return e.replace(/^['"]|['"]$/g,"")}function i(t){var r=e.match(t);if(r)return e=e.slice(r[0].length),r}function o(){return 0==e.length}function u(t){return 0==e.indexOf(t)}return e=e.trim(),e=e.replace(//g,""),function(){return{declaration:t(),root:r()}}()}var T=function(e,t,r,n){if(t=t||[],"function"!=typeof importScripts&&T.webworker){var a=T.lastid++;return T.buffer[a]=r,void T.webworker.postMessage({id:a,sql:e,params:t})}return 0===arguments.length?new X.Select({columns:[new X.Column({columnid:"*"})],from:[new X.ParamValue({param:0})]}):1===arguments.length&&e.constructor===Array?T.promise(e):("function"==typeof t&&(n=r,r=t,t=[]),"object"!=typeof t&&(t=[t]),"string"==typeof e&&"#"===e[0]&&"object"==typeof document?e=document.querySelector(e).textContent:"object"==typeof e&&e instanceof HTMLElement?e=e.textContent:"function"==typeof e&&(e=e.toString(),e=(/\/\*([\S\s]+)\*\//m.exec(e)||["","Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function."])[1]),T.exec(e,t,r,n))};T.version="0.4.11-develop-977878caundefined",T.debug=void 0;var A=function(){return null},y=function(){function e(){this.yy={}}var t=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r
},r=[2,13],n=[1,104],a=[1,102],s=[1,103],i=[1,6],o=[1,42],u=[1,79],c=[1,76],l=[1,94],h=[1,93],d=[1,69],f=[1,101],p=[1,85],b=[1,64],E=[1,71],g=[1,84],m=[1,66],v=[1,70],S=[1,68],A=[1,61],y=[1,74],N=[1,62],C=[1,67],R=[1,83],w=[1,77],I=[1,86],x=[1,87],D=[1,81],k=[1,82],L=[1,80],$=[1,88],M=[1,89],U=[1,90],_=[1,91],F=[1,92],P=[1,98],q=[1,65],G=[1,78],V=[1,72],B=[1,96],j=[1,97],H=[1,63],J=[1,73],Y=[1,108],W=[1,107],X=[10,306,602,764],K=[10,306,310,602,764],Q=[1,115],z=[1,116],Z=[1,117],ee=[1,118],te=[1,119],re=[130,353,410],ne=[1,127],ae=[1,126],se=[1,134],ie=[1,164],oe=[1,175],ue=[1,178],ce=[1,173],le=[1,181],he=[1,185],de=[1,160],fe=[1,182],pe=[1,169],be=[1,171],Ee=[1,174],ge=[1,183],me=[1,166],ve=[1,193],Se=[1,188],Te=[1,189],Ae=[1,194],ye=[1,195],Ne=[1,196],Ce=[1,197],Re=[1,198],Oe=[1,199],we=[1,200],Ie=[1,201],xe=[1,202],De=[1,176],ke=[1,177],Le=[1,179],$e=[1,180],Me=[1,186],Ue=[1,192],_e=[1,184],Fe=[1,187],Pe=[1,172],qe=[1,170],Ge=[1,191],Ve=[1,203],Be=[2,4,5],je=[2,471],He=[1,206],Je=[1,211],Ye=[1,220],We=[1,216],Xe=[10,72,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],Ke=[2,4,5,10,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],Qe=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ze=[1,249],Ze=[1,256],et=[1,265],tt=[1,270],rt=[1,269],nt=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,168,169,179,180,181,183,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],at=[2,162],st=[1,281],it=[10,74,78,306,310,505,602,764],ot=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,193,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,302,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,344,356,368,369,370,373,374,386,389,396,400,401,402,403,404,405,406,408,409,417,418,420,424,426,433,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,514,515,516,517,602,764],ut=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],ct=[1,562],lt=[1,564],ht=[2,503],dt=[1,569],ft=[1,580],pt=[1,583],bt=[1,584],Et=[10,78,89,132,137,146,189,296,306,310,470,602,764],gt=[10,74,306,310,602,764],mt=[2,567],vt=[1,602],St=[2,4,5,156],Tt=[1,640],At=[1,612],yt=[1,646],Nt=[1,647],Ct=[1,620],Rt=[1,631],Ot=[1,618],wt=[1,626],It=[1,619],xt=[1,627],Dt=[1,629],kt=[1,621],Lt=[1,622],$t=[1,641],Mt=[1,638],Ut=[1,639],_t=[1,615],Ft=[1,617],Pt=[1,609],qt=[1,610],Gt=[1,611],Vt=[1,613],Bt=[1,614],jt=[1,616],Ht=[1,623],Jt=[1,624],Yt=[1,628],Wt=[1,630],Xt=[1,632],Kt=[1,633],Qt=[1,634],zt=[1,635],Zt=[1,636],er=[1,642],tr=[1,643],rr=[1,644],nr=[1,645],ar=[2,287],sr=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ir=[2,359],or=[1,668],ur=[1,678],cr=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],lr=[1,694],hr=[1,703],dr=[1,702],fr=[2,4,5,10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],pr=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],br=[2,202],Er=[1,725],gr=[10,72,78,93,98,118,128,162,168,169,183,232,245,247,306,310,602,764],mr=[2,163],vr=[1,728],Sr=[2,4,5,112],Tr=[1,741],Ar=[1,760],yr=[1,740],Nr=[1,739],Cr=[1,734],Rr=[1,735],Or=[1,737],wr=[1,738],Ir=[1,742],xr=[1,743],Dr=[1,744],kr=[1,745],Lr=[1,746],$r=[1,747],Mr=[1,748],Ur=[1,749],_r=[1,750],Fr=[1,751],Pr=[1,752],qr=[1,753],Gr=[1,754],Vr=[1,755],Br=[1,756],jr=[1,757],Hr=[1,759],Jr=[1,761],Yr=[1,762],Wr=[1,763],Xr=[1,764],Kr=[1,765],Qr=[1,766],zr=[1,767],Zr=[1,770],en=[1,771],tn=[1,772],rn=[1,773],nn=[1,774],an=[1,775],sn=[1,776],on=[1,777],un=[1,778],cn=[1,779],ln=[1,780],hn=[1,781],dn=[74,89,189],fn=[10,74,78,154,187,230,297,306,310,343,356,368,369,373,374,602,764],pn=[1,798],bn=[10,74,78,300,306,310,602,764],En=[1,799],gn=[1,805],mn=[1,806],vn=[1,810],Sn=[10,74,78,306,310,602,764],Tn=[2,4,5,77,131,132,137,143,145,149,152,154,156,179,180,181,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,312,317,420,424],An=[10,72,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],yn=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],Nn=[2,4,5,132,296],Cn=[1,844],Rn=[10,74,76,78,306,310,602,764],On=[2,738],wn=[10,74,76,78,132,139,141,145,152,306,310,420,424,602,764],In=[2,1161],xn=[10,74,76,78,139,141,145,152,306,310,420,424,602,764],Dn=[10,74,76,78,139,141,145,306,310,420,424,602,764],kn=[10,74,78,139,141,306,310,602,764],Ln=[10,78,89,132,146,189,296,306,310,470,602,764],$n=[335,338,339],Mn=[2,764],Un=[1,869],_n=[1,870],Fn=[1,871],Pn=[1,872],qn=[1,881],Gn=[1,880],Vn=[164,166,334],Bn=[2,444],jn=[1,936],Hn=[2,4,5,77,131,156,290,291,292,293],Jn=[1,951],Yn=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Wn=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Xn=[2,375],Kn=[1,958],Qn=[306,308,310],zn=[74,300],Zn=[74,300,426],ea=[1,965],ta=[2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ra=[74,426],na=[1,978],aa=[1,977],sa=[1,984],ia=[10,72,78,93,98,118,128,162,168,169,232,245,247,306,310,602,764],oa=[1,1010],ua=[10,72,78,306,310,602,764],ca=[1,1016],la=[1,1017],ha=[1,1018],da=[2,4,5,10,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],fa=[1,1068],pa=[1,1067],ba=[1,1081],Ea=[1,1080],ga=[1,1088],ma=[10,72,74,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],va=[1,1119],Sa=[10,78,89,146,189,306,310,470,602,764],Ta=[1,1139],Aa=[1,1138],ya=[1,1137],Na=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ca=[1,1153],Ra=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Oa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],wa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ia=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],xa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Da=[2,406],ka=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],La=[2,285],$a=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ma=[10,78,306,310,602,764],Ua=[1,1189],_a=[10,77,78,143,145,152,181,302,306,310,420,424,602,764],Fa=[10,74,78,306,308,310,464,602,764],Pa=[1,1200],qa=[10,72,78,118,128,162,168,169,232,245,247,306,310,602,764],Ga=[10,72,74,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],Va=[2,4,5,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],Ba=[2,4,5,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],ja=[2,1085],Ha=[2,4,5,72,74,76,77,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],Ja=[1,1252],Ya=[10,74,78,128,306,308,310,464,602,764],Wa=[115,116,124],Xa=[2,584],Ka=[1,1280],Qa=[76,139],za=[2,724],Za=[1,1297],es=[1,1298],ts=[2,4,5,10,53,72,76,89,124,146,156,189,230,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],rs=[2,330],ns=[1,1322],as=[1,1336],ss=[1,1338],is=[2,487],os=[74,78],us=[10,306,308,310,464,602,764],cs=[10,72,78,118,162,168,169,232,245,247,306,310,602,764],ls=[1,1354],hs=[1,1358],ds=[1,1359],fs=[1,1361],ps=[1,1362],bs=[1,1363],Es=[1,1364],gs=[1,1365],ms=[1,1366],vs=[1,1367],Ss=[1,1368],Ts=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],As=[1,1393],ys=[10,72,78,118,162,168,169,245,247,306,310,602,764],Ns=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],Cs=[1,1490],Rs=[1,1492],Os=[2,4,5,77,143,145,152,156,181,290,291,292,293,302,420,424],ws=[1,1506],Is=[10,72,74,78,162,168,169,245,247,306,310,602,764],xs=[1,1524],Ds=[1,1526],ks=[1,1527],Ls=[1,1523],$s=[1,1522],Ms=[1,1521],Us=[1,1528],_s=[1,1518],Fs=[1,1519],Ps=[1,1520],qs=[1,1545],Gs=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],Vs=[1,1556],Bs=[1,1564],js=[1,1563],Hs=[10,72,78,162,168,169,245,247,306,310,602,764],Js=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],Ys=[2,4,5,10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],Ws=[1,1621],Xs=[1,1623],Ks=[1,1620],Qs=[1,1622],zs=[187,193,368,369,370,373],Zs=[2,515],ei=[1,1628],ti=[1,1647],ri=[10,72,78,162,168,169,306,310,602,764],ni=[1,1657],ai=[1,1658],si=[1,1659],ii=[1,1678],oi=[4,10,243,306,310,343,356,602,764],ui=[1,1726],ci=[10,72,74,78,118,162,168,169,239,245,247,306,310,602,764],li=[2,4,5,77],hi=[1,1820],di=[1,1832],fi=[1,1851],pi=[10,72,78,162,168,169,306,310,415,602,764],bi=[10,74,78,230,306,310,602,764],Ei={trace:function(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,NonReserved:6,LiteralWithSpaces:7,main:8,Statements:9,EOF:10,Statements_group0:11,AStatement:12,ExplainStatement:13,EXPLAIN:14,QUERY:15,PLAN:16,Statement:17,AlterTable:18,AttachDatabase:19,Call:20,CreateDatabase:21,CreateIndex:22,CreateGraph:23,CreateTable:24,CreateView:25,CreateEdge:26,CreateVertex:27,Declare:28,Delete:29,DetachDatabase:30,DropDatabase:31,DropIndex:32,DropTable:33,DropView:34,If:35,Insert:36,Merge:37,Reindex:38,RenameTable:39,Select:40,ShowCreateTable:41,ShowColumns:42,ShowDatabases:43,ShowIndex:44,ShowTables:45,TruncateTable:46,WithSelect:47,CreateTrigger:48,DropTrigger:49,BeginTransaction:50,CommitTransaction:51,RollbackTransaction:52,EndTransaction:53,UseDatabase:54,Update:55,JavaScript:56,Source:57,Assert:58,While:59,Continue:60,Break:61,BeginEnd:62,Print:63,Require:64,SetVariable:65,ExpressionStatement:66,AddRule:67,Query:68,Echo:69,CreateFunction:70,CreateAggregate:71,WITH:72,WithTablesList:73,COMMA:74,WithTable:75,AS:76,LPAR:77,RPAR:78,SelectClause:79,Select_option0:80,IntoClause:81,FromClause:82,Select_option1:83,WhereClause:84,GroupClause:85,OrderClause:86,LimitClause:87,UnionClause:88,SEARCH:89,Select_repetition0:90,Select_option2:91,PivotClause:92,PIVOT:93,Expression:94,FOR:95,PivotClause_option0:96,PivotClause_option1:97,UNPIVOT:98,IN:99,ColumnsList:100,PivotClause_option2:101,PivotClause2:102,AsList:103,AsLiteral:104,AsPart:105,RemoveClause:106,REMOVE:107,RemoveClause_option0:108,RemoveColumnsList:109,RemoveColumn:110,Column:111,LIKE:112,StringValue:113,ArrowDot:114,ARROW:115,DOT:116,SearchSelector:117,ORDER:118,BY:119,OrderExpressionsList:120,SearchSelector_option0:121,DOTDOT:122,CARET:123,EQ:124,SearchSelector_repetition_plus0:125,SearchSelector_repetition_plus1:126,SearchSelector_option1:127,WHERE:128,OF:129,CLASS:130,NUMBER:131,STRING:132,SLASH:133,VERTEX:134,EDGE:135,EXCLAMATION:136,SHARP:137,MODULO:138,GT:139,LT:140,GTGT:141,LTLT:142,DOLLAR:143,Json:144,AT:145,SET:146,SetColumnsList:147,TO:148,VALUE:149,ROW:150,ExprList:151,COLON:152,PlusStar:153,NOT:154,SearchSelector_repetition2:155,IF:156,SearchSelector_repetition3:157,Aggregator:158,SearchSelector_repetition4:159,SearchSelector_group0:160,SearchSelector_repetition5:161,UNION:162,SearchSelectorList:163,ALL:164,SearchSelector_repetition6:165,ANY:166,SearchSelector_repetition7:167,INTERSECT:168,EXCEPT:169,AND:170,OR:171,PATH:172,RETURN:173,ResultColumns:174,REPEAT:175,SearchSelector_repetition8:176,SearchSelectorList_repetition0:177,SearchSelectorList_repetition1:178,PLUS:179,STAR:180,QUESTION:181,SearchFrom:182,FROM:183,SelectModifier:184,DISTINCT:185,TopClause:186,UNIQUE:187,SelectClause_option0:188,SELECT:189,COLUMN:190,MATRIX:191,TEXTSTRING:192,INDEX:193,RECORDSET:194,TOP:195,NumValue:196,TopClause_option0:197,INTO:198,Table:199,FuncValue:200,ParamValue:201,VarValue:202,FromTablesList:203,JoinTablesList:204,ApplyClause:205,CROSS:206,APPLY:207,OUTER:208,FromTable:209,FromTable_option0:210,FromTable_option1:211,INDEXED:212,INSERTED:213,FromString:214,JoinTable:215,JoinMode:216,JoinTableAs:217,OnClause:218,JoinTableAs_option0:219,JoinTableAs_option1:220,JoinModeMode:221,NATURAL:222,JOIN:223,INNER:224,LEFT:225,RIGHT:226,FULL:227,SEMI:228,ANTI:229,ON:230,USING:231,GROUP:232,GroupExpressionsList:233,HavingClause:234,GroupExpression:235,GROUPING:236,ROLLUP:237,CUBE:238,HAVING:239,CORRESPONDING:240,OrderExpression:241,DIRECTION:242,COLLATE:243,NOCASE:244,LIMIT:245,OffsetClause:246,OFFSET:247,LimitClause_option0:248,FETCH:249,LimitClause_option1:250,LimitClause_option2:251,LimitClause_option3:252,ResultColumn:253,Star:254,AggrValue:255,Op:256,LogicValue:257,NullValue:258,ExistsValue:259,CaseValue:260,CastClause:261,ArrayValue:262,NewClause:263,Expression_group0:264,CURRENT_TIMESTAMP:265,JAVASCRIPT:266,CREATE:267,FUNCTION:268,AGGREGATE:269,NEW:270,CAST:271,ColumnType:272,CONVERT:273,PrimitiveValue:274,OverClause:275,OVER:276,OverPartitionClause:277,OverOrderByClause:278,PARTITION:279,SUM:280,COUNT:281,MIN:282,MAX:283,AVG:284,FIRST:285,LAST:286,AGGR:287,ARRAY:288,FuncValue_option0:289,REPLACE:290,DATEADD:291,DATEDIFF:292,INTERVAL:293,TRUE:294,FALSE:295,NSTRING:296,NULL:297,EXISTS:298,ARRAYLBRA:299,RBRA:300,ParamValue_group0:301,BRAQUESTION:302,CASE:303,WhensList:304,ElseClause:305,END:306,When:307,WHEN:308,THEN:309,ELSE:310,REGEXP:311,TILDA:312,GLOB:313,ESCAPE:314,NOT_LIKE:315,BARBAR:316,MINUS:317,AMPERSAND:318,BAR:319,GE:320,LE:321,EQEQ:322,EQEQEQ:323,NE:324,NEEQEQ:325,NEEQEQEQ:326,CondOp:327,AllSome:328,ColFunc:329,BETWEEN:330,NOT_BETWEEN:331,IS:332,DOUBLECOLON:333,SOME:334,UPDATE:335,SetColumn:336,SetColumn_group0:337,DELETE:338,INSERT:339,Into:340,Values:341,ValuesListsList:342,DEFAULT:343,VALUES:344,ValuesList:345,Value:346,DateValue:347,TemporaryClause:348,TableClass:349,IfNotExists:350,CreateTableDefClause:351,CreateTableOptionsClause:352,TABLE:353,CreateTableOptions:354,CreateTableOption:355,IDENTITY:356,TEMP:357,ColumnDefsList:358,ConstraintsList:359,Constraint:360,ConstraintName:361,PrimaryKey:362,ForeignKey:363,UniqueKey:364,IndexKey:365,Check:366,CONSTRAINT:367,CHECK:368,PRIMARY:369,KEY:370,PrimaryKey_option0:371,ColsList:372,FOREIGN:373,REFERENCES:374,ForeignKey_option0:375,OnForeignKeyClause:376,ParColsList:377,OnDeleteClause:378,OnUpdateClause:379,NO:380,ACTION:381,UniqueKey_option0:382,UniqueKey_option1:383,ColumnDef:384,ColumnConstraintsClause:385,ColumnConstraints:386,SingularColumnType:387,NumberMax:388,ENUM:389,MAXNUM:390,ColumnConstraintsList:391,ColumnConstraint:392,ParLiteral:393,ColumnConstraint_option0:394,ColumnConstraint_option1:395,DROP:396,DropTable_group0:397,IfExists:398,TablesList:399,ALTER:400,RENAME:401,ADD:402,MODIFY:403,ATTACH:404,DATABASE:405,DETACH:406,AsClause:407,USE:408,SHOW:409,VIEW:410,CreateView_option0:411,CreateView_option1:412,SubqueryRestriction:413,READ:414,ONLY:415,OPTION:416,SOURCE:417,ASSERT:418,JsonObject:419,ATLBRA:420,JsonArray:421,JsonValue:422,JsonPrimitiveValue:423,LCUR:424,JsonPropertiesList:425,RCUR:426,JsonElementsList:427,JsonProperty:428,OnOff:429,SetPropsList:430,AtDollar:431,SetProp:432,OFF:433,COMMIT:434,TRANSACTION:435,ROLLBACK:436,BEGIN:437,ElseStatement:438,WHILE:439,CONTINUE:440,BREAK:441,PRINT:442,REQUIRE:443,StringValuesList:444,PluginsList:445,Plugin:446,ECHO:447,DECLARE:448,DeclaresList:449,DeclareItem:450,TRUNCATE:451,MERGE:452,MergeInto:453,MergeUsing:454,MergeOn:455,MergeMatchedList:456,OutputClause:457,MergeMatched:458,MergeNotMatched:459,MATCHED:460,MergeMatchedAction:461,MergeNotMatchedAction:462,TARGET:463,OUTPUT:464,CreateVertex_option0:465,CreateVertex_option1:466,CreateVertex_option2:467,CreateVertexSet:468,SharpValue:469,CONTENT:470,CreateEdge_option0:471,GRAPH:472,GraphList:473,GraphVertexEdge:474,GraphElement:475,GraphVertexEdge_option0:476,GraphVertexEdge_option1:477,GraphElementVar:478,GraphVertexEdge_option2:479,GraphVertexEdge_option3:480,GraphVertexEdge_option4:481,GraphVar:482,GraphAsClause:483,GraphAtClause:484,GraphElement2:485,GraphElement2_option0:486,GraphElement2_option1:487,GraphElement2_option2:488,GraphElement2_option3:489,GraphElement_option0:490,GraphElement_option1:491,GraphElement_option2:492,SharpLiteral:493,GraphElement_option3:494,GraphElement_option4:495,GraphElement_option5:496,ColonLiteral:497,DeleteVertex:498,DeleteVertex_option0:499,DeleteEdge:500,DeleteEdge_option0:501,DeleteEdge_option1:502,DeleteEdge_option2:503,Term:504,COLONDASH:505,TermsList:506,QUESTIONDASH:507,CALL:508,TRIGGER:509,BeforeAfter:510,InsertDeleteUpdate:511,CreateTrigger_option0:512,CreateTrigger_option1:513,BEFORE:514,AFTER:515,INSTEAD:516,REINDEX:517,A:518,ABSENT:519,ABSOLUTE:520,ACCORDING:521,ADA:522,ADMIN:523,ALWAYS:524,ASC:525,ASSERTION:526,ASSIGNMENT:527,ATTRIBUTE:528,ATTRIBUTES:529,BASE64:530,BERNOULLI:531,BLOCKED:532,BOM:533,BREADTH:534,C:535,CASCADE:536,CATALOG:537,CATALOG_NAME:538,CHAIN:539,CHARACTERISTICS:540,CHARACTERS:541,CHARACTER_SET_CATALOG:542,CHARACTER_SET_NAME:543,CHARACTER_SET_SCHEMA:544,CLASS_ORIGIN:545,COBOL:546,COLLATION:547,COLLATION_CATALOG:548,COLLATION_NAME:549,COLLATION_SCHEMA:550,COLUMNS:551,COLUMN_NAME:552,COMMAND_FUNCTION:553,COMMAND_FUNCTION_CODE:554,COMMITTED:555,CONDITION_NUMBER:556,CONNECTION:557,CONNECTION_NAME:558,CONSTRAINTS:559,CONSTRAINT_CATALOG:560,CONSTRAINT_NAME:561,CONSTRAINT_SCHEMA:562,CONSTRUCTOR:563,CONTROL:564,CURSOR_NAME:565,DATA:566,DATETIME_INTERVAL_CODE:567,DATETIME_INTERVAL_PRECISION:568,DB:569,DEFAULTS:570,DEFERRABLE:571,DEFERRED:572,DEFINED:573,DEFINER:574,DEGREE:575,DEPTH:576,DERIVED:577,DESC:578,DESCRIPTOR:579,DIAGNOSTICS:580,DISPATCH:581,DOCUMENT:582,DOMAIN:583,DYNAMIC_FUNCTION:584,DYNAMIC_FUNCTION_CODE:585,EMPTY:586,ENCODING:587,ENFORCED:588,EXCLUDE:589,EXCLUDING:590,EXPRESSION:591,FILE:592,FINAL:593,FLAG:594,FOLLOWING:595,FORTRAN:596,FOUND:597,FS:598,G:599,GENERAL:600,GENERATED:601,GO:602,GOTO:603,GRANTED:604,HEX:605,HIERARCHY:606,ID:607,IGNORE:608,IMMEDIATE:609,IMMEDIATELY:610,IMPLEMENTATION:611,INCLUDING:612,INCREMENT:613,INDENT:614,INITIALLY:615,INPUT:616,INSTANCE:617,INSTANTIABLE:618,INTEGRITY:619,INVOKER:620,ISOLATION:621,K:622,KEY_MEMBER:623,KEY_TYPE:624,LENGTH:625,LEVEL:626,LIBRARY:627,LINK:628,LOCATION:629,LOCATOR:630,M:631,MAP:632,MAPPING:633,MAXVALUE:634,MESSAGE_LENGTH:635,MESSAGE_OCTET_LENGTH:636,MESSAGE_TEXT:637,MINVALUE:638,MORE:639,MUMPS:640,NAME:641,NAMES:642,NAMESPACE:643,NESTING:644,NEXT:645,NFC:646,NFD:647,NFKC:648,NFKD:649,NIL:650,NORMALIZED:651,NULLABLE:652,NULLS:653,OBJECT:654,OCTETS:655,OPTIONS:656,ORDERING:657,ORDINALITY:658,OTHERS:659,OVERRIDING:660,P:661,PAD:662,PARAMETER_MODE:663,PARAMETER_NAME:664,PARAMETER_ORDINAL_POSITION:665,PARAMETER_SPECIFIC_CATALOG:666,PARAMETER_SPECIFIC_NAME:667,PARAMETER_SPECIFIC_SCHEMA:668,PARTIAL:669,PASCAL:670,PASSING:671,PASSTHROUGH:672,PERMISSION:673,PLACING:674,PLI:675,PRECEDING:676,PRESERVE:677,PRIOR:678,PRIVILEGES:679,PUBLIC:680,RECOVERY:681,RELATIVE:682,REPEATABLE:683,REQUIRING:684,RESPECT:685,RESTART:686,RESTORE:687,RESTRICT:688,RETURNED_CARDINALITY:689,RETURNED_LENGTH:690,RETURNED_OCTET_LENGTH:691,RETURNED_SQLSTATE:692,RETURNING:693,ROLE:694,ROUTINE:695,ROUTINE_CATALOG:696,ROUTINE_NAME:697,ROUTINE_SCHEMA:698,ROW_COUNT:699,SCALE:700,SCHEMA:701,SCHEMA_NAME:702,SCOPE_CATALOG:703,SCOPE_NAME:704,SCOPE_SCHEMA:705,SECTION:706,SECURITY:707,SELECTIVE:708,SELF:709,SEQUENCE:710,SERIALIZABLE:711,SERVER:712,SERVER_NAME:713,SESSION:714,SETS:715,SIMPLE:716,SIZE:717,SPACE:718,SPECIFIC_NAME:719,STANDALONE:720,STATE:721,STATEMENT:722,STRIP:723,STRUCTURE:724,STYLE:725,SUBCLASS_ORIGIN:726,T:727,TABLE_NAME:728,TEMPORARY:729,TIES:730,TOKEN:731,TOP_LEVEL_COUNT:732,TRANSACTIONS_COMMITTED:733,TRANSACTIONS_ROLLED_BACK:734,TRANSACTION_ACTIVE:735,TRANSFORM:736,TRANSFORMS:737,TRIGGER_CATALOG:738,TRIGGER_NAME:739,TRIGGER_SCHEMA:740,TYPE:741,UNBOUNDED:742,UNCOMMITTED:743,UNDER:744,UNLINK:745,UNNAMED:746,UNTYPED:747,URI:748,USAGE:749,USER_DEFINED_TYPE_CATALOG:750,USER_DEFINED_TYPE_CODE:751,USER_DEFINED_TYPE_NAME:752,USER_DEFINED_TYPE_SCHEMA:753,VALID:754,VERSION:755,WHITESPACE:756,WORK:757,WRAPPER:758,WRITE:759,XMLDECLARATION:760,XMLSCHEMA:761,YES:762,ZONE:763,SEMICOLON:764,PERCENT:765,ROWS:766,FuncValue_option0_group0:767,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",10:"EOF",14:"EXPLAIN",15:"QUERY",16:"PLAN",53:"EndTransaction",72:"WITH",74:"COMMA",76:"AS",77:"LPAR",78:"RPAR",89:"SEARCH",93:"PIVOT",95:"FOR",98:"UNPIVOT",99:"IN",107:"REMOVE",112:"LIKE",115:"ARROW",116:"DOT",118:"ORDER",119:"BY",122:"DOTDOT",123:"CARET",124:"EQ",128:"WHERE",129:"OF",130:"CLASS",131:"NUMBER",132:"STRING",133:"SLASH",134:"VERTEX",135:"EDGE",136:"EXCLAMATION",137:"SHARP",138:"MODULO",139:"GT",140:"LT",141:"GTGT",142:"LTLT",143:"DOLLAR",145:"AT",146:"SET",148:"TO",149:"VALUE",150:"ROW",152:"COLON",154:"NOT",156:"IF",162:"UNION",164:"ALL",166:"ANY",168:"INTERSECT",169:"EXCEPT",170:"AND",171:"OR",172:"PATH",173:"RETURN",175:"REPEAT",179:"PLUS",180:"STAR",181:"QUESTION",183:"FROM",185:"DISTINCT",187:"UNIQUE",189:"SELECT",190:"COLUMN",191:"MATRIX",192:"TEXTSTRING",193:"INDEX",194:"RECORDSET",195:"TOP",198:"INTO",206:"CROSS",207:"APPLY",208:"OUTER",212:"INDEXED",213:"INSERTED",222:"NATURAL",223:"JOIN",224:"INNER",225:"LEFT",226:"RIGHT",227:"FULL",228:"SEMI",229:"ANTI",230:"ON",231:"USING",232:"GROUP",236:"GROUPING",237:"ROLLUP",238:"CUBE",239:"HAVING",240:"CORRESPONDING",242:"DIRECTION",243:"COLLATE",244:"NOCASE",245:"LIMIT",247:"OFFSET",249:"FETCH",265:"CURRENT_TIMESTAMP",266:"JAVASCRIPT",267:"CREATE",268:"FUNCTION",269:"AGGREGATE",270:"NEW",271:"CAST",273:"CONVERT",276:"OVER",279:"PARTITION",280:"SUM",281:"COUNT",282:"MIN",283:"MAX",284:"AVG",285:"FIRST",286:"LAST",287:"AGGR",288:"ARRAY",290:"REPLACE",291:"DATEADD",292:"DATEDIFF",293:"INTERVAL",294:"TRUE",295:"FALSE",296:"NSTRING",297:"NULL",298:"EXISTS",299:"ARRAYLBRA",300:"RBRA",302:"BRAQUESTION",303:"CASE",306:"END",308:"WHEN",309:"THEN",310:"ELSE",311:"REGEXP",312:"TILDA",313:"GLOB",314:"ESCAPE",315:"NOT_LIKE",316:"BARBAR",317:"MINUS",318:"AMPERSAND",319:"BAR",320:"GE",321:"LE",322:"EQEQ",323:"EQEQEQ",324:"NE",325:"NEEQEQ",326:"NEEQEQEQ",330:"BETWEEN",331:"NOT_BETWEEN",332:"IS",333:"DOUBLECOLON",334:"SOME",335:"UPDATE",338:"DELETE",339:"INSERT",343:"DEFAULT",344:"VALUES",347:"DateValue",353:"TABLE",356:"IDENTITY",357:"TEMP",367:"CONSTRAINT",368:"CHECK",369:"PRIMARY",370:"KEY",373:"FOREIGN",374:"REFERENCES",380:"NO",381:"ACTION",386:"ColumnConstraints",389:"ENUM",390:"MAXNUM",396:"DROP",400:"ALTER",401:"RENAME",402:"ADD",403:"MODIFY",404:"ATTACH",405:"DATABASE",406:"DETACH",408:"USE",409:"SHOW",410:"VIEW",414:"READ",415:"ONLY",416:"OPTION",417:"SOURCE",418:"ASSERT",420:"ATLBRA",424:"LCUR",426:"RCUR",433:"OFF",434:"COMMIT",435:"TRANSACTION",436:"ROLLBACK",437:"BEGIN",439:"WHILE",440:"CONTINUE",441:"BREAK",442:"PRINT",443:"REQUIRE",447:"ECHO",448:"DECLARE",451:"TRUNCATE",452:"MERGE",460:"MATCHED",463:"TARGET",464:"OUTPUT",470:"CONTENT",472:"GRAPH",505:"COLONDASH",507:"QUESTIONDASH",508:"CALL",509:"TRIGGER",514:"BEFORE",515:"AFTER",516:"INSTEAD",517:"REINDEX",518:"A",519:"ABSENT",520:"ABSOLUTE",521:"ACCORDING",522:"ADA",523:"ADMIN",524:"ALWAYS",525:"ASC",526:"ASSERTION",527:"ASSIGNMENT",528:"ATTRIBUTE",529:"ATTRIBUTES",530:"BASE64",531:"BERNOULLI",532:"BLOCKED",533:"BOM",534:"BREADTH",535:"C",536:"CASCADE",537:"CATALOG",538:"CATALOG_NAME",539:"CHAIN",540:"CHARACTERISTICS",541:"CHARACTERS",542:"CHARACTER_SET_CATALOG",543:"CHARACTER_SET_NAME",544:"CHARACTER_SET_SCHEMA",545:"CLASS_ORIGIN",546:"COBOL",547:"COLLATION",548:"COLLATION_CATALOG",549:"COLLATION_NAME",550:"COLLATION_SCHEMA",551:"COLUMNS",552:"COLUMN_NAME",
553:"COMMAND_FUNCTION",554:"COMMAND_FUNCTION_CODE",555:"COMMITTED",556:"CONDITION_NUMBER",557:"CONNECTION",558:"CONNECTION_NAME",559:"CONSTRAINTS",560:"CONSTRAINT_CATALOG",561:"CONSTRAINT_NAME",562:"CONSTRAINT_SCHEMA",563:"CONSTRUCTOR",564:"CONTROL",565:"CURSOR_NAME",566:"DATA",567:"DATETIME_INTERVAL_CODE",568:"DATETIME_INTERVAL_PRECISION",569:"DB",570:"DEFAULTS",571:"DEFERRABLE",572:"DEFERRED",573:"DEFINED",574:"DEFINER",575:"DEGREE",576:"DEPTH",577:"DERIVED",578:"DESC",579:"DESCRIPTOR",580:"DIAGNOSTICS",581:"DISPATCH",582:"DOCUMENT",583:"DOMAIN",584:"DYNAMIC_FUNCTION",585:"DYNAMIC_FUNCTION_CODE",586:"EMPTY",587:"ENCODING",588:"ENFORCED",589:"EXCLUDE",590:"EXCLUDING",591:"EXPRESSION",592:"FILE",593:"FINAL",594:"FLAG",595:"FOLLOWING",596:"FORTRAN",597:"FOUND",598:"FS",599:"G",600:"GENERAL",601:"GENERATED",602:"GO",603:"GOTO",604:"GRANTED",605:"HEX",606:"HIERARCHY",607:"ID",608:"IGNORE",609:"IMMEDIATE",610:"IMMEDIATELY",611:"IMPLEMENTATION",612:"INCLUDING",613:"INCREMENT",614:"INDENT",615:"INITIALLY",616:"INPUT",617:"INSTANCE",618:"INSTANTIABLE",619:"INTEGRITY",620:"INVOKER",621:"ISOLATION",622:"K",623:"KEY_MEMBER",624:"KEY_TYPE",625:"LENGTH",626:"LEVEL",627:"LIBRARY",628:"LINK",629:"LOCATION",630:"LOCATOR",631:"M",632:"MAP",633:"MAPPING",634:"MAXVALUE",635:"MESSAGE_LENGTH",636:"MESSAGE_OCTET_LENGTH",637:"MESSAGE_TEXT",638:"MINVALUE",639:"MORE",640:"MUMPS",641:"NAME",642:"NAMES",643:"NAMESPACE",644:"NESTING",645:"NEXT",646:"NFC",647:"NFD",648:"NFKC",649:"NFKD",650:"NIL",651:"NORMALIZED",652:"NULLABLE",653:"NULLS",654:"OBJECT",655:"OCTETS",656:"OPTIONS",657:"ORDERING",658:"ORDINALITY",659:"OTHERS",660:"OVERRIDING",661:"P",662:"PAD",663:"PARAMETER_MODE",664:"PARAMETER_NAME",665:"PARAMETER_ORDINAL_POSITION",666:"PARAMETER_SPECIFIC_CATALOG",667:"PARAMETER_SPECIFIC_NAME",668:"PARAMETER_SPECIFIC_SCHEMA",669:"PARTIAL",670:"PASCAL",671:"PASSING",672:"PASSTHROUGH",673:"PERMISSION",674:"PLACING",675:"PLI",676:"PRECEDING",677:"PRESERVE",678:"PRIOR",679:"PRIVILEGES",680:"PUBLIC",681:"RECOVERY",682:"RELATIVE",683:"REPEATABLE",684:"REQUIRING",685:"RESPECT",686:"RESTART",687:"RESTORE",688:"RESTRICT",689:"RETURNED_CARDINALITY",690:"RETURNED_LENGTH",691:"RETURNED_OCTET_LENGTH",692:"RETURNED_SQLSTATE",693:"RETURNING",694:"ROLE",695:"ROUTINE",696:"ROUTINE_CATALOG",697:"ROUTINE_NAME",698:"ROUTINE_SCHEMA",699:"ROW_COUNT",700:"SCALE",701:"SCHEMA",702:"SCHEMA_NAME",703:"SCOPE_CATALOG",704:"SCOPE_NAME",705:"SCOPE_SCHEMA",706:"SECTION",707:"SECURITY",708:"SELECTIVE",709:"SELF",710:"SEQUENCE",711:"SERIALIZABLE",712:"SERVER",713:"SERVER_NAME",714:"SESSION",715:"SETS",716:"SIMPLE",717:"SIZE",718:"SPACE",719:"SPECIFIC_NAME",720:"STANDALONE",721:"STATE",722:"STATEMENT",723:"STRIP",724:"STRUCTURE",725:"STYLE",726:"SUBCLASS_ORIGIN",727:"T",728:"TABLE_NAME",729:"TEMPORARY",730:"TIES",731:"TOKEN",732:"TOP_LEVEL_COUNT",733:"TRANSACTIONS_COMMITTED",734:"TRANSACTIONS_ROLLED_BACK",735:"TRANSACTION_ACTIVE",736:"TRANSFORM",737:"TRANSFORMS",738:"TRIGGER_CATALOG",739:"TRIGGER_NAME",740:"TRIGGER_SCHEMA",741:"TYPE",742:"UNBOUNDED",743:"UNCOMMITTED",744:"UNDER",745:"UNLINK",746:"UNNAMED",747:"UNTYPED",748:"URI",749:"USAGE",750:"USER_DEFINED_TYPE_CATALOG",751:"USER_DEFINED_TYPE_CODE",752:"USER_DEFINED_TYPE_NAME",753:"USER_DEFINED_TYPE_SCHEMA",754:"VALID",755:"VERSION",756:"WHITESPACE",757:"WORK",758:"WRAPPER",759:"WRITE",760:"XMLDECLARATION",761:"XMLSCHEMA",762:"YES",763:"ZONE",764:"SEMICOLON",765:"PERCENT",766:"ROWS"},productions_:[0,[3,1],[3,1],[3,2],[7,1],[7,2],[8,2],[9,3],[9,1],[9,1],[13,2],[13,4],[12,1],[17,0],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[47,3],[73,3],[73,1],[75,5],[40,10],[40,4],[92,8],[92,11],[102,4],[104,2],[104,1],[103,3],[103,1],[105,1],[105,3],[106,3],[109,3],[109,1],[110,1],[110,2],[114,1],[114,1],[117,1],[117,5],[117,5],[117,1],[117,2],[117,1],[117,2],[117,2],[117,3],[117,4],[117,4],[117,4],[117,4],[117,4],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,2],[117,2],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,3],[117,4],[117,3],[117,1],[117,4],[117,2],[117,2],[117,4],[117,4],[117,4],[117,4],[117,4],[117,5],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,6],[163,3],[163,1],[153,1],[153,1],[153,1],[182,2],[79,4],[79,4],[79,4],[79,3],[184,1],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[186,3],[186,4],[186,0],[81,0],[81,2],[81,2],[81,2],[81,2],[81,2],[82,2],[82,3],[82,5],[82,0],[205,6],[205,7],[205,6],[205,7],[203,1],[203,3],[209,4],[209,5],[209,3],[209,3],[209,2],[209,3],[209,1],[209,3],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,2],[209,3],[214,1],[199,3],[199,1],[204,2],[204,2],[204,1],[204,1],[215,3],[217,1],[217,2],[217,3],[217,3],[217,2],[217,3],[217,4],[217,5],[217,1],[217,2],[217,3],[217,1],[217,2],[217,3],[216,1],[216,2],[221,1],[221,2],[221,2],[221,3],[221,2],[221,3],[221,2],[221,3],[221,2],[221,2],[221,2],[218,2],[218,2],[218,0],[84,0],[84,2],[85,0],[85,4],[233,1],[233,3],[235,5],[235,4],[235,4],[235,1],[234,0],[234,2],[88,0],[88,2],[88,3],[88,2],[88,2],[88,3],[88,4],[88,3],[88,3],[86,0],[86,3],[120,1],[120,3],[241,1],[241,2],[241,3],[241,4],[87,0],[87,3],[87,8],[246,0],[246,2],[174,3],[174,1],[253,3],[253,2],[253,3],[253,2],[253,3],[253,2],[253,1],[254,5],[254,3],[254,1],[111,5],[111,3],[111,3],[111,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,3],[94,3],[94,3],[94,1],[94,1],[56,1],[70,5],[71,5],[263,2],[263,2],[261,6],[261,8],[261,6],[261,8],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[255,5],[255,6],[255,6],[275,0],[275,4],[275,4],[275,5],[277,3],[278,3],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[200,5],[200,3],[200,4],[200,4],[200,8],[200,8],[200,8],[200,8],[200,3],[151,1],[151,3],[196,1],[257,1],[257,1],[113,1],[113,1],[258,1],[202,2],[259,4],[262,3],[201,2],[201,2],[201,1],[201,1],[260,5],[260,4],[304,2],[304,1],[307,4],[305,2],[305,0],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,6],[256,6],[256,3],[256,3],[256,2],[256,2],[256,2],[256,2],[256,2],[256,3],[256,5],[256,6],[256,5],[256,6],[256,4],[256,5],[256,3],[256,4],[256,3],[256,4],[256,3],[256,3],[256,3],[256,3],[256,3],[329,1],[329,1],[329,4],[327,1],[327,1],[327,1],[327,1],[327,1],[327,1],[328,1],[328,1],[328,1],[55,6],[55,4],[147,1],[147,3],[336,3],[336,4],[29,5],[29,3],[36,5],[36,4],[36,7],[36,6],[36,5],[36,4],[36,5],[36,8],[36,7],[36,4],[36,6],[36,7],[341,1],[341,1],[340,0],[340,1],[342,3],[342,1],[342,1],[342,5],[342,3],[342,3],[345,1],[345,3],[346,1],[346,1],[346,1],[346,1],[346,1],[346,1],[100,1],[100,3],[24,9],[24,5],[349,1],[349,1],[352,0],[352,1],[354,2],[354,1],[355,1],[355,3],[355,3],[355,3],[348,0],[348,1],[350,0],[350,3],[351,3],[351,1],[351,2],[359,1],[359,3],[360,2],[360,2],[360,2],[360,2],[360,2],[361,0],[361,2],[366,4],[362,6],[363,9],[377,3],[376,0],[376,2],[378,4],[379,4],[364,6],[365,5],[365,5],[372,1],[372,1],[372,3],[372,3],[358,1],[358,3],[384,3],[384,2],[384,1],[387,6],[387,4],[387,1],[387,4],[272,2],[272,1],[388,1],[388,1],[385,0],[385,1],[391,2],[391,1],[393,3],[392,2],[392,5],[392,3],[392,6],[392,1],[392,2],[392,4],[392,2],[392,1],[392,2],[392,1],[392,1],[392,3],[392,5],[33,4],[399,3],[399,1],[398,0],[398,2],[18,6],[18,6],[18,6],[18,8],[18,6],[39,5],[19,4],[19,7],[19,6],[19,9],[30,3],[21,4],[21,6],[21,9],[21,6],[407,0],[407,2],[54,3],[54,2],[31,4],[31,5],[31,5],[22,8],[22,9],[32,3],[43,2],[43,4],[43,3],[43,5],[45,2],[45,4],[45,4],[45,6],[42,4],[42,6],[44,4],[44,6],[41,4],[41,6],[25,11],[25,8],[413,3],[413,3],[413,5],[34,4],[66,2],[57,2],[58,2],[58,2],[58,4],[144,4],[144,2],[144,2],[144,2],[144,2],[144,1],[144,2],[144,2],[422,1],[422,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,3],[419,3],[419,4],[419,2],[421,2],[421,3],[421,1],[425,3],[425,1],[428,3],[428,3],[428,3],[427,3],[427,1],[65,4],[65,3],[65,4],[65,5],[65,5],[65,6],[431,1],[431,1],[430,3],[430,2],[432,1],[432,1],[432,3],[429,1],[429,1],[51,2],[52,2],[50,2],[35,4],[35,3],[438,2],[59,3],[60,1],[61,1],[62,3],[63,2],[63,2],[64,2],[64,2],[446,1],[446,1],[69,2],[444,3],[444,1],[445,3],[445,1],[28,2],[449,1],[449,3],[450,3],[450,4],[450,5],[450,6],[46,3],[37,6],[453,1],[453,2],[454,2],[455,2],[456,2],[456,2],[456,1],[456,1],[458,4],[458,6],[461,1],[461,3],[459,5],[459,7],[459,7],[459,9],[459,7],[459,9],[462,3],[462,6],[462,3],[462,6],[457,0],[457,2],[457,5],[457,4],[457,7],[27,6],[469,2],[468,0],[468,2],[468,2],[468,1],[26,8],[23,3],[23,4],[473,3],[473,1],[474,3],[474,7],[474,6],[474,3],[474,4],[478,1],[478,1],[482,2],[483,3],[484,2],[485,4],[475,4],[475,3],[475,2],[475,1],[497,2],[493,2],[493,2],[498,4],[500,6],[67,3],[67,2],[506,3],[506,1],[504,1],[504,4],[68,2],[20,2],[48,9],[48,8],[48,9],[510,0],[510,1],[510,1],[510,1],[510,2],[511,1],[511,1],[511,1],[49,3],[38,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[11,1],[11,1],[80,0],[80,1],[83,0],[83,1],[90,0],[90,2],[91,0],[91,1],[96,0],[96,1],[97,0],[97,1],[101,0],[101,1],[108,0],[108,1],[121,0],[121,1],[125,1],[125,2],[126,1],[126,2],[127,0],[127,1],[155,0],[155,2],[157,0],[157,2],[159,0],[159,2],[160,1],[160,1],[161,0],[161,2],[165,0],[165,2],[167,0],[167,2],[176,0],[176,2],[177,0],[177,2],[178,0],[178,2],[188,0],[188,1],[197,0],[197,1],[210,0],[210,1],[211,0],[211,1],[219,0],[219,1],[220,0],[220,1],[248,0],[248,1],[250,0],[250,1],[251,0],[251,1],[252,0],[252,1],[264,1],[264,1],[767,1],[767,1],[289,0],[289,1],[301,1],[301,1],[337,1],[337,1],[371,0],[371,1],[375,0],[375,1],[382,0],[382,1],[383,0],[383,1],[394,0],[394,1],[395,0],[395,1],[397,1],[397,1],[411,0],[411,1],[412,0],[412,1],[465,0],[465,1],[466,0],[466,1],[467,0],[467,1],[471,0],[471,1],[476,0],[476,1],[477,0],[477,1],[479,0],[479,1],[480,0],[480,1],[481,0],[481,1],[486,0],[486,1],[487,0],[487,1],[488,0],[488,1],[489,0],[489,1],[490,0],[490,1],[491,0],[491,1],[492,0],[492,1],[494,0],[494,1],[495,0],[495,1],[496,0],[496,1],[499,0],[499,2],[501,0],[501,2],[502,0],[502,2],[503,0],[503,2],[512,0],[512,1],[513,0],[513,1]],performAction:function(e,t,r,n,a,s,i){var o=s.length-1;switch(a){case 1:T.options.casesensitive?this.$=s[o]:this.$=s[o].toLowerCase();break;case 2:this.$=O(s[o].substr(1,s[o].length-2));break;case 3:this.$=s[o].toLowerCase();break;case 4:this.$=s[o];break;case 5:this.$=s[o]?s[o-1]+" "+s[o]:s[o-1];break;case 6:return new n.Statements({statements:s[o-1]});case 7:this.$=s[o-2],s[o]&&s[o-2].push(s[o]);break;case 8:case 9:case 70:case 80:case 85:case 143:case 177:case 205:case 206:case 242:case 261:case 273:case 354:case 372:case 451:case 474:case 475:case 479:case 487:case 528:case 529:case 566:case 649:case 659:case 683:case 685:case 687:case 701:case 702:case 732:case 756:this.$=[s[o]];break;case 10:case 11:this.$=s[o],s[o].explain=!0;break;case 12:this.$=s[o],n.exists&&(this.$.exists=n.exists),delete n.exists,n.queries&&(this.$.queries=n.queries),delete n.queries;break;case 13:case 162:case 172:case 237:case 238:case 240:case 248:case 250:case 259:case 267:case 270:case 375:case 491:case 501:case 503:case 515:case 521:case 522:case 567:this.$=void 0;break;case 68:this.$=new n.WithSelect({withs:s[o-1],select:s[o]});break;case 69:case 565:s[o-2].push(s[o]),this.$=s[o-2];break;case 71:this.$={name:s[o-4],select:s[o-1]};break;case 72:n.extend(this.$,s[o-9]),n.extend(this.$,s[o-8]),n.extend(this.$,s[o-7]),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-5]),n.extend(this.$,s[o-4]),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]),this.$=s[o-9];break;case 73:this.$=new n.Search({selectors:s[o-2],from:s[o]}),n.extend(this.$,s[o-1]);break;case 74:this.$={pivot:{expr:s[o-5],columnid:s[o-3],inlist:s[o-2],as:s[o]}};break;case 75:this.$={unpivot:{tocolumnid:s[o-8],forcolumnid:s[o-6],inlist:s[o-3],as:s[o]}};break;case 76:case 520:case 549:case 585:case 619:case 636:case 637:case 640:case 662:this.$=s[o-1];break;case 77:case 78:case 86:case 147:case 185:case 247:case 280:case 288:case 289:case 290:case 291:case 292:case 293:case 294:case 295:case 296:case 297:case 298:case 299:case 300:case 301:case 304:case 305:case 320:case 321:case 322:case 323:case 324:case 325:case 374:case 440:case 441:case 442:case 443:case 444:case 445:case 516:case 542:case 546:case 548:case 623:case 624:case 625:case 626:case 627:case 628:case 632:case 634:case 635:case 644:case 660:case 661:case 723:case 738:case 739:case 741:case 742:case 748:case 749:this.$=s[o];break;case 79:case 84:case 731:case 755:this.$=s[o-2],this.$.push(s[o]);break;case 81:this.$={expr:s[o]};break;case 82:this.$={expr:s[o-2],as:s[o]};break;case 83:this.$={removecolumns:s[o]};break;case 87:this.$={like:s[o]};break;case 90:case 104:this.$={srchid:"PROP",args:[s[o]]};break;case 91:this.$={srchid:"ORDERBY",args:s[o-1]};break;case 92:var u=s[o-1];u||(u="ASC"),this.$={srchid:"ORDERBY",args:[{expression:new n.Column({columnid:"_"}),direction:u}]};break;case 93:this.$={srchid:"PARENT"};break;case 94:this.$={srchid:"APROP",args:[s[o]]};break;case 95:this.$={selid:"ROOT"};break;case 96:this.$={srchid:"EQ",args:[s[o]]};break;case 97:this.$={srchid:"LIKE",args:[s[o]]};break;case 98:case 99:this.$={selid:"WITH",args:s[o-1]};break;case 100:this.$={srchid:s[o-3].toUpperCase(),args:s[o-1]};break;case 101:this.$={srchid:"WHERE",args:[s[o-1]]};break;case 102:this.$={selid:"OF",args:[s[o-1]]};break;case 103:this.$={srchid:"CLASS",args:[s[o-1]]};break;case 105:this.$={srchid:"NAME",args:[s[o].substr(1,s[o].length-2)]};break;case 106:this.$={srchid:"CHILD"};break;case 107:this.$={srchid:"VERTEX"};break;case 108:this.$={srchid:"EDGE"};break;case 109:this.$={srchid:"REF"};break;case 110:this.$={srchid:"SHARP",args:[s[o]]};break;case 111:this.$={srchid:"ATTR",args:void 0===s[o]?void 0:[s[o]]};break;case 112:this.$={srchid:"ATTR"};break;case 113:this.$={srchid:"OUT"};break;case 114:this.$={srchid:"IN"};break;case 115:this.$={srchid:"OUTOUT"};break;case 116:this.$={srchid:"ININ"};break;case 117:this.$={srchid:"CONTENT"};break;case 118:this.$={srchid:"EX",args:[new n.Json({value:s[o]})]};break;case 119:this.$={srchid:"AT",args:[s[o]]};break;case 120:this.$={srchid:"AS",args:[s[o]]};break;case 121:this.$={srchid:"SET",args:s[o-1]};break;case 122:this.$={selid:"TO",args:[s[o]]};break;case 123:this.$={srchid:"VALUE"};break;case 124:this.$={srchid:"ROW",args:s[o-1]};break;case 125:this.$={srchid:"CLASS",args:[s[o]]};break;case 126:this.$={selid:s[o],args:[s[o-1]]};break;case 127:this.$={selid:"NOT",args:s[o-1]};break;case 128:this.$={selid:"IF",args:s[o-1]};break;case 129:this.$={selid:s[o-3],args:s[o-1]};break;case 130:this.$={selid:"DISTINCT",args:s[o-1]};break;case 131:this.$={selid:"UNION",args:s[o-1]};break;case 132:this.$={selid:"UNIONALL",args:s[o-1]};break;case 133:this.$={selid:"ALL",args:[s[o-1]]};break;case 134:this.$={selid:"ANY",args:[s[o-1]]};break;case 135:this.$={selid:"INTERSECT",args:s[o-1]};break;case 136:this.$={selid:"EXCEPT",args:s[o-1]};break;case 137:this.$={selid:"AND",args:s[o-1]};break;case 138:this.$={selid:"OR",args:s[o-1]};break;case 139:this.$={selid:"PATH",args:[s[o-1]]};break;case 140:this.$={srchid:"RETURN",args:s[o-1]};break;case 141:this.$={selid:"REPEAT",sels:s[o-3],args:s[o-1]};break;case 142:this.$=s[o-2],this.$.push(s[o]);break;case 144:this.$="PLUS";break;case 145:this.$="STAR";break;case 146:this.$="QUESTION";break;case 148:case 149:this.$=new n.Select({columns:s[o],distinct:!0}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-1]);break;case 150:this.$=new n.Select({columns:s[o],all:!0}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-1]);break;case 151:s[o]?(this.$=new n.Select({columns:s[o]}),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1])):this.$=new n.Select({columns:[new n.Column({columnid:"_"})],modifier:"COLUMN"});break;case 152:"SELECT"==s[o]?this.$=void 0:this.$={modifier:s[o]};break;case 153:this.$={modifier:"VALUE"};break;case 154:this.$={modifier:"ROW"};break;case 155:this.$={modifier:"COLUMN"};break;case 156:this.$={modifier:"MATRIX"};break;case 157:this.$={modifier:"TEXTSTRING"};break;case 158:this.$={modifier:"INDEX"};break;case 159:this.$={modifier:"RECORDSET"};break;case 160:this.$={top:s[o-1],percent:void 0!==s[o]||void 0};break;case 161:this.$={top:s[o-1]};break;case 163:case 330:case 523:case 524:case 724:this.$=void 0;break;case 164:case 165:case 166:case 167:this.$={into:s[o]};break;case 168:var c=s[o];c=c.substr(1,c.length-2);var l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();"#"==c[0]?this.$={into:new n.FuncValue({funcid:"HTML",args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}:"XLS"==l||"CSV"==l||"TAB"==l?this.$={into:new n.FuncValue({funcid:l,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}:"XLSX"!=h&&"JSON"!=h||(this.$={into:new n.FuncValue({funcid:h,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})});break;case 169:this.$={from:s[o]};break;case 170:this.$={from:s[o-1],joins:s[o]};break;case 171:this.$={from:s[o-2],joins:s[o-1]};break;case 173:this.$=new n.Apply({select:s[o-2],applymode:"CROSS",as:s[o]});break;case 174:this.$=new n.Apply({select:s[o-3],applymode:"CROSS",as:s[o]});break;case 175:this.$=new n.Apply({select:s[o-2],applymode:"OUTER",as:s[o]});break;case 176:this.$=new n.Apply({select:s[o-3],applymode:"OUTER",as:s[o]});break;case 178:case 243:case 452:case 530:case 531:this.$=s[o-2],s[o-2].push(s[o]);break;case 179:this.$=s[o-2],this.$.as=s[o];break;case 180:this.$=s[o-3],this.$.as=s[o];break;case 181:this.$=s[o-1],this.$.as="default";break;case 182:this.$=new n.Json({value:s[o-2]}),s[o-2].as=s[o];break;case 183:this.$=s[o-1],s[o-1].as=s[o];break;case 184:this.$=s[o-2],s[o-2].as=s[o];break;case 186:case 638:case 641:this.$=s[o-2];break;case 187:case 191:case 195:case 198:this.$=s[o-1],s[o-1].as=s[o];break;case 188:case 192:case 196:case 199:this.$=s[o-2],s[o-2].as=s[o];break;case 189:case 190:case 194:case 197:this.$=s[o],s[o].as="default";break;case 193:this.$={inserted:!0};break;case 200:var c=s[o];c=c.substr(1,c.length-2);var d,l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();if("#"==c[0])d=new n.FuncValue({funcid:"HTML",args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]});else if("XLS"==l||"CSV"==l||"TAB"==l)d=new n.FuncValue({funcid:l,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]});else{if("XLSX"!=h&&"JSON"!=h)throw new Error("Unknown string in FROM clause");d=new n.FuncValue({funcid:h,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}this.$=d;break;case 201:"INFORMATION_SCHEMA"==s[o-2]?this.$=new n.FuncValue({funcid:s[o-2],args:[new n.StringValue({value:s[o]})]}):this.$=new n.Table({databaseid:s[o-2],tableid:s[o]});break;case 202:this.$=new n.Table({tableid:s[o]});break;case 203:case 204:this.$=s[o-1],s[o-1].push(s[o]);break;case 207:this.$=new n.Join(s[o-2]),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]);break;case 208:this.$={table:s[o]};break;case 209:this.$={table:s[o-1],as:s[o]};break;case 210:this.$={table:s[o-2],as:s[o]};break;case 211:this.$={json:new n.Json({value:s[o-2],as:s[o]})};break;case 212:this.$={param:s[o-1],as:s[o]};break;case 213:this.$={param:s[o-2],as:s[o]};break;case 214:this.$={select:s[o-2],as:s[o]};break;case 215:this.$={select:s[o-3],as:s[o]};break;case 216:this.$={func:s[o],as:"default"};break;case 217:this.$={func:s[o-1],as:s[o]};break;case 218:this.$={func:s[o-2],as:s[o]};break;case 219:this.$={variable:s[o],as:"default"};break;case 220:this.$={variable:s[o-1],as:s[o]};break;case 221:this.$={variable:s[o-2],as:s[o]};break;case 222:this.$={joinmode:s[o]};break;case 223:this.$={joinmode:s[o-1],natural:!0};break;case 224:case 225:this.$="INNER";break;case 226:case 227:this.$="LEFT";break;case 228:case 229:this.$="RIGHT";break;case 230:case 231:this.$="OUTER";break;case 232:this.$="SEMI";break;case 233:this.$="ANTI";break;case 234:this.$="CROSS";break;case 235:this.$={on:s[o]};break;case 236:case 697:this.$={using:s[o]};break;case 239:this.$={where:new n.Expression({expression:s[o]})};break;case 241:this.$={group:s[o-1]},n.extend(this.$,s[o]);break;case 244:this.$=new n.GroupExpression({type:"GROUPING SETS",group:s[o-1]});break;case 245:this.$=new n.GroupExpression({type:"ROLLUP",group:s[o-1]});break;case 246:this.$=new n.GroupExpression({type:"CUBE",group:s[o-1]});break;case 249:this.$={having:s[o]};break;case 251:this.$={union:s[o]};break;case 252:this.$={unionall:s[o]};break;case 253:this.$={except:s[o]};break;case 254:this.$={intersect:s[o]};break;case 255:this.$={union:s[o],corresponding:!0};break;case 256:this.$={unionall:s[o],corresponding:!0};break;case 257:this.$={except:s[o],corresponding:!0};break;case 258:this.$={intersect:s[o],corresponding:!0};break;case 260:this.$={order:s[o]};break;case 262:this.$=s[o-2],s[o-2].push(s[o]);break;case 263:this.$=new n.Expression({expression:s[o],direction:"ASC"});break;case 264:this.$=new n.Expression({expression:s[o-1],direction:s[o].toUpperCase()});break;case 265:this.$=new n.Expression({expression:s[o-2],direction:"ASC",nocase:!0});break;case 266:this.$=new n.Expression({expression:s[o-3],direction:s[o].toUpperCase(),nocase:!0});break;case 268:this.$={limit:s[o-1]},n.extend(this.$,s[o]);break;case 269:this.$={limit:s[o-2],offset:s[o-6]};break;case 271:this.$={offset:s[o]};break;case 272:case 509:case 533:case 648:case 658:case 682:case 684:case 688:s[o-2].push(s[o]),this.$=s[o-2];break;case 274:case 276:case 278:s[o-2].as=s[o],this.$=s[o-2];break;case 275:case 277:case 279:s[o-1].as=s[o],this.$=s[o-1];break;case 281:this.$=new n.Column({columid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 282:this.$=new n.Column({columnid:s[o],tableid:s[o-2]});break;case 283:this.$=new n.Column({columnid:s[o]});break;case 284:this.$=new n.Column({columnid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 285:case 286:this.$=new n.Column({columnid:s[o],tableid:s[o-2]});break;case 287:this.$=new n.Column({columnid:s[o]});break;case 302:this.$=new n.DomainValueValue;break;case 303:this.$=new n.Json({value:s[o]});break;case 306:case 307:case 308:n.queries||(n.queries=[]),n.queries.push(s[o-1]),s[o-1].queriesidx=n.queries.length,this.$=s[o-1];break;case 309:this.$=s[o];break;case 310:this.$=new n.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 311:this.$=new n.JavaScript({value:s[o].substr(2,s[o].length-4)});break;case 312:this.$=new n.JavaScript({value:'alasql.fn["'+s[o-2]+'"] = '+s[o].substr(2,s[o].length-4)});break;case 313:this.$=new n.JavaScript({value:'alasql.aggr["'+s[o-2]+'"] = '+s[o].substr(2,s[o].length-4)});break;case 314:this.$=new n.FuncValue({funcid:s[o],newid:!0});break;case 315:this.$=s[o],n.extend(this.$,{newid:!0});break;case 316:this.$=new n.Convert({expression:s[o-3]}),n.extend(this.$,s[o-1]);break;case 317:this.$=new n.Convert({expression:s[o-5],style:s[o-1]}),n.extend(this.$,s[o-3]);break;case 318:this.$=new n.Convert({expression:s[o-1]}),n.extend(this.$,s[o-3]);break;case 319:this.$=new n.Convert({expression:s[o-3],style:s[o-1]}),n.extend(this.$,s[o-5]);break;case 326:this.$=new n.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 327:s[o-2].length>1&&("MAX"==s[o-4].toUpperCase()||"MIN"==s[o-4].toUpperCase())?this.$=new n.FuncValue({funcid:s[o-4],args:s[o-2]}):this.$=new n.AggrValue({aggregatorid:s[o-4].toUpperCase(),expression:s[o-2].pop(),over:s[o]});break;case 328:this.$=new n.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],distinct:!0,over:s[o]});break;case 329:this.$=new n.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],over:s[o]});break;case 331:case 332:this.$=new n.Over,n.extend(this.$,s[o-1]);break;case 333:this.$=new n.Over,n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]);break;case 334:this.$={partition:s[o]};break;case 335:this.$={order:s[o]};break;case 336:this.$="SUM";break;case 337:this.$="COUNT";break;case 338:this.$="MIN";break;case 339:case 544:this.$="MAX";break;case 340:this.$="AVG";break;case 341:this.$="FIRST";break;case 342:this.$="LAST";break;case 343:this.$="AGGR";break;case 344:this.$="ARRAY";break;case 345:var f=s[o-4],p=s[o-1];p.length>1&&("MIN"==f.toUpperCase()||"MAX"==f.toUpperCase())?this.$=new n.FuncValue({funcid:f,args:p}):T.aggr[s[o-4]]?this.$=new n.AggrValue({aggregatorid:"REDUCE",funcid:f,expression:p.pop(),distinct:"DISTINCT"==s[o-2]}):this.$=new n.FuncValue({funcid:f,args:p});break;case 346:this.$=new n.FuncValue({funcid:s[o-2]});break;case 347:this.$=new n.FuncValue({funcid:"IIF",args:s[o-1]});break;case 348:this.$=new n.FuncValue({funcid:"REPLACE",args:s[o-1]});break;case 349:this.$=new n.FuncValue({funcid:"DATEADD",args:[new n.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 350:this.$=new n.FuncValue({funcid:"DATEADD",args:[s[o-5],s[o-3],s[o-1]]});break;case 351:this.$=new n.FuncValue({funcid:"DATEDIFF",args:[new n.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 352:this.$=new n.FuncValue({funcid:"DATEDIFF",args:[s[o-5],s[o-3],s[o-1]]});break;case 353:this.$=new n.FuncValue({funcid:"INTERVAL",args:[s[o-1],new n.StringValue({value:s[o].toLowerCase()})]});break;case 355:s[o-2].push(s[o]),this.$=s[o-2];break;case 356:this.$=new n.NumValue({value:+s[o]});break;case 357:this.$=new n.LogicValue({value:!0});break;case 358:this.$=new n.LogicValue({value:!1});break;case 359:this.$=new n.StringValue({value:s[o].substr(1,s[o].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 360:this.$=new n.StringValue({value:s[o].substr(2,s[o].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 361:this.$=new n.NullValue({value:void 0});break;case 362:this.$=new n.VarValue({variable:s[o]});break;case 363:n.exists||(n.exists=[]),this.$=new n.ExistsValue({value:s[o-1],existsidx:n.exists.length}),n.exists.push(s[o-1]);break;case 364:this.$=new n.ArrayValue({value:s[o-1]});break;case 365:case 366:this.$=new n.ParamValue({param:s[o]});break;case 367:void 0===n.question&&(n.question=0),this.$=new n.ParamValue({param:n.question++});break;case 368:void 0===n.question&&(n.question=0),this.$=new n.ParamValue({param:n.question++,array:!0});break;case 369:this.$=new n.CaseValue({expression:s[o-3],whens:s[o-2],elses:s[o-1]});break;case 370:this.$=new n.CaseValue({whens:s[o-2],elses:s[o-1]});break;case 371:case 699:case 700:this.$=s[o-1],this.$.push(s[o]);break;case 373:this.$={when:s[o-2],then:s[o]};break;case 376:case 377:this.$=new n.Op({left:s[o-2],op:"REGEXP",right:s[o]});break;case 378:this.$=new n.Op({left:s[o-2],op:"GLOB",right:s[o]});break;case 379:this.$=new n.Op({left:s[o-2],op:"LIKE",right:s[o]});break;case 380:this.$=new n.Op({left:s[o-4],op:"LIKE",right:s[o-2],escape:s[o]});break;case 381:this.$=new n.Op({left:s[o-2],op:"NOT LIKE",right:s[o]});break;case 382:this.$=new n.Op({left:s[o-4],op:"NOT LIKE",right:s[o-2],escape:s[o]});break;case 383:this.$=new n.Op({left:s[o-2],op:"||",right:s[o]});break;case 384:this.$=new n.Op({left:s[o-2],op:"+",right:s[o]});break;case 385:this.$=new n.Op({left:s[o-2],op:"-",right:s[o]});break;case 386:this.$=new n.Op({left:s[o-2],op:"*",right:s[o]});break;case 387:this.$=new n.Op({left:s[o-2],op:"/",right:s[o]});break;case 388:this.$=new n.Op({left:s[o-2],op:"%",right:s[o]});break;case 389:this.$=new n.Op({left:s[o-2],op:"^",right:s[o]});break;case 390:this.$=new n.Op({left:s[o-2],op:">>",right:s[o]});break;case 391:this.$=new n.Op({left:s[o-2],op:"<<",right:s[o]});break;case 392:this.$=new n.Op({left:s[o-2],op:"&",right:s[o]});break;case 393:this.$=new n.Op({left:s[o-2],op:"|",right:s[o]});break;case 394:case 395:case 397:this.$=new n.Op({left:s[o-2],op:"->",right:s[o]});break;case 396:this.$=new n.Op({left:s[o-4],op:"->",right:s[o-1]});break;case 398:case 399:case 401:this.$=new n.Op({left:s[o-2],op:"!",right:s[o]});break;case 400:this.$=new n.Op({left:s[o-4],op:"!",right:s[o-1]});break;case 402:this.$=new n.Op({left:s[o-2],op:">",right:s[o]});break;case 403:this.$=new n.Op({left:s[o-2],op:">=",right:s[o]});break;case 404:this.$=new n.Op({left:s[o-2],op:"<",right:s[o]});break;case 405:this.$=new n.Op({left:s[o-2],op:"<=",right:s[o]});break;case 406:this.$=new n.Op({left:s[o-2],op:"=",right:s[o]});break;case 407:this.$=new n.Op({left:s[o-2],op:"==",right:s[o]});break;case 408:this.$=new n.Op({left:s[o-2],op:"===",right:s[o]});break;case 409:this.$=new n.Op({left:s[o-2],op:"!=",right:s[o]});break;case 410:this.$=new n.Op({left:s[o-2],op:"!==",right:s[o]});break;case 411:this.$=new n.Op({left:s[o-2],op:"!===",right:s[o]});break;case 412:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1],queriesidx:n.queries.length}),n.queries.push(s[o-1]);break;case 413:this.$=new n.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1]});break;case 414:"BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new n.Op({left:s[o-2].left.left,op:"AND",right:new n.Op({left:s[o-2].left.right,op:"BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new n.Op({left:s[o-2].left,op:"BETWEEN",right1:s[o-2].right,right2:s[o]}):"NOT BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new n.Op({left:s[o-2].left.left,op:"AND",right:new n.Op({left:s[o-2].left.right,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new n.Op({left:s[o-2].left,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]}):this.$=new n.Op({left:s[o-2],op:"AND",right:s[o]});break;case 415:this.$=new n.Op({left:s[o-2],op:"OR",right:s[o]});break;case 416:this.$=new n.UniOp({op:"NOT",right:s[o]});break;case 417:this.$=new n.UniOp({op:"-",right:s[o]});break;case 418:this.$=new n.UniOp({op:"+",right:s[o]});break;case 419:this.$=new n.UniOp({op:"~",right:s[o]});break;case 420:this.$=new n.UniOp({op:"#",right:s[o]});break;case 421:this.$=new n.UniOp({right:s[o-1]});break;case 422:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-4],op:"IN",right:s[o-1],queriesidx:n.queries.length}),n.queries.push(s[o-1]);break;case 423:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-5],op:"NOT IN",right:s[o-1],queriesidx:n.queries.length}),
n.queries.push(s[o-1]);break;case 424:this.$=new n.Op({left:s[o-4],op:"IN",right:s[o-1]});break;case 425:this.$=new n.Op({left:s[o-5],op:"NOT IN",right:s[o-1]});break;case 426:this.$=new n.Op({left:s[o-3],op:"IN",right:[]});break;case 427:this.$=new n.Op({left:s[o-4],op:"NOT IN",right:[]});break;case 428:case 430:this.$=new n.Op({left:s[o-2],op:"IN",right:s[o]});break;case 429:case 431:this.$=new n.Op({left:s[o-3],op:"NOT IN",right:s[o]});break;case 432:this.$=new n.Op({left:s[o-2],op:"BETWEEN1",right:s[o]});break;case 433:this.$=new n.Op({left:s[o-2],op:"NOT BETWEEN1",right:s[o]});break;case 434:this.$=new n.Op({op:"IS",left:s[o-2],right:s[o]});break;case 435:this.$=new n.Op({op:"IS",left:s[o-2],right:new n.UniOp({op:"NOT",right:new n.NullValue({value:void 0})})});break;case 436:this.$=new n.Convert({expression:s[o-2]}),n.extend(this.$,s[o]);break;case 437:case 438:this.$=s[o];break;case 439:this.$=s[o-1];break;case 446:this.$="ALL";break;case 447:this.$="SOME";break;case 448:this.$="ANY";break;case 449:this.$=new n.Update({table:s[o-4],columns:s[o-2],where:s[o]});break;case 450:this.$=new n.Update({table:s[o-2],columns:s[o]});break;case 453:this.$=new n.SetColumn({column:s[o-2],expression:s[o]});break;case 454:this.$=new n.SetColumn({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 455:this.$=new n.Delete({table:s[o-2],where:s[o]});break;case 456:this.$=new n.Delete({table:s[o]});break;case 457:this.$=new n.Insert({into:s[o-2],values:s[o]});break;case 458:this.$=new n.Insert({into:s[o-1],values:s[o]});break;case 459:case 461:this.$=new n.Insert({into:s[o-2],values:s[o],orreplace:!0});break;case 460:case 462:this.$=new n.Insert({into:s[o-1],values:s[o],orreplace:!0});break;case 463:this.$=new n.Insert({into:s[o-2],default:!0});break;case 464:this.$=new n.Insert({into:s[o-5],columns:s[o-3],values:s[o]});break;case 465:this.$=new n.Insert({into:s[o-4],columns:s[o-2],values:s[o]});break;case 466:this.$=new n.Insert({into:s[o-1],select:s[o]});break;case 467:this.$=new n.Insert({into:s[o-1],select:s[o],orreplace:!0});break;case 468:this.$=new n.Insert({into:s[o-4],columns:s[o-2],select:s[o]});break;case 473:this.$=[s[o-1]];break;case 476:this.$=s[o-4],s[o-4].push(s[o-1]);break;case 477:case 478:case 480:case 488:this.$=s[o-2],s[o-2].push(s[o]);break;case 489:this.$=new n.CreateTable({table:s[o-4]}),n.extend(this.$,s[o-7]),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-5]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o]);break;case 490:this.$=new n.CreateTable({table:s[o]}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]);break;case 492:this.$={class:!0};break;case 502:this.$={temporary:!0};break;case 504:this.$={ifnotexists:!0};break;case 505:this.$={columns:s[o-2],constraints:s[o]};break;case 506:this.$={columns:s[o]};break;case 507:this.$={as:s[o]};break;case 508:case 532:this.$=[s[o]];break;case 510:case 511:case 512:case 513:case 514:s[o].constraintid=s[o-1],this.$=s[o];break;case 517:this.$={type:"CHECK",expression:s[o-1]};break;case 518:this.$={type:"PRIMARY KEY",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 519:this.$={type:"FOREIGN KEY",columns:s[o-5],fktable:s[o-2],fkcolumns:s[o-1]};break;case 525:this.$={type:"UNIQUE",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 534:this.$=new n.ColumnDef({columnid:s[o-2]}),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]);break;case 535:this.$=new n.ColumnDef({columnid:s[o-1]}),n.extend(this.$,s[o]);break;case 536:this.$=new n.ColumnDef({columnid:s[o],dbtypeid:""});break;case 537:this.$={dbtypeid:s[o-5],dbsize:s[o-3],dbprecision:+s[o-1]};break;case 538:this.$={dbtypeid:s[o-3],dbsize:s[o-1]};break;case 539:this.$={dbtypeid:s[o]};break;case 540:this.$={dbtypeid:"ENUM",enumvalues:s[o-1]};break;case 541:this.$=s[o-1],s[o-1].dbtypeid+="["+s[o]+"]";break;case 543:case 750:this.$=+s[o];break;case 545:this.$=void 0;break;case 547:n.extend(s[o-1],s[o]),this.$=s[o-1];break;case 550:this.$={primarykey:!0};break;case 551:case 552:this.$={foreignkey:{table:s[o-1],columnid:s[o]}};break;case 553:this.$={identity:{value:s[o-3],step:s[o-1]}};break;case 554:this.$={identity:{value:1,step:1}};break;case 555:case 557:this.$={default:s[o]};break;case 556:this.$={default:s[o-1]};break;case 558:this.$={null:!0};break;case 559:this.$={notnull:!0};break;case 560:this.$={check:s[o]};break;case 561:this.$={unique:!0};break;case 562:this.$={onupdate:s[o]};break;case 563:this.$={onupdate:s[o-1]};break;case 564:this.$=new n.DropTable({tables:s[o],type:s[o-2]}),n.extend(this.$,s[o-1]);break;case 568:this.$={ifexists:!0};break;case 569:this.$=new n.AlterTable({table:s[o-3],renameto:s[o]});break;case 570:this.$=new n.AlterTable({table:s[o-3],addcolumn:s[o]});break;case 571:this.$=new n.AlterTable({table:s[o-3],modifycolumn:s[o]});break;case 572:this.$=new n.AlterTable({table:s[o-5],renamecolumn:s[o-2],to:s[o]});break;case 573:this.$=new n.AlterTable({table:s[o-3],dropcolumn:s[o]});break;case 574:this.$=new n.AlterTable({table:s[o-2],renameto:s[o]});break;case 575:this.$=new n.AttachDatabase({databaseid:s[o],engineid:s[o-2].toUpperCase()});break;case 576:this.$=new n.AttachDatabase({databaseid:s[o-3],engineid:s[o-5].toUpperCase(),args:s[o-1]});break;case 577:this.$=new n.AttachDatabase({databaseid:s[o-2],engineid:s[o-4].toUpperCase(),as:s[o]});break;case 578:this.$=new n.AttachDatabase({databaseid:s[o-5],engineid:s[o-7].toUpperCase(),as:s[o],args:s[o-3]});break;case 579:this.$=new n.DetachDatabase({databaseid:s[o]});break;case 580:this.$=new n.CreateDatabase({databaseid:s[o]}),n.extend(this.$,s[o]);break;case 581:this.$=new n.CreateDatabase({engineid:s[o-4].toUpperCase(),databaseid:s[o-1],as:s[o]}),n.extend(this.$,s[o-2]);break;case 582:this.$=new n.CreateDatabase({engineid:s[o-7].toUpperCase(),databaseid:s[o-4],args:s[o-2],as:s[o]}),n.extend(this.$,s[o-5]);break;case 583:this.$=new n.CreateDatabase({engineid:s[o-4].toUpperCase(),as:s[o],args:[s[o-1]]}),n.extend(this.$,s[o-2]);break;case 584:this.$=void 0;break;case 586:case 587:this.$=new n.UseDatabase({databaseid:s[o]});break;case 588:this.$=new n.DropDatabase({databaseid:s[o]}),n.extend(this.$,s[o-1]);break;case 589:case 590:this.$=new n.DropDatabase({databaseid:s[o],engineid:s[o-3].toUpperCase()}),n.extend(this.$,s[o-1]);break;case 591:this.$=new n.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1]});break;case 592:this.$=new n.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1],unique:!0});break;case 593:this.$=new n.DropIndex({indexid:s[o]});break;case 594:this.$=new n.ShowDatabases;break;case 595:this.$=new n.ShowDatabases({like:s[o]});break;case 596:this.$=new n.ShowDatabases({engineid:s[o-1].toUpperCase()});break;case 597:this.$=new n.ShowDatabases({engineid:s[o-3].toUpperCase(),like:s[o]});break;case 598:this.$=new n.ShowTables;break;case 599:this.$=new n.ShowTables({like:s[o]});break;case 600:this.$=new n.ShowTables({databaseid:s[o]});break;case 601:this.$=new n.ShowTables({like:s[o],databaseid:s[o-2]});break;case 602:this.$=new n.ShowColumns({table:s[o]});break;case 603:this.$=new n.ShowColumns({table:s[o-2],databaseid:s[o]});break;case 604:this.$=new n.ShowIndex({table:s[o]});break;case 605:this.$=new n.ShowIndex({table:s[o-2],databaseid:s[o]});break;case 606:this.$=new n.ShowCreateTable({table:s[o]});break;case 607:this.$=new n.ShowCreateTable({table:s[o-2],databaseid:s[o]});break;case 608:this.$=new n.CreateTable({table:s[o-6],view:!0,select:s[o-1],viewcolumns:s[o-4]}),n.extend(this.$,s[o-9]),n.extend(this.$,s[o-7]);break;case 609:this.$=new n.CreateTable({table:s[o-3],view:!0,select:s[o-1]}),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-4]);break;case 613:this.$=new n.DropTable({tables:s[o],view:!0}),n.extend(this.$,s[o-1]);break;case 614:case 760:this.$=new n.ExpressionStatement({expression:s[o]});break;case 615:this.$=new n.Source({url:s[o].value});break;case 616:this.$=new n.Assert({value:s[o]});break;case 617:this.$=new n.Assert({value:s[o].value});break;case 618:this.$=new n.Assert({value:s[o],message:s[o-2]});break;case 620:case 631:case 633:this.$=s[o].value;break;case 621:case 629:this.$=+s[o].value;break;case 622:this.$=!!s[o].value;break;case 630:this.$=""+s[o].value;break;case 639:this.$={};break;case 642:this.$=[];break;case 643:n.extend(s[o-2],s[o]),this.$=s[o-2];break;case 645:this.$={},this.$[s[o-2].substr(1,s[o-2].length-2)]=s[o];break;case 646:case 647:this.$={},this.$[s[o-2]]=s[o];break;case 650:this.$=new n.SetVariable({variable:s[o-2].toLowerCase(),value:s[o]});break;case 651:this.$=new n.SetVariable({variable:s[o-1].toLowerCase(),value:s[o]});break;case 652:this.$=new n.SetVariable({variable:s[o-2],expression:s[o]});break;case 653:this.$=new n.SetVariable({variable:s[o-3],props:s[o-2],expression:s[o]});break;case 654:this.$=new n.SetVariable({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 655:this.$=new n.SetVariable({variable:s[o-3],props:s[o-2],expression:s[o],method:s[o-4]});break;case 656:this.$="@";break;case 657:this.$="$";break;case 663:this.$=!0;break;case 664:this.$=!1;break;case 665:this.$=new n.CommitTransaction;break;case 666:this.$=new n.RollbackTransaction;break;case 667:this.$=new n.BeginTransaction;break;case 668:this.$=new n.If({expression:s[o-2],thenstat:s[o-1],elsestat:s[o]}),s[o-1].exists&&(this.$.exists=s[o-1].exists),s[o-1].queries&&(this.$.queries=s[o-1].queries);break;case 669:this.$=new n.If({expression:s[o-1],thenstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 670:this.$=s[o];break;case 671:this.$=new n.While({expression:s[o-1],loopstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 672:this.$=new n.Continue;break;case 673:this.$=new n.Break;break;case 674:this.$=new n.BeginEnd({statements:s[o-1]});break;case 675:this.$=new n.Print({exprs:s[o]});break;case 676:this.$=new n.Print({select:s[o]});break;case 677:this.$=new n.Require({paths:s[o]});break;case 678:this.$=new n.Require({plugins:s[o]});break;case 679:case 680:this.$=s[o].toUpperCase();break;case 681:this.$=new n.Echo({expr:s[o]});break;case 686:this.$=new n.Declare({declares:s[o]});break;case 689:this.$={variable:s[o-1]},n.extend(this.$,s[o]);break;case 690:this.$={variable:s[o-2]},n.extend(this.$,s[o]);break;case 691:this.$={variable:s[o-3],expression:s[o]},n.extend(this.$,s[o-2]);break;case 692:this.$={variable:s[o-4],expression:s[o]},n.extend(this.$,s[o-2]);break;case 693:this.$=new n.TruncateTable({table:s[o]});break;case 694:this.$=new n.Merge,n.extend(this.$,s[o-4]),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,{matches:s[o-1]}),n.extend(this.$,s[o]);break;case 695:case 696:this.$={into:s[o]};break;case 698:this.$={on:s[o]};break;case 703:this.$={matched:!0,action:s[o]};break;case 704:this.$={matched:!0,expr:s[o-2],action:s[o]};break;case 705:this.$={delete:!0};break;case 706:this.$={update:s[o]};break;case 707:case 708:this.$={matched:!1,bytarget:!0,action:s[o]};break;case 709:case 710:this.$={matched:!1,bytarget:!0,expr:s[o-2],action:s[o]};break;case 711:this.$={matched:!1,bysource:!0,action:s[o]};break;case 712:this.$={matched:!1,bysource:!0,expr:s[o-2],action:s[o]};break;case 713:this.$={insert:!0,values:s[o]};break;case 714:this.$={insert:!0,values:s[o],columns:s[o-3]};break;case 715:this.$={insert:!0,defaultvalues:!0};break;case 716:this.$={insert:!0,defaultvalues:!0,columns:s[o-3]};break;case 718:this.$={output:{columns:s[o]}};break;case 719:this.$={output:{columns:s[o-3],intovar:s[o],method:s[o-1]}};break;case 720:this.$={output:{columns:s[o-2],intotable:s[o]}};break;case 721:this.$={output:{columns:s[o-5],intotable:s[o-3],intocolumns:s[o-1]}};break;case 722:this.$=new n.CreateVertex({class:s[o-3],sharp:s[o-2],name:s[o-1]}),n.extend(this.$,s[o]);break;case 725:this.$={sets:s[o]};break;case 726:this.$={content:s[o]};break;case 727:this.$={select:s[o]};break;case 728:this.$=new n.CreateEdge({from:s[o-3],to:s[o-1],name:s[o-5]}),n.extend(this.$,s[o]);break;case 729:this.$=new n.CreateGraph({graph:s[o]});break;case 730:this.$=new n.CreateGraph({from:s[o]});break;case 733:this.$=s[o-2],s[o-1]&&(this.$.json=new n.Json({value:s[o-1]})),s[o]&&(this.$.as=s[o]);break;case 734:this.$={source:s[o-6],target:s[o]},s[o-3]&&(this.$.json=new n.Json({value:s[o-3]})),s[o-2]&&(this.$.as=s[o-2]),n.extend(this.$,s[o-4]);break;case 735:this.$={source:s[o-5],target:s[o]},s[o-2]&&(this.$.json=new n.Json({value:s[o-3]})),s[o-1]&&(this.$.as=s[o-2]);break;case 736:this.$={source:s[o-2],target:s[o]};break;case 740:this.$={vars:s[o],method:s[o-1]};break;case 743:case 744:var b=s[o-1];this.$={prop:s[o-3],sharp:s[o-2],name:void 0===b?void 0:b.substr(1,b.length-2),class:s[o]};break;case 745:var E=s[o-1];this.$={sharp:s[o-2],name:void 0===E?void 0:E.substr(1,E.length-2),class:s[o]};break;case 746:var g=s[o-1];this.$={name:void 0===g?void 0:g.substr(1,g.length-2),class:s[o]};break;case 747:this.$={class:s[o]};break;case 753:this.$=new n.AddRule({left:s[o-2],right:s[o]});break;case 754:this.$=new n.AddRule({right:s[o]});break;case 757:this.$=new n.Term({termid:s[o]});break;case 758:this.$=new n.Term({termid:s[o-3],args:s[o-1]});break;case 761:this.$=new n.CreateTrigger({trigger:s[o-6],when:s[o-5],action:s[o-4],table:s[o-2],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 762:this.$=new n.CreateTrigger({trigger:s[o-5],when:s[o-4],action:s[o-3],table:s[o-1],funcid:s[o]});break;case 763:this.$=new n.CreateTrigger({trigger:s[o-6],when:s[o-4],action:s[o-3],table:s[o-5],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 764:case 765:case 767:this.$="AFTER";break;case 766:this.$="BEFORE";break;case 768:this.$="INSTEADOF";break;case 769:this.$="INSERT";break;case 770:this.$="DELETE";break;case 771:this.$="UPDATE";break;case 772:this.$=new n.DropTrigger({trigger:s[o]});break;case 773:this.$=new n.Reindex({indexid:s[o]});break;case 1047:case 1067:case 1069:case 1071:case 1075:case 1077:case 1079:case 1081:case 1083:case 1085:this.$=[];break;case 1048:case 1062:case 1064:case 1068:case 1070:case 1072:case 1076:case 1078:case 1080:case 1082:case 1084:case 1086:s[o-1].push(s[o]);break;case 1061:case 1063:this.$=[s[o]]}},table:[t([10,602,764],r,{8:1,9:2,12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,2:n,4:a,5:s,14:i,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),{1:[3]},{10:[1,105],11:106,602:Y,764:W},t(X,[2,8]),t(X,[2,9]),t(K,[2,12]),t(X,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:109,2:n,4:a,5:s,15:[1,110],53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(K,[2,14]),t(K,[2,15]),t(K,[2,16]),t(K,[2,17]),t(K,[2,18]),t(K,[2,19]),t(K,[2,20]),t(K,[2,21]),t(K,[2,22]),t(K,[2,23]),t(K,[2,24]),t(K,[2,25]),t(K,[2,26]),t(K,[2,27]),t(K,[2,28]),t(K,[2,29]),t(K,[2,30]),t(K,[2,31]),t(K,[2,32]),t(K,[2,33]),t(K,[2,34]),t(K,[2,35]),t(K,[2,36]),t(K,[2,37]),t(K,[2,38]),t(K,[2,39]),t(K,[2,40]),t(K,[2,41]),t(K,[2,42]),t(K,[2,43]),t(K,[2,44]),t(K,[2,45]),t(K,[2,46]),t(K,[2,47]),t(K,[2,48]),t(K,[2,49]),t(K,[2,50]),t(K,[2,51]),t(K,[2,52]),t(K,[2,53]),t(K,[2,54]),t(K,[2,55]),t(K,[2,56]),t(K,[2,57]),t(K,[2,58]),t(K,[2,59]),t(K,[2,60]),t(K,[2,61]),t(K,[2,62]),t(K,[2,63]),t(K,[2,64]),t(K,[2,65]),t(K,[2,66]),t(K,[2,67]),{353:[1,111]},{2:n,3:112,4:a,5:s},{2:n,3:114,4:a,5:s,156:Q,200:113,290:z,291:Z,292:ee,293:te},t(re,[2,501],{3:121,348:125,2:n,4:a,5:s,134:ne,135:ae,187:[1,123],193:[1,122],268:[1,129],269:[1,130],357:[1,131],405:[1,120],472:[1,124],509:[1,128]}),{145:se,449:132,450:133},{183:[1,135]},{405:[1,136]},{2:n,3:138,4:a,5:s,130:[1,144],193:[1,139],353:[1,143],397:140,405:[1,137],410:[1,141],509:[1,142]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:145,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Be,je,{340:204,171:[1,205],198:He}),t(Be,je,{340:207,198:He}),{2:n,3:219,4:a,5:s,77:Je,132:Ye,143:le,144:212,145:he,152:fe,156:Q,181:ge,198:[1,210],199:213,200:215,201:214,202:217,209:209,213:We,214:218,290:z,291:Z,292:ee,293:te,302:_e,419:190,420:Ge,424:Ve,453:208},{2:n,3:221,4:a,5:s},{353:[1,222]},t(Xe,[2,1043],{80:223,106:224,107:[1,225]}),t(Ke,[2,1047],{90:226}),{2:n,3:230,4:a,5:s,190:[1,228],193:[1,231],267:[1,227],353:[1,232],405:[1,229]},{353:[1,233]},{2:n,3:236,4:a,5:s,73:234,75:235},t([306,602,764],r,{12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,9:238,2:n,4:a,5:s,14:i,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,435:[1,237],436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),{435:[1,239]},{435:[1,240]},{2:n,3:242,4:a,5:s,405:[1,241]},{2:n,3:244,4:a,5:s,199:243},t(Qe,[2,311]),{113:245,132:ue,296:Le},{2:n,3:114,4:a,5:s,113:251,131:oe,132:[1,248],143:le,144:246,145:ze,152:fe,156:Q,181:ge,196:250,200:255,201:254,257:252,258:253,265:Ze,274:247,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,302:_e,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:257,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(K,[2,672]),t(K,[2,673]),{2:n,3:168,4:a,5:s,40:259,56:165,77:ie,79:75,89:c,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:258,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,184:99,189:f,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:266,4:a,5:s,113:263,132:ue,296:Le,444:261,445:262,446:264,447:et},{2:n,3:267,4:a,5:s,143:tt,145:rt,431:268},{2:n,3:168,4:a,5:s,56:165,77:ie,94:271,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{505:[1,272]},{2:n,3:100,4:a,5:s,504:274,506:273},{2:n,3:114,4:a,5:s,156:Q,200:275,290:z,291:Z,292:ee,293:te},{2:n,3:168,4:a,5:s,56:165,77:ie,94:276,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(nt,at,{186:280,164:[1,279],185:[1,277],187:[1,278],195:st}),t(it,[2,757],{77:[1,282]}),t([2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],[2,152],{149:[1,283],150:[1,284],190:[1,285],191:[1,286],192:[1,287],193:[1,288],194:[1,289]}),t(ot,[2,1]),t(ot,[2,2]),{6:290,131:[1,439],172:[1,462],245:[1,411],285:[1,373],286:[1,407],370:[1,404],381:[1,295],402:[1,297],410:[1,549],414:[1,471],416:[1,443],417:[1,509],433:[1,442],435:[1,525],440:[1,342],460:[1,418],464:[1,448],470:[1,341],514:[1,307],515:[1,299],516:[1,399],518:[1,291],519:[1,292],520:[1,293],521:[1,294],522:[1,296],523:[1,298],524:[1,300],525:[1,301],526:[1,302],527:[1,303],528:[1,304],529:[1,305],530:[1,306],531:[1,308],532:[1,309],533:[1,310],534:[1,311],535:[1,312],536:[1,313],537:[1,314],538:[1,315],539:[1,316],540:[1,317],541:[1,318],542:[1,319],543:[1,320],544:[1,321],545:[1,322],546:[1,323],547:[1,324],548:[1,325],549:[1,326],550:[1,327],551:[1,328],552:[1,329],553:[1,330],554:[1,331],555:[1,332],556:[1,333],557:[1,334],558:[1,335],559:[1,336],560:[1,337],561:[1,338],562:[1,339],563:[1,340],564:[1,343],565:[1,344],566:[1,345],567:[1,346],568:[1,347],569:[1,348],570:[1,349],571:[1,350],572:[1,351],573:[1,352],574:[1,353],575:[1,354],576:[1,355],577:[1,356],578:[1,357],579:[1,358],580:[1,359],581:[1,360],582:[1,361],583:[1,362],584:[1,363],585:[1,364],586:[1,365],587:[1,366],588:[1,367],589:[1,368],590:[1,369],591:[1,370],592:[1,371],593:[1,372],594:[1,374],595:[1,375],596:[1,376],597:[1,377],598:[1,378],599:[1,379],600:[1,380],601:[1,381],602:[1,382],603:[1,383],604:[1,384],605:[1,385],606:[1,386],607:[1,387],608:[1,388],609:[1,389],610:[1,390],611:[1,391],612:[1,392],613:[1,393],614:[1,394],615:[1,395],616:[1,396],617:[1,397],618:[1,398],619:[1,400],620:[1,401],621:[1,402],622:[1,403],623:[1,405],624:[1,406],625:[1,408],626:[1,409],627:[1,410],628:[1,412],629:[1,413],630:[1,414],631:[1,415],632:[1,416],633:[1,417],634:[1,419],635:[1,420],636:[1,421],637:[1,422],638:[1,423],639:[1,424],640:[1,425],641:[1,426],642:[1,427],643:[1,428],644:[1,429],645:[1,430],646:[1,431],647:[1,432],648:[1,433],649:[1,434],650:[1,435],651:[1,436],652:[1,437],653:[1,438],654:[1,440],655:[1,441],656:[1,444],657:[1,445],658:[1,446],659:[1,447],660:[1,449],661:[1,450],662:[1,451],663:[1,452],664:[1,453],665:[1,454],666:[1,455],667:[1,456],668:[1,457],669:[1,458],670:[1,459],671:[1,460],672:[1,461],673:[1,463],674:[1,464],675:[1,465],676:[1,466],677:[1,467],678:[1,468],679:[1,469],680:[1,470],681:[1,472],682:[1,473],683:[1,474],684:[1,475],685:[1,476],686:[1,477],687:[1,478],688:[1,479],689:[1,480],690:[1,481],691:[1,482],692:[1,483],693:[1,484],694:[1,485],695:[1,486],696:[1,487],697:[1,488],698:[1,489],699:[1,490],700:[1,491],701:[1,492],702:[1,493],703:[1,494],704:[1,495],705:[1,496],706:[1,497],707:[1,498],708:[1,499],709:[1,500],710:[1,501],711:[1,502],712:[1,503],713:[1,504],714:[1,505],715:[1,506],716:[1,507],717:[1,508],718:[1,510],719:[1,511],720:[1,512],721:[1,513],722:[1,514],723:[1,515],724:[1,516],725:[1,517],726:[1,518],727:[1,519],728:[1,520],729:[1,521],730:[1,522],731:[1,523],732:[1,524],733:[1,526],734:[1,527],735:[1,528],736:[1,529],737:[1,530],738:[1,531],739:[1,532],740:[1,533],741:[1,534],742:[1,535],743:[1,536],744:[1,537],745:[1,538],746:[1,539],747:[1,540],748:[1,541],749:[1,542],750:[1,543],751:[1,544],752:[1,545],753:[1,546],754:[1,547],755:[1,548],756:[1,550],757:[1,551],758:[1,552],759:[1,553],760:[1,554],761:[1,555],762:[1,556],763:[1,557]},{1:[2,6]},t(X,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:558,2:n,4:a,5:s,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(ut,[2,1041]),t(ut,[2,1042]),t(X,[2,10]),{16:[1,559]},{2:n,3:244,4:a,5:s,199:560},{405:[1,561]},t(K,[2,760]),{77:ct},{77:[1,563]},{77:lt},{77:[1,565]},{77:[1,566]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:567,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Be,ht,{350:568,156:dt}),{405:[1,570]},{2:n,3:571,4:a,5:s},{193:[1,572]},{2:n,3:578,4:a,5:s,132:ft,137:pt,143:tt,145:rt,152:bt,183:[1,574],431:585,473:573,474:575,475:576,478:577,482:582,493:579,497:581},{130:[1,589],349:586,353:[1,588],410:[1,587]},{113:591,132:ue,183:[2,1141],296:Le,471:590},t(Et,[2,1135],{465:592,3:593,2:n,4:a,5:s}),{2:n,3:594,4:a,5:s},{4:[1,595]},{4:[1,596]},t(re,[2,502]),t(K,[2,686],{74:[1,597]}),t(gt,[2,687]),{2:n,3:598,4:a,5:s},{2:n,3:244,4:a,5:s,199:599},{2:n,3:600,4:a,5:s},t(Be,mt,{398:601,156:vt}),{405:[1,603]},{2:n,3:604,4:a,5:s},t(Be,mt,{398:605,156:vt}),t(Be,mt,{398:606,156:vt}),{2:n,3:607,4:a,5:s},t(St,[2,1129]),t(St,[2,1130]),t(K,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:608,114:625,327:637,2:n,4:a,5:s,53:o,72:u,89:c,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:Rt,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,146:h,154:$t,156:d,170:Mt,171:Ut,179:_t,180:Ft,189:f,266:p,267:b,290:E,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(Qe,[2,288]),t(Qe,[2,289]),t(Qe,[2,290]),t(Qe,[2,291]),t(Qe,[2,292]),t(Qe,[2,293]),t(Qe,[2,294]),t(Qe,[2,295]),t(Qe,[2,296]),t(Qe,[2,297]),t(Qe,[2,298]),t(Qe,[2,299]),t(Qe,[2,300]),t(Qe,[2,301]),t(Qe,[2,302]),t(Qe,[2,303]),t(Qe,[2,304]),t(Qe,[2,305]),{2:n,3:168,4:a,5:s,26:654,27:653,36:649,40:648,56:165,77:ie,79:75,89:c,94:651,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,184:99,189:f,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,264:650,265:me,266:p,267:[1,655],270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:[1,652],291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,339:v,419:190,420:Ge,424:Ve},t(Qe,[2,309]),t(Qe,[2,310]),{77:[1,656]},t([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ar,{77:ct,116:[1,657]}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:658,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:659,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:661,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:662,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve
diff --git a/package-lock.json b/package-lock.json
index 71c70dc37d..8a1514f956 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "alasql",
- "version": "0.4.10",
+ "version": "0.4.11",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/test/test800.js b/test/test800.js
new file mode 100644
index 0000000000..bdc355d604
--- /dev/null
+++ b/test/test800.js
@@ -0,0 +1,39 @@
+if (typeof exports === 'object') {
+ var assert = require('assert');
+ var alasql = require('..');
+} else {
+ __dirname = '.';
+}
+
+describe('Test 800 - OUTER JOIN missing ids', function() {
+ it('1. ARRAY()', function(done) {
+ var t1 = [
+ {id: '1', a: 'one'},
+ {id: '2', a: 'two'},
+ {id: '4', a: 'four'}
+ ];
+ var t2 = [
+ {id: '1', b: 'A'},
+ {id: '2', b: 'B'},
+ {id: '3', b: 'C'}
+ ];
+
+ alasql('CREATE TABLE T1 (id number, a string)');
+ alasql.tables['T1'].data = t1;
+
+ alasql('CREATE TABLE T2 (id number, b string)');
+ alasql.tables['T2'].data = t2;
+
+ var res = alasql('SELECT * FROM T1 OUTER JOIN T2 ON T1.id = T2.id');
+
+ var expected = [
+ {id: '1', a: 'one', b: 'A'},
+ {id: '2', a: 'two', b: 'B'},
+ {id: '4', a: 'four', b: undefined},
+ {id: '3', a: undefined, b: 'C'},
+ ];
+
+ assert.deepEqual(expected, res);
+ done();
+ });
+});
From d00d3b02ef6566e5e3739676d5f443f77d03f748 Mon Sep 17 00:00:00 2001
From: Andrey Khaneev
Date: Wed, 17 Apr 2019 18:16:38 +0300
Subject: [PATCH 2/4] Outer Join doesn't replace ids with undefined for not
matching rows
---
dist/alasql-worker.js | 4 +-
dist/alasql-worker.min.js | 2 +-
dist/alasql.fs.js | 172 ++++++++++++++++++++---------------
dist/alasql.js | 172 ++++++++++++++++++++---------------
dist/alasql.min.js | 12 +--
src/424select.js | 186 +++++++++++++++++++++-----------------
test/test800.js | 2 +-
7 files changed, 311 insertions(+), 239 deletions(-)
diff --git a/dist/alasql-worker.js b/dist/alasql-worker.js
index d108315b6f..9bf7dad0c0 100755
--- a/dist/alasql-worker.js
+++ b/dist/alasql-worker.js
@@ -1,7 +1,7 @@
-//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
/*
@module alasql
-@version 0.4.11-develop-977878caundefined
+@version 0.4.11-develop-7d0ef547undefined
AlaSQL - JavaScript SQL database
© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
diff --git a/dist/alasql-worker.min.js b/dist/alasql-worker.min.js
index a509065e01..017b27d10d 100755
--- a/dist/alasql-worker.min.js
+++ b/dist/alasql-worker.min.js
@@ -1,2 +1,2 @@
-//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
!function(r,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():r.alasql=e()}(this,function(){function r(e,t,o){t=t||[],"function"==typeof t&&(scope=o,o=t,t=[]),"object"!=typeof t&&(t=[t]);var n=r.lastid++;r.buffer[n]=o,r.webworker.postMessage({id:n,sql:e,params:t})}if(r.options={},r.options.progress=function(){},isArray=function(r){return"[object Array]"===Object.prototype.toString.call(r)},r.promise=function(){throw new Error("Please include a Promise/A+ library")},"undefined"!=typeof Promise){var e=function(e,t,o,n){return new Promise(function(s,i){r(e,t,function(e,t){t?i(t):(o&&n&&!1!==r.options.progress&&r.options.progress(o,n),s(e))})})},t=function(r){if(!(r.length<1)){for(var t,o,n,s=[],i=0;i1){r("REQUIRE "+t.map(function(r){return'"'+r+'"'}).join(","),[],o)}}else if(!1===e)return void delete r.webworker}),r.lastid=0,r.buffer={},r.worker(),r});
\ No newline at end of file
diff --git a/dist/alasql.fs.js b/dist/alasql.fs.js
index 9991a7e876..60b6ba543a 100755
--- a/dist/alasql.fs.js
+++ b/dist/alasql.fs.js
@@ -1,7 +1,7 @@
-//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
/*
@module alasql
-@version 0.4.11-develop-977878caundefined
+@version 0.4.11-develop-7d0ef547undefined
AlaSQL - JavaScript SQL database
© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
@@ -142,7 +142,7 @@ var alasql = function(sql, params, cb, scope) {
Current version of alasql
@constant {string}
*/
-alasql.version = '0.4.11-develop-977878caundefined';
+alasql.version = '0.4.11-develop-7d0ef547undefined';
/**
Debug flag
@@ -9386,87 +9386,110 @@ yy.Select.prototype.compileGroup = function(query) {
// };
-function compileSelectStar(query, alias, joinstar) {
-
+function compileSelectStar(query, aliases, joinstar) {
var sp = '',
- ss = [];
- // if(!alias) {
- // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
- // } else {
+ ss = [],
+ columnIds = {};
- // TODO move this out of this function
- query.ixsources = {};
- query.sources.forEach(function(source) {
- query.ixsources[source.alias] = source;
- });
+ for (var alias in aliases) {
- // Fixed
- var columns;
- if (query.ixsources[alias]) {
- var columns = query.ixsources[alias].columns;
- }
+ // if(!alias) {
+ // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
+ // } else {
- // if(columns.length == 0 && query.aliases[alias].tableid) {
- // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
- // };
+ // TODO move this out of this function
+ query.ixsources = {};
+ query.sources.forEach(function(source) {
+ query.ixsources[source.alias] = source;
+ });
- // Check if this is a Table or other
- if (joinstar && alasql.options.joinstar == 'json') {
- sp += "r['" + alias + "']={};";
- }
+ // Fixed
+ var columns;
+ if (query.ixsources[alias]) {
+ var columns = query.ixsources[alias].columns;
+ }
- if (columns && columns.length > 0) {
- columns.forEach(function(tcol) {
- if (joinstar && alasql.options.joinstar == 'underscore') {
- ss.push(
- "'" +
+ // if(columns.length == 0 && query.aliases[alias].tableid) {
+ // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
+ // };
+
+ // Check if this is a Table or other
+ if (joinstar && alasql.options.joinstar == 'json') {
+ sp += "r['" + alias + "']={};";
+ }
+
+ if (columns && columns.length > 0) {
+ columns.forEach(function(tcol) {
+ if (joinstar && alasql.options.joinstar == 'underscore') {
+ ss.push(
+ "'" +
+ alias +
+ '_' +
+ tcol.columnid +
+ "':p['" +
+ alias +
+ "']['" +
+ tcol.columnid +
+ "']"
+ );
+ } else if (joinstar && alasql.options.joinstar == 'json') {
+ // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
+ sp +=
+ "r['" +
alias +
- '_' +
+ "']['" +
tcol.columnid +
- "':p['" +
+ "']=p['" +
alias +
"']['" +
tcol.columnid +
- "']"
- );
- } else if (joinstar && alasql.options.joinstar == 'json') {
- // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
- sp +=
- "r['" +
- alias +
- "']['" +
- tcol.columnid +
- "']=p['" +
- alias +
- "']['" +
- tcol.columnid +
- "'];";
- } else {
- ss.push("'" + tcol.columnid + "':p['" + alias + "']['" + tcol.columnid + "']");
- }
+ "'];";
+ } else {
+ var value = "p['" + alias + "']['" + tcol.columnid + "']";
+ if (!columnIds[tcol.columnid]) {
+ var key = "'" + tcol.columnid + "':";
+ ss.push(key + value);
+ columnIds[tcol.columnid] = {
+ id: ss.length - 1,
+ value: value,
+ key: key,
+ };
+ } else {
+ var newValue =
+ value +
+ ' !== undefined ? ' +
+ value +
+ ' : ' +
+ columnIds[tcol.columnid].value;
+ ss[columnIds[tcol.columnid].id] = columnIds[tcol.columnid].key + newValue;
+ columnIds[tcol.columnid].value = newValue;
+ }
+ }
- query.selectColumns[escapeq(tcol.columnid)] = true;
+ query.selectColumns[escapeq(tcol.columnid)] = true;
- var coldef = {
- columnid: tcol.columnid,
- dbtypeid: tcol.dbtypeid,
- dbsize: tcol.dbsize,
- dbprecision: tcol.dbprecision,
- dbenum: tcol.dbenum,
- };
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- });
+ var coldef = {
+ columnid: tcol.columnid,
+ dbtypeid: tcol.dbtypeid,
+ dbsize: tcol.dbsize,
+ dbprecision: tcol.dbprecision,
+ dbenum: tcol.dbenum,
+ };
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ });
- } else {
+ } else {
- // if column not exist, then copy all
- sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
+ // if column not exist, then copy all
+ sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
- query.dirtyColumns = true;
- }
- // }
+ query.dirtyColumns = true;
+ }
+ // }
+ }
+ console.log(ss.join(','));
return {s: ss.join(','), sp: sp};
}
@@ -9493,20 +9516,21 @@ yy.Select.prototype.compileSelect1 = function(query, params) {
"'],p,params,alasql);";
} else if (col.tableid) {
//Copy all
- var ret = compileSelectStar(query, col.tableid, false);
+ var aliases = [];
+ aliases[col.tableid] = col.tableid;
+ var ret = compileSelectStar(query, aliases, false);
if (ret.s) {
ss = ss.concat(ret.s);
}
sp += ret.sp;
} else {
- for (var alias in query.aliases) {
- var ret = compileSelectStar(query, alias, true); //query.aliases[alias].tableid);
- if (ret.s) {
- ss = ss.concat(ret.s);
- }
- sp += ret.sp;
+ var ret = compileSelectStar(query, query.aliases, true); //query.aliases[alias].tableid);
+ if (ret.s) {
+ ss = ss.concat(ret.s);
}
+ sp += ret.sp;
+
// TODO Remove these lines
// In case of no information
// sp += 'for(var k1 in p){var w=p[k1];'+
diff --git a/dist/alasql.js b/dist/alasql.js
index 5a84f2bedf..5c1c586e8c 100755
--- a/dist/alasql.js
+++ b/dist/alasql.js
@@ -1,7 +1,7 @@
-//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
/*
@module alasql
-@version 0.4.11-develop-977878caundefined
+@version 0.4.11-develop-7d0ef547undefined
AlaSQL - JavaScript SQL database
© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
@@ -142,7 +142,7 @@ var alasql = function(sql, params, cb, scope) {
Current version of alasql
@constant {string}
*/
-alasql.version = '0.4.11-develop-977878caundefined';
+alasql.version = '0.4.11-develop-7d0ef547undefined';
/**
Debug flag
@@ -9381,87 +9381,110 @@ yy.Select.prototype.compileGroup = function(query) {
// };
-function compileSelectStar(query, alias, joinstar) {
-
+function compileSelectStar(query, aliases, joinstar) {
var sp = '',
- ss = [];
- // if(!alias) {
- // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
- // } else {
+ ss = [],
+ columnIds = {};
- // TODO move this out of this function
- query.ixsources = {};
- query.sources.forEach(function(source) {
- query.ixsources[source.alias] = source;
- });
+ for (var alias in aliases) {
- // Fixed
- var columns;
- if (query.ixsources[alias]) {
- var columns = query.ixsources[alias].columns;
- }
+ // if(!alias) {
+ // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
+ // } else {
- // if(columns.length == 0 && query.aliases[alias].tableid) {
- // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
- // };
+ // TODO move this out of this function
+ query.ixsources = {};
+ query.sources.forEach(function(source) {
+ query.ixsources[source.alias] = source;
+ });
- // Check if this is a Table or other
- if (joinstar && alasql.options.joinstar == 'json') {
- sp += "r['" + alias + "']={};";
- }
+ // Fixed
+ var columns;
+ if (query.ixsources[alias]) {
+ var columns = query.ixsources[alias].columns;
+ }
- if (columns && columns.length > 0) {
- columns.forEach(function(tcol) {
- if (joinstar && alasql.options.joinstar == 'underscore') {
- ss.push(
- "'" +
+ // if(columns.length == 0 && query.aliases[alias].tableid) {
+ // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
+ // };
+
+ // Check if this is a Table or other
+ if (joinstar && alasql.options.joinstar == 'json') {
+ sp += "r['" + alias + "']={};";
+ }
+
+ if (columns && columns.length > 0) {
+ columns.forEach(function(tcol) {
+ if (joinstar && alasql.options.joinstar == 'underscore') {
+ ss.push(
+ "'" +
+ alias +
+ '_' +
+ tcol.columnid +
+ "':p['" +
+ alias +
+ "']['" +
+ tcol.columnid +
+ "']"
+ );
+ } else if (joinstar && alasql.options.joinstar == 'json') {
+ // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
+ sp +=
+ "r['" +
alias +
- '_' +
+ "']['" +
tcol.columnid +
- "':p['" +
+ "']=p['" +
alias +
"']['" +
tcol.columnid +
- "']"
- );
- } else if (joinstar && alasql.options.joinstar == 'json') {
- // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
- sp +=
- "r['" +
- alias +
- "']['" +
- tcol.columnid +
- "']=p['" +
- alias +
- "']['" +
- tcol.columnid +
- "'];";
- } else {
- ss.push("'" + tcol.columnid + "':p['" + alias + "']['" + tcol.columnid + "']");
- }
+ "'];";
+ } else {
+ var value = "p['" + alias + "']['" + tcol.columnid + "']";
+ if (!columnIds[tcol.columnid]) {
+ var key = "'" + tcol.columnid + "':";
+ ss.push(key + value);
+ columnIds[tcol.columnid] = {
+ id: ss.length - 1,
+ value: value,
+ key: key,
+ };
+ } else {
+ var newValue =
+ value +
+ ' !== undefined ? ' +
+ value +
+ ' : ' +
+ columnIds[tcol.columnid].value;
+ ss[columnIds[tcol.columnid].id] = columnIds[tcol.columnid].key + newValue;
+ columnIds[tcol.columnid].value = newValue;
+ }
+ }
- query.selectColumns[escapeq(tcol.columnid)] = true;
+ query.selectColumns[escapeq(tcol.columnid)] = true;
- var coldef = {
- columnid: tcol.columnid,
- dbtypeid: tcol.dbtypeid,
- dbsize: tcol.dbsize,
- dbprecision: tcol.dbprecision,
- dbenum: tcol.dbenum,
- };
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- });
+ var coldef = {
+ columnid: tcol.columnid,
+ dbtypeid: tcol.dbtypeid,
+ dbsize: tcol.dbsize,
+ dbprecision: tcol.dbprecision,
+ dbenum: tcol.dbenum,
+ };
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ });
- } else {
+ } else {
- // if column not exist, then copy all
- sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
+ // if column not exist, then copy all
+ sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
- query.dirtyColumns = true;
- }
- // }
+ query.dirtyColumns = true;
+ }
+ // }
+ }
+ console.log(ss.join(','));
return {s: ss.join(','), sp: sp};
}
@@ -9488,20 +9511,21 @@ yy.Select.prototype.compileSelect1 = function(query, params) {
"'],p,params,alasql);";
} else if (col.tableid) {
//Copy all
- var ret = compileSelectStar(query, col.tableid, false);
+ var aliases = [];
+ aliases[col.tableid] = col.tableid;
+ var ret = compileSelectStar(query, aliases, false);
if (ret.s) {
ss = ss.concat(ret.s);
}
sp += ret.sp;
} else {
- for (var alias in query.aliases) {
- var ret = compileSelectStar(query, alias, true); //query.aliases[alias].tableid);
- if (ret.s) {
- ss = ss.concat(ret.s);
- }
- sp += ret.sp;
+ var ret = compileSelectStar(query, query.aliases, true); //query.aliases[alias].tableid);
+ if (ret.s) {
+ ss = ss.concat(ret.s);
}
+ sp += ret.sp;
+
// TODO Remove these lines
// In case of no information
// sp += 'for(var k1 in p){var w=p[k1];'+
diff --git a/dist/alasql.min.js b/dist/alasql.min.js
index 6ec5a7c0e7..9702528978 100755
--- a/dist/alasql.min.js
+++ b/dist/alasql.min.js
@@ -1,5 +1,5 @@
-//! AlaSQL v0.4.11-develop-977878caundefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
-"use strict";!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.alasql=t()}(this,function(){function e(e){return"(y="+e+",y===y?y:undefined)"}function t(e,t){return"(y="+e+',typeof y=="undefined"?undefined:'+t+")"}function r(){return!0}function n(){}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")&&parseInt(e.split("msie")[1])}function s(e,t,r){function n(e,r,a){var o,u,c,l=e[r];if(l.selid){if("PATH"===l.selid){for(var h=[{node:a,stack:[]}],d={},f=T.databases[T.useid].objects;h.length>0;){var p=h.shift(),b=p.node,E=p.stack,c=n(l.args,0,b);if(c.length>0){if(r+1+1>e.length)return E;var g=[];return E&&E.length>0&&E.forEach(function(t){g=g.concat(n(e,r+1,t))}),g}void 0===d[b.$id]&&(d[b.$id]=!0,b.$out&&b.$out.length>0&&b.$out.forEach(function(e){var t=f[e],r=E.concat(t);r.push(f[t.$out[0]]),h.push({node:f[t.$out[0]],stack:r})}))}return[]}if("NOT"===l.selid){var u=n(l.args,0,a);return u.length>0?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("DISTINCT"===l.selid){var u;if(u=void 0===l.args||0===l.args.length?P(a):n(l.args,0,a),0===u.length)return[];var m=P(u);return r+1+1>e.length?m:n(e,r+1,m)}if("AND"===l.selid){var m=!0;return l.args.forEach(function(e){m=m&&n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("OR"===l.selid){var m=!1;return l.args.forEach(function(e){m=m||n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("ALL"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("ANY"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?[u[0]]:n(e,r+1,[u[0]])}if("UNIONALL"===l.selid){var u=[];return l.args.forEach(function(e){u=u.concat(n(e,0,a))}),0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("UNION"===l.selid){var u=[];l.args.forEach(function(e){u=u.concat(n(e,0,a))});var u=P(u);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("IF"===l.selid){var u=n(l.args,0,a);return 0===u.length?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("REPEAT"===l.selid){var v,S,A=l.args[0].value;S=l.args[1]?l.args[1].value:A,l.args[2]&&(v=l.args[2].variable);var y=[];if(0===A&&(r+1+1>e.length?y=[a]:(v&&(T.vars[v]=0),y=y.concat(n(e,r+1,a)))),S>0)for(var N=[{value:a,lvl:1}],C=0;N.length>0;){var u=N[0];if(N.shift(),u.lvl<=S){v&&(T.vars[v]=u.lvl);var R=n(l.sels,0,u.value);R.forEach(function(e){N.push({value:e,lvl:u.lvl+1})}),u.lvl>=A&&(r+1+1>e.length?y=y.concat(R):R.forEach(function(t){y=y.concat(n(e,r+1,t))}))}if(++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("OF"===l.selid){if(r+1+1>e.length)return[a];var O=[];return Object.keys(a).forEach(function(t){T.vars[l.args[0].variable]=t,O=O.concat(n(e,r+1,a[t]))}),O}if("TO"===l.selid){var w=T.vars[l.args[0]],I=[];if(I=void 0!==w?w.slice(0):[],I.push(a),r+1+1>e.length)return[a];T.vars[l.args[0]]=I;var O=n(e,r+1,a);return T.vars[l.args[0]]=w,O}if("ARRAY"===l.selid){var u=n(l.args,0,a);return u.length>0?(o=u,r+1+1>e.length?[o]:n(e,r+1,o)):[]}if("SUM"===l.selid){var u=n(l.args,0,a);if(!(u.length>0))return[];var o=u.reduce(function(e,t){return e+t},0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("AVG"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.reduce(function(e,t){return e+t},0)/u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("COUNT"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("FIRST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[0],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("LAST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[u.length-1],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("MIN"===l.selid){if(u=n(l.args,0,a),0===u.length)return[];var o=u.reduce(function(e,t){return Math.min(e,t)},1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("MAX"===l.selid){var u=n(l.args,0,a);if(0===u.length)return[];var o=u.reduce(function(e,t){return Math.max(e,t)},-1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("PLUS"===l.selid){var y=[],N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N.shift();if(u=n(l.args,0,u),N=N.concat(u),r+1+1>e.length?y=y.concat(u):u.forEach(function(t){var a=n(e,r+1,t);y=y.concat(a)}),++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("STAR"===l.selid){var y=[];y=n(e,r+1,a);var N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N[0];if(N.shift(),u=n(l.args,0,u),N=N.concat(u),r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),++C>1e5)throw new Error("Loop brake. Number of iterations = "+C)}return y}if("QUESTION"===l.selid){var y=[];y=y.concat(n(e,r+1,a));var u=n(l.args,0,a);return r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),y}if("WITH"!==l.selid){if("ROOT"===l.selid)return r+1+1>e.length?[a]:n(e,r+1,s);throw new Error("Wrong selector "+l.selid)}var u=n(l.args,0,a);if(0===u.length)return[];var c={status:1,values:u}}else{if(!l.srchid)throw new Error("Selector not found");var c=T.srch[l.srchid.toUpperCase()](a,l.args,i,t)}void 0===c&&(c={status:1,values:[a]});var m=[];if(1===c.status){var x=c.values;if(r+1+1>e.length)m=x;else for(var C=0;C0&&(o&&o[0]&&"PROP"===o[0].srchid&&o[0].args&&o[0].args[0]&&("XML"===o[0].args[0].toUpperCase()?(i.mode="XML",o.shift()):"HTML"===o[0].args[0].toUpperCase()?(i.mode="HTML",o.shift()):"JSON"===o[0].args[0].toUpperCase()&&(i.mode="JSON",o.shift())),o.length>0&&"VALUE"===o[0].srchid&&(i.value=!0,o.shift())),this.from instanceof X.Column){var u=this.from.databaseid||e;s=T.databases[u].tables[this.from.columnid].data}else if(this.from instanceof X.FuncValue&&T.from[this.from.funcid.toUpperCase()]){var c=this.from.args.map(function(e){var r=e.toJS();return new Function("params,alasql","var y;return "+r).bind(this)(t,T)});s=T.from[this.from.funcid.toUpperCase()].apply(this,c)}else if(void 0===this.from)s=T.databases[e].objects;else{var l=new Function("params,alasql","var y;return "+this.from.toJS());s=l(t,T),"object"==typeof Mongo&&"object"!=typeof Mongo.Collection&&s instanceof Mongo.Collection&&(s=s.find().fetch())}if(a=void 0!==o&&o.length>0?n(o,0,s):s,this.into){var h,d;void 0!==this.into.args[0]&&(h=new Function("params,alasql","var y;return "+this.into.args[0].toJS())(t,T)),void 0!==this.into.args[1]&&(d=new Function("params,alasql","var y;return "+this.into.args[1].toJS())(t,T)),a=T.into[this.into.funcid.toUpperCase()](h,d,a,[],r)}else i.value&&a.length>0&&(a=a[0]),r&&(a=r(a));return a}function i(e,t,r,n,a){e.sources.length;e.sourceslen=e.sources.length;var s=e.sourceslen;e.query=e,e.A=n,e.B=a,e.cb=r,e.oldscope=t,e.queriesfn&&(e.sourceslen+=e.queriesfn.length,s+=e.queriesfn.length,e.queriesdata=[],e.queriesfn.forEach(function(t,r){t.query.params=e.params,o([],-r-1,e)}));var i;i=t?_(t):{},e.scope=i;var c;return e.sources.forEach(function(t,r){t.query=e;var n=t.datafn(e,e.params,o,r,T);void 0!==n&&((e.intofn||e.intoallfn)&&Array.isArray(n)&&(n=n.length),c=n),t.queriesdata=e.queriesdata}),0!=e.sources.length&&0!==s||(c=u(e)),c}function o(e,t,r){if(t>=0){var n=r.sources[t];n.data=e,"function"==typeof n.data&&(n.getfn=n.data,n.dontcache=n.getfn.dontcache,"OUTER"!=n.joinmode&&"RIGHT"!=n.joinmode&&"ANTI"!=n.joinmode||(n.dontcache=!1),n.data={})}else r.queriesdata[-t-1]=G(e);if(!(--r.sourceslen>0))return u(r)}function u(e){var t,r=e.scope;z(e),e.data=[],e.xgroups={},e.groups=[];if(h(e,r,0),e.groupfn){if(e.data=[],0===e.groups.length){var n={};e.selectGroup.length>0&&e.selectGroup.forEach(function(e){"COUNT"==e.aggregatorid||"SUM"==e.aggregatorid?n[e.nick]=0:n[e.nick]=void 0}),e.groups=[n]}if(e.aggrKeys.length>0){var a="";e.aggrKeys.forEach(function(e){a+="g['"+e.nick+"']=alasql.aggr['"+e.funcid+"'](undefined,g['"+e.nick+"'],3);"});var s=new Function("g,params,alasql","var y;"+a)}for(var i=0,o=e.groups.length;i0){var g=e.removeKeys;if((t=g.length)>0)for(o=e.data.length,i=0;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return g.forEach(function(r){e.columnid==r&&(t=!0)}),!t}))}if(void 0!==e.removeLikeKeys&&e.removeLikeKeys.length>0){for(var m=e.removeLikeKeys,i=0,o=e.data.length;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return m.forEach(function(r){T.utils.like(r,e.columnid)&&(t=!0)}),!t}))}if(e.pivotfn&&e.pivotfn(),e.unpivotfn&&e.unpivotfn(),e.intoallfn){var S=e.intoallfn(e.columns,e.cb,e.params,e.alasql);return S}if(e.intofn){for(o=e.data.length,i=0;i=e.sources.length)e.wherefn(t,e.params,T)&&(e.groupfn?e.groupfn(t,e.params,T):e.data.push(e.selectfn(t,e.params,T)));else if(e.sources[r].applyselect){var n=e.sources[r];n.applyselect(e.params,function(a){if(a.length>0)for(var s=0;s0){for(var a={},s=Math.min(t.length,T.options.columnlookup||10)-1;0<=s;s--)for(var i in t[s])a[i]=!0;n=Object.keys(a).map(function(e){return{columnid:e}})}else n=[];if("VALUE"===r)if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0],t=t[0][i]}else t=void 0;else if("ROW"===r)if(t.length>0){var i,o=[];for(var i in t[0])o.push(t[0][i]);t=o}else t=void 0;else if("COLUMN"===r){var u=[];if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0)i=n[0].columnid,d=n[1].columnid;else{var f=Object.keys(t[0]);i=f[0],d=f[1]}for(var s=0,c=t.length;s0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0?s.forEach(function(s){r&&"underscore"==T.options.joinstar?a.push("'"+t+"_"+s.columnid+"':p['"+t+"']['"+s.columnid+"']"):r&&"json"==T.options.joinstar?n+="r['"+t+"']['"+s.columnid+"']=p['"+t+"']['"+s.columnid+"'];":a.push("'"+s.columnid+"':p['"+t+"']['"+s.columnid+"']"),e.selectColumns[C(s.columnid)]=!0;var i={columnid:s.columnid,dbtypeid:s.dbtypeid,dbsize:s.dbsize,dbprecision:s.dbprecision,dbenum:s.dbenum};e.columns.push(i),e.xcolumns[i.columnid]=i}):(n+='var w=p["'+t+'"];for(var k in w){r[k]=w[k]};',e.dirtyColumns=!0),{s:a.join(","),sp:n}}function p(e,t){if(Array.isArray(e)){for(var r=[[]],n=0;n",t+="table {border:1px black solid; border-collapse: collapse; border-spacing: 0px;}",t+="td,th {border:1px black solid; padding-left:5px; padding-right:5px}",t+="th {background-color: #EEE}",t+="",t+="";var r=[];for(var n in e[0])r.push(n);t+="#",r.forEach(function(e){t+=" "+e});for(var a=0,s=e.length;a"+(a+1),r.forEach(function(r){t+=" ",e[a][r]==+e[a][r]?(t+='',void 0===e[a][r]?t+="NULL":t+=e[a][r],t+="
"):void 0===e[a][r]?t+="NULL":"string"==typeof e[a][r]?t+=e[a][r]:t+=oe(e[a][r])});t+="
"}else t+=""+oe(e)+"
";return t}function g(e,t,r){if(!(r<=0)){var n=t-e.scrollTop,a=n/r*10;setTimeout(function(){e.scrollTop!==t&&(e.scrollTop=e.scrollTop+a,g(e,t,r-10))},10)}}function m(e,t,r,n,a,s){function i(e){for(var t="",r=0,n=10240;r0&&d[d.length-1]&&0==Object.keys(d[d.length-1]).length&&d.pop(),n&&(d=n(d,a,s))},function(e){throw e})}function S(e){function t(){if(i(/^<\?xml\s*/)){for(var e={attributes:{}};!o()&&!u("?>");){var t=a();if(!t)return e;e.attributes[t.name]=t.value}return i(/\?>\s*/),e}}function r(){var e=i(/^<([\w-:.]+)\s*/);if(e){for(var t={name:e[1],attributes:{},children:[]};!(o()||u(">")||u("?>")||u("/>"));){var s=a();if(!s)return t;t.attributes[s.name]=s.value}if(i(/^\s*\/>\s*/))return t;i(/\??>\s*/),t.content=n();for(var c;c=r();)t.children.push(c);return i(/^<\/[\w-:.]+>\s*/),t}}function n(){var e=i(/^([^<]*)/);return e?e[1]:""}function a(){var e=i(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(e)return{name:e[1],value:s(e[2])}}function s(e){return e.replace(/^['"]|['"]$/g,"")}function i(t){var r=e.match(t);if(r)return e=e.slice(r[0].length),r}function o(){return 0==e.length}function u(t){return 0==e.indexOf(t)}return e=e.trim(),e=e.replace(//g,""),function(){return{declaration:t(),root:r()}}()}var T=function(e,t,r,n){if(t=t||[],"function"!=typeof importScripts&&T.webworker){var a=T.lastid++;return T.buffer[a]=r,void T.webworker.postMessage({id:a,sql:e,params:t})}return 0===arguments.length?new X.Select({columns:[new X.Column({columnid:"*"})],from:[new X.ParamValue({param:0})]}):1===arguments.length&&e.constructor===Array?T.promise(e):("function"==typeof t&&(n=r,r=t,t=[]),"object"!=typeof t&&(t=[t]),"string"==typeof e&&"#"===e[0]&&"object"==typeof document?e=document.querySelector(e).textContent:"object"==typeof e&&e instanceof HTMLElement?e=e.textContent:"function"==typeof e&&(e=e.toString(),e=(/\/\*([\S\s]+)\*\//m.exec(e)||["","Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function."])[1]),T.exec(e,t,r,n))};T.version="0.4.11-develop-977878caundefined",T.debug=void 0;var A=function(){return null},y=function(){function e(){this.yy={}}var t=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r
+//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+"use strict";!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.alasql=t()}(this,function(){function e(e){return"(y="+e+",y===y?y:undefined)"}function t(e,t){return"(y="+e+',typeof y=="undefined"?undefined:'+t+")"}function r(){return!0}function n(){}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")&&parseInt(e.split("msie")[1])}function s(e,t,r){function n(e,r,a){var o,u,c,l=e[r];if(l.selid){if("PATH"===l.selid){for(var h=[{node:a,stack:[]}],d={},f=T.databases[T.useid].objects;h.length>0;){var p=h.shift(),b=p.node,E=p.stack,c=n(l.args,0,b);if(c.length>0){if(r+1+1>e.length)return E;var g=[];return E&&E.length>0&&E.forEach(function(t){g=g.concat(n(e,r+1,t))}),g}void 0===d[b.$id]&&(d[b.$id]=!0,b.$out&&b.$out.length>0&&b.$out.forEach(function(e){var t=f[e],r=E.concat(t);r.push(f[t.$out[0]]),h.push({node:f[t.$out[0]],stack:r})}))}return[]}if("NOT"===l.selid){var u=n(l.args,0,a);return u.length>0?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("DISTINCT"===l.selid){var u;if(u=void 0===l.args||0===l.args.length?P(a):n(l.args,0,a),0===u.length)return[];var m=P(u);return r+1+1>e.length?m:n(e,r+1,m)}if("AND"===l.selid){var m=!0;return l.args.forEach(function(e){m=m&&n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("OR"===l.selid){var m=!1;return l.args.forEach(function(e){m=m||n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("ALL"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("ANY"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?[u[0]]:n(e,r+1,[u[0]])}if("UNIONALL"===l.selid){var u=[];return l.args.forEach(function(e){u=u.concat(n(e,0,a))}),0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("UNION"===l.selid){var u=[];l.args.forEach(function(e){u=u.concat(n(e,0,a))});var u=P(u);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("IF"===l.selid){var u=n(l.args,0,a);return 0===u.length?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("REPEAT"===l.selid){var v,S,A=l.args[0].value;S=l.args[1]?l.args[1].value:A,l.args[2]&&(v=l.args[2].variable);var y=[];if(0===A&&(r+1+1>e.length?y=[a]:(v&&(T.vars[v]=0),y=y.concat(n(e,r+1,a)))),S>0)for(var N=[{value:a,lvl:1}],C=0;N.length>0;){var u=N[0];if(N.shift(),u.lvl<=S){v&&(T.vars[v]=u.lvl);var R=n(l.sels,0,u.value);R.forEach(function(e){N.push({value:e,lvl:u.lvl+1})}),u.lvl>=A&&(r+1+1>e.length?y=y.concat(R):R.forEach(function(t){y=y.concat(n(e,r+1,t))}))}if(++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("OF"===l.selid){if(r+1+1>e.length)return[a];var O=[];return Object.keys(a).forEach(function(t){T.vars[l.args[0].variable]=t,O=O.concat(n(e,r+1,a[t]))}),O}if("TO"===l.selid){var w=T.vars[l.args[0]],I=[];if(I=void 0!==w?w.slice(0):[],I.push(a),r+1+1>e.length)return[a];T.vars[l.args[0]]=I;var O=n(e,r+1,a);return T.vars[l.args[0]]=w,O}if("ARRAY"===l.selid){var u=n(l.args,0,a);return u.length>0?(o=u,r+1+1>e.length?[o]:n(e,r+1,o)):[]}if("SUM"===l.selid){var u=n(l.args,0,a);if(!(u.length>0))return[];var o=u.reduce(function(e,t){return e+t},0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("AVG"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.reduce(function(e,t){return e+t},0)/u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("COUNT"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("FIRST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[0],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("LAST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[u.length-1],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("MIN"===l.selid){if(u=n(l.args,0,a),0===u.length)return[];var o=u.reduce(function(e,t){return Math.min(e,t)},1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("MAX"===l.selid){var u=n(l.args,0,a);if(0===u.length)return[];var o=u.reduce(function(e,t){return Math.max(e,t)},-1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("PLUS"===l.selid){var y=[],N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N.shift();if(u=n(l.args,0,u),N=N.concat(u),r+1+1>e.length?y=y.concat(u):u.forEach(function(t){var a=n(e,r+1,t);y=y.concat(a)}),++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("STAR"===l.selid){var y=[];y=n(e,r+1,a);var N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N[0];if(N.shift(),u=n(l.args,0,u),N=N.concat(u),r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),++C>1e5)throw new Error("Loop brake. Number of iterations = "+C)}return y}if("QUESTION"===l.selid){var y=[];y=y.concat(n(e,r+1,a));var u=n(l.args,0,a);return r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),y}if("WITH"!==l.selid){if("ROOT"===l.selid)return r+1+1>e.length?[a]:n(e,r+1,s);throw new Error("Wrong selector "+l.selid)}var u=n(l.args,0,a);if(0===u.length)return[];var c={status:1,values:u}}else{if(!l.srchid)throw new Error("Selector not found");var c=T.srch[l.srchid.toUpperCase()](a,l.args,i,t)}void 0===c&&(c={status:1,values:[a]});var m=[];if(1===c.status){var x=c.values;if(r+1+1>e.length)m=x;else for(var C=0;C0&&(o&&o[0]&&"PROP"===o[0].srchid&&o[0].args&&o[0].args[0]&&("XML"===o[0].args[0].toUpperCase()?(i.mode="XML",o.shift()):"HTML"===o[0].args[0].toUpperCase()?(i.mode="HTML",o.shift()):"JSON"===o[0].args[0].toUpperCase()&&(i.mode="JSON",o.shift())),o.length>0&&"VALUE"===o[0].srchid&&(i.value=!0,o.shift())),this.from instanceof X.Column){var u=this.from.databaseid||e;s=T.databases[u].tables[this.from.columnid].data}else if(this.from instanceof X.FuncValue&&T.from[this.from.funcid.toUpperCase()]){var c=this.from.args.map(function(e){var r=e.toJS();return new Function("params,alasql","var y;return "+r).bind(this)(t,T)});s=T.from[this.from.funcid.toUpperCase()].apply(this,c)}else if(void 0===this.from)s=T.databases[e].objects;else{var l=new Function("params,alasql","var y;return "+this.from.toJS());s=l(t,T),"object"==typeof Mongo&&"object"!=typeof Mongo.Collection&&s instanceof Mongo.Collection&&(s=s.find().fetch())}if(a=void 0!==o&&o.length>0?n(o,0,s):s,this.into){var h,d;void 0!==this.into.args[0]&&(h=new Function("params,alasql","var y;return "+this.into.args[0].toJS())(t,T)),void 0!==this.into.args[1]&&(d=new Function("params,alasql","var y;return "+this.into.args[1].toJS())(t,T)),a=T.into[this.into.funcid.toUpperCase()](h,d,a,[],r)}else i.value&&a.length>0&&(a=a[0]),r&&(a=r(a));return a}function i(e,t,r,n,a){e.sources.length;e.sourceslen=e.sources.length;var s=e.sourceslen;e.query=e,e.A=n,e.B=a,e.cb=r,e.oldscope=t,e.queriesfn&&(e.sourceslen+=e.queriesfn.length,s+=e.queriesfn.length,e.queriesdata=[],e.queriesfn.forEach(function(t,r){t.query.params=e.params,o([],-r-1,e)}));var i;i=t?_(t):{},e.scope=i;var c;return e.sources.forEach(function(t,r){t.query=e;var n=t.datafn(e,e.params,o,r,T);void 0!==n&&((e.intofn||e.intoallfn)&&Array.isArray(n)&&(n=n.length),c=n),t.queriesdata=e.queriesdata}),0!=e.sources.length&&0!==s||(c=u(e)),c}function o(e,t,r){if(t>=0){var n=r.sources[t];n.data=e,"function"==typeof n.data&&(n.getfn=n.data,n.dontcache=n.getfn.dontcache,"OUTER"!=n.joinmode&&"RIGHT"!=n.joinmode&&"ANTI"!=n.joinmode||(n.dontcache=!1),n.data={})}else r.queriesdata[-t-1]=G(e);if(!(--r.sourceslen>0))return u(r)}function u(e){var t,r=e.scope;z(e),e.data=[],e.xgroups={},e.groups=[];if(h(e,r,0),e.groupfn){if(e.data=[],0===e.groups.length){var n={};e.selectGroup.length>0&&e.selectGroup.forEach(function(e){"COUNT"==e.aggregatorid||"SUM"==e.aggregatorid?n[e.nick]=0:n[e.nick]=void 0}),e.groups=[n]}if(e.aggrKeys.length>0){var a="";e.aggrKeys.forEach(function(e){a+="g['"+e.nick+"']=alasql.aggr['"+e.funcid+"'](undefined,g['"+e.nick+"'],3);"});var s=new Function("g,params,alasql","var y;"+a)}for(var i=0,o=e.groups.length;i0){var g=e.removeKeys;if((t=g.length)>0)for(o=e.data.length,i=0;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return g.forEach(function(r){e.columnid==r&&(t=!0)}),!t}))}if(void 0!==e.removeLikeKeys&&e.removeLikeKeys.length>0){for(var m=e.removeLikeKeys,i=0,o=e.data.length;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return m.forEach(function(r){T.utils.like(r,e.columnid)&&(t=!0)}),!t}))}if(e.pivotfn&&e.pivotfn(),e.unpivotfn&&e.unpivotfn(),e.intoallfn){var S=e.intoallfn(e.columns,e.cb,e.params,e.alasql);return S}if(e.intofn){for(o=e.data.length,i=0;i=e.sources.length)e.wherefn(t,e.params,T)&&(e.groupfn?e.groupfn(t,e.params,T):e.data.push(e.selectfn(t,e.params,T)));else if(e.sources[r].applyselect){var n=e.sources[r];n.applyselect(e.params,function(a){if(a.length>0)for(var s=0;s0){for(var a={},s=Math.min(t.length,T.options.columnlookup||10)-1;0<=s;s--)for(var i in t[s])a[i]=!0;n=Object.keys(a).map(function(e){return{columnid:e}})}else n=[];if("VALUE"===r)if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0],t=t[0][i]}else t=void 0;else if("ROW"===r)if(t.length>0){var i,o=[];for(var i in t[0])o.push(t[0][i]);t=o}else t=void 0;else if("COLUMN"===r){var u=[];if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0)i=n[0].columnid,d=n[1].columnid;else{var f=Object.keys(t[0]);i=f[0],d=f[1]}for(var s=0,c=t.length;s0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0?o.forEach(function(t){if(r&&"underscore"==T.options.joinstar)a.push("'"+i+"_"+t.columnid+"':p['"+i+"']['"+t.columnid+"']");else if(r&&"json"==T.options.joinstar)n+="r['"+i+"']['"+t.columnid+"']=p['"+i+"']['"+t.columnid+"'];";else{var o="p['"+i+"']['"+t.columnid+"']";if(s[t.columnid]){var u=o+" !== undefined ? "+o+" : "+s[t.columnid].value;a[s[t.columnid].id]=s[t.columnid].key+u,s[t.columnid].value=u}else{var c="'"+t.columnid+"':";a.push(c+o),s[t.columnid]={id:a.length-1,value:o,key:c}}}e.selectColumns[C(t.columnid)]=!0;var l={columnid:t.columnid,dbtypeid:t.dbtypeid,dbsize:t.dbsize,dbprecision:t.dbprecision,dbenum:t.dbenum};e.columns.push(l),e.xcolumns[l.columnid]=l}):(n+='var w=p["'+i+'"];for(var k in w){r[k]=w[k]};',e.dirtyColumns=!0)}return console.log(a.join(",")),{s:a.join(","),sp:n}}function p(e,t){if(Array.isArray(e)){for(var r=[[]],n=0;n",t+="table {border:1px black solid; border-collapse: collapse; border-spacing: 0px;}",t+="td,th {border:1px black solid; padding-left:5px; padding-right:5px}",t+="th {background-color: #EEE}",t+="",t+="";var r=[];for(var n in e[0])r.push(n);t+="#",r.forEach(function(e){t+=" "+e});for(var a=0,s=e.length;a"+(a+1),r.forEach(function(r){t+=" ",e[a][r]==+e[a][r]?(t+='',void 0===e[a][r]?t+="NULL":t+=e[a][r],t+="
"):void 0===e[a][r]?t+="NULL":"string"==typeof e[a][r]?t+=e[a][r]:t+=oe(e[a][r])});t+="
"}else t+=""+oe(e)+"
";return t}function g(e,t,r){if(!(r<=0)){var n=t-e.scrollTop,a=n/r*10;setTimeout(function(){e.scrollTop!==t&&(e.scrollTop=e.scrollTop+a,g(e,t,r-10))},10)}}function m(e,t,r,n,a,s){function i(e){for(var t="",r=0,n=10240;r0&&d[d.length-1]&&0==Object.keys(d[d.length-1]).length&&d.pop(),n&&(d=n(d,a,s))},function(e){throw e})}function S(e){function t(){if(i(/^<\?xml\s*/)){for(var e={attributes:{}};!o()&&!u("?>");){var t=a();if(!t)return e;e.attributes[t.name]=t.value}return i(/\?>\s*/),e}}function r(){var e=i(/^<([\w-:.]+)\s*/);if(e){for(var t={name:e[1],attributes:{},children:[]};!(o()||u(">")||u("?>")||u("/>"));){var s=a();if(!s)return t;t.attributes[s.name]=s.value}if(i(/^\s*\/>\s*/))return t;i(/\??>\s*/),t.content=n();for(var c;c=r();)t.children.push(c);return i(/^<\/[\w-:.]+>\s*/),t}}function n(){var e=i(/^([^<]*)/);return e?e[1]:""}function a(){var e=i(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(e)return{name:e[1],value:s(e[2])}}function s(e){return e.replace(/^['"]|['"]$/g,"")}function i(t){var r=e.match(t);if(r)return e=e.slice(r[0].length),r}function o(){return 0==e.length}function u(t){return 0==e.indexOf(t)}return e=e.trim(),e=e.replace(//g,""),function(){return{declaration:t(),root:r()}}()}var T=function(e,t,r,n){if(t=t||[],"function"!=typeof importScripts&&T.webworker){var a=T.lastid++;return T.buffer[a]=r,void T.webworker.postMessage({id:a,sql:e,params:t})}return 0===arguments.length?new X.Select({columns:[new X.Column({columnid:"*"})],from:[new X.ParamValue({param:0})]}):1===arguments.length&&e.constructor===Array?T.promise(e):("function"==typeof t&&(n=r,r=t,t=[]),"object"!=typeof t&&(t=[t]),"string"==typeof e&&"#"===e[0]&&"object"==typeof document?e=document.querySelector(e).textContent:"object"==typeof e&&e instanceof HTMLElement?e=e.textContent:"function"==typeof e&&(e=e.toString(),e=(/\/\*([\S\s]+)\*\//m.exec(e)||["","Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function."])[1]),T.exec(e,t,r,n))};T.version="0.4.11-develop-7d0ef547undefined",T.debug=void 0;var A=function(){return null},y=function(){function e(){this.yy={}}var t=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r
},r=[2,13],n=[1,104],a=[1,102],s=[1,103],i=[1,6],o=[1,42],u=[1,79],c=[1,76],l=[1,94],h=[1,93],d=[1,69],f=[1,101],p=[1,85],b=[1,64],E=[1,71],g=[1,84],m=[1,66],v=[1,70],S=[1,68],A=[1,61],y=[1,74],N=[1,62],C=[1,67],R=[1,83],w=[1,77],I=[1,86],x=[1,87],D=[1,81],k=[1,82],L=[1,80],$=[1,88],M=[1,89],U=[1,90],_=[1,91],F=[1,92],P=[1,98],q=[1,65],G=[1,78],V=[1,72],B=[1,96],j=[1,97],H=[1,63],J=[1,73],Y=[1,108],W=[1,107],X=[10,306,602,764],K=[10,306,310,602,764],Q=[1,115],z=[1,116],Z=[1,117],ee=[1,118],te=[1,119],re=[130,353,410],ne=[1,127],ae=[1,126],se=[1,134],ie=[1,164],oe=[1,175],ue=[1,178],ce=[1,173],le=[1,181],he=[1,185],de=[1,160],fe=[1,182],pe=[1,169],be=[1,171],Ee=[1,174],ge=[1,183],me=[1,166],ve=[1,193],Se=[1,188],Te=[1,189],Ae=[1,194],ye=[1,195],Ne=[1,196],Ce=[1,197],Re=[1,198],Oe=[1,199],we=[1,200],Ie=[1,201],xe=[1,202],De=[1,176],ke=[1,177],Le=[1,179],$e=[1,180],Me=[1,186],Ue=[1,192],_e=[1,184],Fe=[1,187],Pe=[1,172],qe=[1,170],Ge=[1,191],Ve=[1,203],Be=[2,4,5],je=[2,471],He=[1,206],Je=[1,211],Ye=[1,220],We=[1,216],Xe=[10,72,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],Ke=[2,4,5,10,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],Qe=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ze=[1,249],Ze=[1,256],et=[1,265],tt=[1,270],rt=[1,269],nt=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,168,169,179,180,181,183,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],at=[2,162],st=[1,281],it=[10,74,78,306,310,505,602,764],ot=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,193,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,302,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,344,356,368,369,370,373,374,386,389,396,400,401,402,403,404,405,406,408,409,417,418,420,424,426,433,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,514,515,516,517,602,764],ut=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],ct=[1,562],lt=[1,564],ht=[2,503],dt=[1,569],ft=[1,580],pt=[1,583],bt=[1,584],Et=[10,78,89,132,137,146,189,296,306,310,470,602,764],gt=[10,74,306,310,602,764],mt=[2,567],vt=[1,602],St=[2,4,5,156],Tt=[1,640],At=[1,612],yt=[1,646],Nt=[1,647],Ct=[1,620],Rt=[1,631],Ot=[1,618],wt=[1,626],It=[1,619],xt=[1,627],Dt=[1,629],kt=[1,621],Lt=[1,622],$t=[1,641],Mt=[1,638],Ut=[1,639],_t=[1,615],Ft=[1,617],Pt=[1,609],qt=[1,610],Gt=[1,611],Vt=[1,613],Bt=[1,614],jt=[1,616],Ht=[1,623],Jt=[1,624],Yt=[1,628],Wt=[1,630],Xt=[1,632],Kt=[1,633],Qt=[1,634],zt=[1,635],Zt=[1,636],er=[1,642],tr=[1,643],rr=[1,644],nr=[1,645],ar=[2,287],sr=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ir=[2,359],or=[1,668],ur=[1,678],cr=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],lr=[1,694],hr=[1,703],dr=[1,702],fr=[2,4,5,10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],pr=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],br=[2,202],Er=[1,725],gr=[10,72,78,93,98,118,128,162,168,169,183,232,245,247,306,310,602,764],mr=[2,163],vr=[1,728],Sr=[2,4,5,112],Tr=[1,741],Ar=[1,760],yr=[1,740],Nr=[1,739],Cr=[1,734],Rr=[1,735],Or=[1,737],wr=[1,738],Ir=[1,742],xr=[1,743],Dr=[1,744],kr=[1,745],Lr=[1,746],$r=[1,747],Mr=[1,748],Ur=[1,749],_r=[1,750],Fr=[1,751],Pr=[1,752],qr=[1,753],Gr=[1,754],Vr=[1,755],Br=[1,756],jr=[1,757],Hr=[1,759],Jr=[1,761],Yr=[1,762],Wr=[1,763],Xr=[1,764],Kr=[1,765],Qr=[1,766],zr=[1,767],Zr=[1,770],en=[1,771],tn=[1,772],rn=[1,773],nn=[1,774],an=[1,775],sn=[1,776],on=[1,777],un=[1,778],cn=[1,779],ln=[1,780],hn=[1,781],dn=[74,89,189],fn=[10,74,78,154,187,230,297,306,310,343,356,368,369,373,374,602,764],pn=[1,798],bn=[10,74,78,300,306,310,602,764],En=[1,799],gn=[1,805],mn=[1,806],vn=[1,810],Sn=[10,74,78,306,310,602,764],Tn=[2,4,5,77,131,132,137,143,145,149,152,154,156,179,180,181,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,312,317,420,424],An=[10,72,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],yn=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],Nn=[2,4,5,132,296],Cn=[1,844],Rn=[10,74,76,78,306,310,602,764],On=[2,738],wn=[10,74,76,78,132,139,141,145,152,306,310,420,424,602,764],In=[2,1161],xn=[10,74,76,78,139,141,145,152,306,310,420,424,602,764],Dn=[10,74,76,78,139,141,145,306,310,420,424,602,764],kn=[10,74,78,139,141,306,310,602,764],Ln=[10,78,89,132,146,189,296,306,310,470,602,764],$n=[335,338,339],Mn=[2,764],Un=[1,869],_n=[1,870],Fn=[1,871],Pn=[1,872],qn=[1,881],Gn=[1,880],Vn=[164,166,334],Bn=[2,444],jn=[1,936],Hn=[2,4,5,77,131,156,290,291,292,293],Jn=[1,951],Yn=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Wn=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Xn=[2,375],Kn=[1,958],Qn=[306,308,310],zn=[74,300],Zn=[74,300,426],ea=[1,965],ta=[2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ra=[74,426],na=[1,978],aa=[1,977],sa=[1,984],ia=[10,72,78,93,98,118,128,162,168,169,232,245,247,306,310,602,764],oa=[1,1010],ua=[10,72,78,306,310,602,764],ca=[1,1016],la=[1,1017],ha=[1,1018],da=[2,4,5,10,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],fa=[1,1068],pa=[1,1067],ba=[1,1081],Ea=[1,1080],ga=[1,1088],ma=[10,72,74,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],va=[1,1119],Sa=[10,78,89,146,189,306,310,470,602,764],Ta=[1,1139],Aa=[1,1138],ya=[1,1137],Na=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ca=[1,1153],Ra=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Oa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],wa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ia=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],xa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Da=[2,406],ka=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],La=[2,285],$a=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ma=[10,78,306,310,602,764],Ua=[1,1189],_a=[10,77,78,143,145,152,181,302,306,310,420,424,602,764],Fa=[10,74,78,306,308,310,464,602,764],Pa=[1,1200],qa=[10,72,78,118,128,162,168,169,232,245,247,306,310,602,764],Ga=[10,72,74,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],Va=[2,4,5,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],Ba=[2,4,5,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],ja=[2,1085],Ha=[2,4,5,72,74,76,77,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],Ja=[1,1252],Ya=[10,74,78,128,306,308,310,464,602,764],Wa=[115,116,124],Xa=[2,584],Ka=[1,1280],Qa=[76,139],za=[2,724],Za=[1,1297],es=[1,1298],ts=[2,4,5,10,53,72,76,89,124,146,156,189,230,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],rs=[2,330],ns=[1,1322],as=[1,1336],ss=[1,1338],is=[2,487],os=[74,78],us=[10,306,308,310,464,602,764],cs=[10,72,78,118,162,168,169,232,245,247,306,310,602,764],ls=[1,1354],hs=[1,1358],ds=[1,1359],fs=[1,1361],ps=[1,1362],bs=[1,1363],Es=[1,1364],gs=[1,1365],ms=[1,1366],vs=[1,1367],Ss=[1,1368],Ts=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],As=[1,1393],ys=[10,72,78,118,162,168,169,245,247,306,310,602,764],Ns=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],Cs=[1,1490],Rs=[1,1492],Os=[2,4,5,77,143,145,152,156,181,290,291,292,293,302,420,424],ws=[1,1506],Is=[10,72,74,78,162,168,169,245,247,306,310,602,764],xs=[1,1524],Ds=[1,1526],ks=[1,1527],Ls=[1,1523],$s=[1,1522],Ms=[1,1521],Us=[1,1528],_s=[1,1518],Fs=[1,1519],Ps=[1,1520],qs=[1,1545],Gs=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],Vs=[1,1556],Bs=[1,1564],js=[1,1563],Hs=[10,72,78,162,168,169,245,247,306,310,602,764],Js=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],Ys=[2,4,5,10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],Ws=[1,1621],Xs=[1,1623],Ks=[1,1620],Qs=[1,1622],zs=[187,193,368,369,370,373],Zs=[2,515],ei=[1,1628],ti=[1,1647],ri=[10,72,78,162,168,169,306,310,602,764],ni=[1,1657],ai=[1,1658],si=[1,1659],ii=[1,1678],oi=[4,10,243,306,310,343,356,602,764],ui=[1,1726],ci=[10,72,74,78,118,162,168,169,239,245,247,306,310,602,764],li=[2,4,5,77],hi=[1,1820],di=[1,1832],fi=[1,1851],pi=[10,72,78,162,168,169,306,310,415,602,764],bi=[10,74,78,230,306,310,602,764],Ei={trace:function(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,NonReserved:6,LiteralWithSpaces:7,main:8,Statements:9,EOF:10,Statements_group0:11,AStatement:12,ExplainStatement:13,EXPLAIN:14,QUERY:15,PLAN:16,Statement:17,AlterTable:18,AttachDatabase:19,Call:20,CreateDatabase:21,CreateIndex:22,CreateGraph:23,CreateTable:24,CreateView:25,CreateEdge:26,CreateVertex:27,Declare:28,Delete:29,DetachDatabase:30,DropDatabase:31,DropIndex:32,DropTable:33,DropView:34,If:35,Insert:36,Merge:37,Reindex:38,RenameTable:39,Select:40,ShowCreateTable:41,ShowColumns:42,ShowDatabases:43,ShowIndex:44,ShowTables:45,TruncateTable:46,WithSelect:47,CreateTrigger:48,DropTrigger:49,BeginTransaction:50,CommitTransaction:51,RollbackTransaction:52,EndTransaction:53,UseDatabase:54,Update:55,JavaScript:56,Source:57,Assert:58,While:59,Continue:60,Break:61,BeginEnd:62,Print:63,Require:64,SetVariable:65,ExpressionStatement:66,AddRule:67,Query:68,Echo:69,CreateFunction:70,CreateAggregate:71,WITH:72,WithTablesList:73,COMMA:74,WithTable:75,AS:76,LPAR:77,RPAR:78,SelectClause:79,Select_option0:80,IntoClause:81,FromClause:82,Select_option1:83,WhereClause:84,GroupClause:85,OrderClause:86,LimitClause:87,UnionClause:88,SEARCH:89,Select_repetition0:90,Select_option2:91,PivotClause:92,PIVOT:93,Expression:94,FOR:95,PivotClause_option0:96,PivotClause_option1:97,UNPIVOT:98,IN:99,ColumnsList:100,PivotClause_option2:101,PivotClause2:102,AsList:103,AsLiteral:104,AsPart:105,RemoveClause:106,REMOVE:107,RemoveClause_option0:108,RemoveColumnsList:109,RemoveColumn:110,Column:111,LIKE:112,StringValue:113,ArrowDot:114,ARROW:115,DOT:116,SearchSelector:117,ORDER:118,BY:119,OrderExpressionsList:120,SearchSelector_option0:121,DOTDOT:122,CARET:123,EQ:124,SearchSelector_repetition_plus0:125,SearchSelector_repetition_plus1:126,SearchSelector_option1:127,WHERE:128,OF:129,CLASS:130,NUMBER:131,STRING:132,SLASH:133,VERTEX:134,EDGE:135,EXCLAMATION:136,SHARP:137,MODULO:138,GT:139,LT:140,GTGT:141,LTLT:142,DOLLAR:143,Json:144,AT:145,SET:146,SetColumnsList:147,TO:148,VALUE:149,ROW:150,ExprList:151,COLON:152,PlusStar:153,NOT:154,SearchSelector_repetition2:155,IF:156,SearchSelector_repetition3:157,Aggregator:158,SearchSelector_repetition4:159,SearchSelector_group0:160,SearchSelector_repetition5:161,UNION:162,SearchSelectorList:163,ALL:164,SearchSelector_repetition6:165,ANY:166,SearchSelector_repetition7:167,INTERSECT:168,EXCEPT:169,AND:170,OR:171,PATH:172,RETURN:173,ResultColumns:174,REPEAT:175,SearchSelector_repetition8:176,SearchSelectorList_repetition0:177,SearchSelectorList_repetition1:178,PLUS:179,STAR:180,QUESTION:181,SearchFrom:182,FROM:183,SelectModifier:184,DISTINCT:185,TopClause:186,UNIQUE:187,SelectClause_option0:188,SELECT:189,COLUMN:190,MATRIX:191,TEXTSTRING:192,INDEX:193,RECORDSET:194,TOP:195,NumValue:196,TopClause_option0:197,INTO:198,Table:199,FuncValue:200,ParamValue:201,VarValue:202,FromTablesList:203,JoinTablesList:204,ApplyClause:205,CROSS:206,APPLY:207,OUTER:208,FromTable:209,FromTable_option0:210,FromTable_option1:211,INDEXED:212,INSERTED:213,FromString:214,JoinTable:215,JoinMode:216,JoinTableAs:217,OnClause:218,JoinTableAs_option0:219,JoinTableAs_option1:220,JoinModeMode:221,NATURAL:222,JOIN:223,INNER:224,LEFT:225,RIGHT:226,FULL:227,SEMI:228,ANTI:229,ON:230,USING:231,GROUP:232,GroupExpressionsList:233,HavingClause:234,GroupExpression:235,GROUPING:236,ROLLUP:237,CUBE:238,HAVING:239,CORRESPONDING:240,OrderExpression:241,DIRECTION:242,COLLATE:243,NOCASE:244,LIMIT:245,OffsetClause:246,OFFSET:247,LimitClause_option0:248,FETCH:249,LimitClause_option1:250,LimitClause_option2:251,LimitClause_option3:252,ResultColumn:253,Star:254,AggrValue:255,Op:256,LogicValue:257,NullValue:258,ExistsValue:259,CaseValue:260,CastClause:261,ArrayValue:262,NewClause:263,Expression_group0:264,CURRENT_TIMESTAMP:265,JAVASCRIPT:266,CREATE:267,FUNCTION:268,AGGREGATE:269,NEW:270,CAST:271,ColumnType:272,CONVERT:273,PrimitiveValue:274,OverClause:275,OVER:276,OverPartitionClause:277,OverOrderByClause:278,PARTITION:279,SUM:280,COUNT:281,MIN:282,MAX:283,AVG:284,FIRST:285,LAST:286,AGGR:287,ARRAY:288,FuncValue_option0:289,REPLACE:290,DATEADD:291,DATEDIFF:292,INTERVAL:293,TRUE:294,FALSE:295,NSTRING:296,NULL:297,EXISTS:298,ARRAYLBRA:299,RBRA:300,ParamValue_group0:301,BRAQUESTION:302,CASE:303,WhensList:304,ElseClause:305,END:306,When:307,WHEN:308,THEN:309,ELSE:310,REGEXP:311,TILDA:312,GLOB:313,ESCAPE:314,NOT_LIKE:315,BARBAR:316,MINUS:317,AMPERSAND:318,BAR:319,GE:320,LE:321,EQEQ:322,EQEQEQ:323,NE:324,NEEQEQ:325,NEEQEQEQ:326,CondOp:327,AllSome:328,ColFunc:329,BETWEEN:330,NOT_BETWEEN:331,IS:332,DOUBLECOLON:333,SOME:334,UPDATE:335,SetColumn:336,SetColumn_group0:337,DELETE:338,INSERT:339,Into:340,Values:341,ValuesListsList:342,DEFAULT:343,VALUES:344,ValuesList:345,Value:346,DateValue:347,TemporaryClause:348,TableClass:349,IfNotExists:350,CreateTableDefClause:351,CreateTableOptionsClause:352,TABLE:353,CreateTableOptions:354,CreateTableOption:355,IDENTITY:356,TEMP:357,ColumnDefsList:358,ConstraintsList:359,Constraint:360,ConstraintName:361,PrimaryKey:362,ForeignKey:363,UniqueKey:364,IndexKey:365,Check:366,CONSTRAINT:367,CHECK:368,PRIMARY:369,KEY:370,PrimaryKey_option0:371,ColsList:372,FOREIGN:373,REFERENCES:374,ForeignKey_option0:375,OnForeignKeyClause:376,ParColsList:377,OnDeleteClause:378,OnUpdateClause:379,NO:380,ACTION:381,UniqueKey_option0:382,UniqueKey_option1:383,ColumnDef:384,ColumnConstraintsClause:385,ColumnConstraints:386,SingularColumnType:387,NumberMax:388,ENUM:389,MAXNUM:390,ColumnConstraintsList:391,ColumnConstraint:392,ParLiteral:393,ColumnConstraint_option0:394,ColumnConstraint_option1:395,DROP:396,DropTable_group0:397,IfExists:398,TablesList:399,ALTER:400,RENAME:401,ADD:402,MODIFY:403,ATTACH:404,DATABASE:405,DETACH:406,AsClause:407,USE:408,SHOW:409,VIEW:410,CreateView_option0:411,CreateView_option1:412,SubqueryRestriction:413,READ:414,ONLY:415,OPTION:416,SOURCE:417,ASSERT:418,JsonObject:419,ATLBRA:420,JsonArray:421,JsonValue:422,JsonPrimitiveValue:423,LCUR:424,JsonPropertiesList:425,RCUR:426,JsonElementsList:427,JsonProperty:428,OnOff:429,SetPropsList:430,AtDollar:431,SetProp:432,OFF:433,COMMIT:434,TRANSACTION:435,ROLLBACK:436,BEGIN:437,ElseStatement:438,WHILE:439,CONTINUE:440,BREAK:441,PRINT:442,REQUIRE:443,StringValuesList:444,PluginsList:445,Plugin:446,ECHO:447,DECLARE:448,DeclaresList:449,DeclareItem:450,TRUNCATE:451,MERGE:452,MergeInto:453,MergeUsing:454,MergeOn:455,MergeMatchedList:456,OutputClause:457,MergeMatched:458,MergeNotMatched:459,MATCHED:460,MergeMatchedAction:461,MergeNotMatchedAction:462,TARGET:463,OUTPUT:464,CreateVertex_option0:465,CreateVertex_option1:466,CreateVertex_option2:467,CreateVertexSet:468,SharpValue:469,CONTENT:470,CreateEdge_option0:471,GRAPH:472,GraphList:473,GraphVertexEdge:474,GraphElement:475,GraphVertexEdge_option0:476,GraphVertexEdge_option1:477,GraphElementVar:478,GraphVertexEdge_option2:479,GraphVertexEdge_option3:480,GraphVertexEdge_option4:481,GraphVar:482,GraphAsClause:483,GraphAtClause:484,GraphElement2:485,GraphElement2_option0:486,GraphElement2_option1:487,GraphElement2_option2:488,GraphElement2_option3:489,GraphElement_option0:490,GraphElement_option1:491,GraphElement_option2:492,SharpLiteral:493,GraphElement_option3:494,GraphElement_option4:495,GraphElement_option5:496,ColonLiteral:497,DeleteVertex:498,DeleteVertex_option0:499,DeleteEdge:500,DeleteEdge_option0:501,DeleteEdge_option1:502,DeleteEdge_option2:503,Term:504,COLONDASH:505,TermsList:506,QUESTIONDASH:507,CALL:508,TRIGGER:509,BeforeAfter:510,InsertDeleteUpdate:511,CreateTrigger_option0:512,CreateTrigger_option1:513,BEFORE:514,AFTER:515,INSTEAD:516,REINDEX:517,A:518,ABSENT:519,ABSOLUTE:520,ACCORDING:521,ADA:522,ADMIN:523,ALWAYS:524,ASC:525,ASSERTION:526,ASSIGNMENT:527,ATTRIBUTE:528,ATTRIBUTES:529,BASE64:530,BERNOULLI:531,BLOCKED:532,BOM:533,BREADTH:534,C:535,CASCADE:536,CATALOG:537,CATALOG_NAME:538,CHAIN:539,CHARACTERISTICS:540,CHARACTERS:541,CHARACTER_SET_CATALOG:542,CHARACTER_SET_NAME:543,CHARACTER_SET_SCHEMA:544,CLASS_ORIGIN:545,COBOL:546,COLLATION:547,COLLATION_CATALOG:548,COLLATION_NAME:549,COLLATION_SCHEMA:550,COLUMNS:551,COLUMN_NAME:552,COMMAND_FUNCTION:553,COMMAND_FUNCTION_CODE:554,COMMITTED:555,CONDITION_NUMBER:556,CONNECTION:557,CONNECTION_NAME:558,CONSTRAINTS:559,CONSTRAINT_CATALOG:560,CONSTRAINT_NAME:561,CONSTRAINT_SCHEMA:562,CONSTRUCTOR:563,CONTROL:564,CURSOR_NAME:565,DATA:566,DATETIME_INTERVAL_CODE:567,DATETIME_INTERVAL_PRECISION:568,DB:569,DEFAULTS:570,DEFERRABLE:571,DEFERRED:572,DEFINED:573,DEFINER:574,DEGREE:575,DEPTH:576,DERIVED:577,DESC:578,DESCRIPTOR:579,DIAGNOSTICS:580,DISPATCH:581,DOCUMENT:582,DOMAIN:583,DYNAMIC_FUNCTION:584,DYNAMIC_FUNCTION_CODE:585,EMPTY:586,ENCODING:587,ENFORCED:588,EXCLUDE:589,EXCLUDING:590,EXPRESSION:591,FILE:592,FINAL:593,FLAG:594,FOLLOWING:595,FORTRAN:596,FOUND:597,FS:598,G:599,GENERAL:600,GENERATED:601,GO:602,GOTO:603,GRANTED:604,HEX:605,HIERARCHY:606,ID:607,IGNORE:608,IMMEDIATE:609,IMMEDIATELY:610,IMPLEMENTATION:611,INCLUDING:612,INCREMENT:613,INDENT:614,INITIALLY:615,INPUT:616,INSTANCE:617,INSTANTIABLE:618,INTEGRITY:619,INVOKER:620,ISOLATION:621,K:622,KEY_MEMBER:623,KEY_TYPE:624,LENGTH:625,LEVEL:626,LIBRARY:627,LINK:628,LOCATION:629,LOCATOR:630,M:631,MAP:632,MAPPING:633,MAXVALUE:634,MESSAGE_LENGTH:635,MESSAGE_OCTET_LENGTH:636,MESSAGE_TEXT:637,MINVALUE:638,MORE:639,MUMPS:640,NAME:641,NAMES:642,NAMESPACE:643,NESTING:644,NEXT:645,NFC:646,NFD:647,NFKC:648,NFKD:649,NIL:650,NORMALIZED:651,NULLABLE:652,NULLS:653,OBJECT:654,OCTETS:655,OPTIONS:656,ORDERING:657,ORDINALITY:658,OTHERS:659,OVERRIDING:660,P:661,PAD:662,PARAMETER_MODE:663,PARAMETER_NAME:664,PARAMETER_ORDINAL_POSITION:665,PARAMETER_SPECIFIC_CATALOG:666,PARAMETER_SPECIFIC_NAME:667,PARAMETER_SPECIFIC_SCHEMA:668,PARTIAL:669,PASCAL:670,PASSING:671,PASSTHROUGH:672,PERMISSION:673,PLACING:674,PLI:675,PRECEDING:676,PRESERVE:677,PRIOR:678,PRIVILEGES:679,PUBLIC:680,RECOVERY:681,RELATIVE:682,REPEATABLE:683,REQUIRING:684,RESPECT:685,RESTART:686,RESTORE:687,RESTRICT:688,RETURNED_CARDINALITY:689,RETURNED_LENGTH:690,RETURNED_OCTET_LENGTH:691,RETURNED_SQLSTATE:692,RETURNING:693,ROLE:694,ROUTINE:695,ROUTINE_CATALOG:696,ROUTINE_NAME:697,ROUTINE_SCHEMA:698,ROW_COUNT:699,SCALE:700,SCHEMA:701,SCHEMA_NAME:702,SCOPE_CATALOG:703,SCOPE_NAME:704,SCOPE_SCHEMA:705,SECTION:706,SECURITY:707,SELECTIVE:708,SELF:709,SEQUENCE:710,SERIALIZABLE:711,SERVER:712,SERVER_NAME:713,SESSION:714,SETS:715,SIMPLE:716,SIZE:717,SPACE:718,SPECIFIC_NAME:719,STANDALONE:720,STATE:721,STATEMENT:722,STRIP:723,STRUCTURE:724,STYLE:725,SUBCLASS_ORIGIN:726,T:727,TABLE_NAME:728,TEMPORARY:729,TIES:730,TOKEN:731,TOP_LEVEL_COUNT:732,TRANSACTIONS_COMMITTED:733,TRANSACTIONS_ROLLED_BACK:734,TRANSACTION_ACTIVE:735,TRANSFORM:736,TRANSFORMS:737,TRIGGER_CATALOG:738,TRIGGER_NAME:739,TRIGGER_SCHEMA:740,TYPE:741,UNBOUNDED:742,UNCOMMITTED:743,UNDER:744,UNLINK:745,UNNAMED:746,UNTYPED:747,URI:748,USAGE:749,USER_DEFINED_TYPE_CATALOG:750,USER_DEFINED_TYPE_CODE:751,USER_DEFINED_TYPE_NAME:752,USER_DEFINED_TYPE_SCHEMA:753,VALID:754,VERSION:755,WHITESPACE:756,WORK:757,WRAPPER:758,WRITE:759,XMLDECLARATION:760,XMLSCHEMA:761,YES:762,ZONE:763,SEMICOLON:764,PERCENT:765,ROWS:766,FuncValue_option0_group0:767,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",10:"EOF",14:"EXPLAIN",15:"QUERY",16:"PLAN",53:"EndTransaction",72:"WITH",74:"COMMA",76:"AS",77:"LPAR",78:"RPAR",89:"SEARCH",93:"PIVOT",95:"FOR",98:"UNPIVOT",99:"IN",107:"REMOVE",112:"LIKE",115:"ARROW",116:"DOT",118:"ORDER",119:"BY",122:"DOTDOT",123:"CARET",124:"EQ",128:"WHERE",129:"OF",130:"CLASS",131:"NUMBER",132:"STRING",133:"SLASH",134:"VERTEX",135:"EDGE",136:"EXCLAMATION",137:"SHARP",138:"MODULO",139:"GT",140:"LT",141:"GTGT",142:"LTLT",143:"DOLLAR",145:"AT",146:"SET",148:"TO",149:"VALUE",150:"ROW",152:"COLON",154:"NOT",156:"IF",162:"UNION",164:"ALL",166:"ANY",168:"INTERSECT",169:"EXCEPT",170:"AND",171:"OR",172:"PATH",173:"RETURN",175:"REPEAT",179:"PLUS",180:"STAR",181:"QUESTION",183:"FROM",185:"DISTINCT",187:"UNIQUE",189:"SELECT",190:"COLUMN",191:"MATRIX",192:"TEXTSTRING",193:"INDEX",194:"RECORDSET",195:"TOP",198:"INTO",206:"CROSS",207:"APPLY",208:"OUTER",212:"INDEXED",213:"INSERTED",222:"NATURAL",223:"JOIN",224:"INNER",225:"LEFT",226:"RIGHT",227:"FULL",228:"SEMI",229:"ANTI",230:"ON",231:"USING",232:"GROUP",236:"GROUPING",237:"ROLLUP",238:"CUBE",239:"HAVING",240:"CORRESPONDING",242:"DIRECTION",243:"COLLATE",244:"NOCASE",245:"LIMIT",247:"OFFSET",249:"FETCH",265:"CURRENT_TIMESTAMP",266:"JAVASCRIPT",267:"CREATE",268:"FUNCTION",269:"AGGREGATE",270:"NEW",271:"CAST",273:"CONVERT",276:"OVER",279:"PARTITION",280:"SUM",281:"COUNT",282:"MIN",283:"MAX",284:"AVG",285:"FIRST",286:"LAST",287:"AGGR",288:"ARRAY",290:"REPLACE",291:"DATEADD",292:"DATEDIFF",293:"INTERVAL",294:"TRUE",295:"FALSE",296:"NSTRING",297:"NULL",298:"EXISTS",299:"ARRAYLBRA",300:"RBRA",302:"BRAQUESTION",303:"CASE",306:"END",308:"WHEN",309:"THEN",310:"ELSE",311:"REGEXP",312:"TILDA",313:"GLOB",314:"ESCAPE",315:"NOT_LIKE",316:"BARBAR",317:"MINUS",318:"AMPERSAND",319:"BAR",320:"GE",321:"LE",322:"EQEQ",323:"EQEQEQ",324:"NE",325:"NEEQEQ",326:"NEEQEQEQ",330:"BETWEEN",331:"NOT_BETWEEN",332:"IS",333:"DOUBLECOLON",334:"SOME",335:"UPDATE",338:"DELETE",339:"INSERT",343:"DEFAULT",344:"VALUES",347:"DateValue",353:"TABLE",356:"IDENTITY",357:"TEMP",367:"CONSTRAINT",368:"CHECK",369:"PRIMARY",370:"KEY",373:"FOREIGN",374:"REFERENCES",380:"NO",381:"ACTION",386:"ColumnConstraints",389:"ENUM",390:"MAXNUM",396:"DROP",400:"ALTER",401:"RENAME",402:"ADD",403:"MODIFY",404:"ATTACH",405:"DATABASE",406:"DETACH",408:"USE",409:"SHOW",410:"VIEW",414:"READ",415:"ONLY",416:"OPTION",417:"SOURCE",418:"ASSERT",420:"ATLBRA",424:"LCUR",426:"RCUR",433:"OFF",434:"COMMIT",435:"TRANSACTION",436:"ROLLBACK",437:"BEGIN",439:"WHILE",440:"CONTINUE",441:"BREAK",442:"PRINT",443:"REQUIRE",447:"ECHO",448:"DECLARE",451:"TRUNCATE",452:"MERGE",460:"MATCHED",463:"TARGET",464:"OUTPUT",470:"CONTENT",472:"GRAPH",505:"COLONDASH",507:"QUESTIONDASH",508:"CALL",509:"TRIGGER",514:"BEFORE",515:"AFTER",516:"INSTEAD",517:"REINDEX",518:"A",519:"ABSENT",520:"ABSOLUTE",521:"ACCORDING",522:"ADA",523:"ADMIN",524:"ALWAYS",525:"ASC",526:"ASSERTION",527:"ASSIGNMENT",528:"ATTRIBUTE",529:"ATTRIBUTES",530:"BASE64",531:"BERNOULLI",532:"BLOCKED",533:"BOM",534:"BREADTH",535:"C",536:"CASCADE",537:"CATALOG",538:"CATALOG_NAME",539:"CHAIN",540:"CHARACTERISTICS",541:"CHARACTERS",542:"CHARACTER_SET_CATALOG",543:"CHARACTER_SET_NAME",544:"CHARACTER_SET_SCHEMA",545:"CLASS_ORIGIN",546:"COBOL",547:"COLLATION",548:"COLLATION_CATALOG",549:"COLLATION_NAME",550:"COLLATION_SCHEMA",551:"COLUMNS",552:"COLUMN_NAME",
553:"COMMAND_FUNCTION",554:"COMMAND_FUNCTION_CODE",555:"COMMITTED",556:"CONDITION_NUMBER",557:"CONNECTION",558:"CONNECTION_NAME",559:"CONSTRAINTS",560:"CONSTRAINT_CATALOG",561:"CONSTRAINT_NAME",562:"CONSTRAINT_SCHEMA",563:"CONSTRUCTOR",564:"CONTROL",565:"CURSOR_NAME",566:"DATA",567:"DATETIME_INTERVAL_CODE",568:"DATETIME_INTERVAL_PRECISION",569:"DB",570:"DEFAULTS",571:"DEFERRABLE",572:"DEFERRED",573:"DEFINED",574:"DEFINER",575:"DEGREE",576:"DEPTH",577:"DERIVED",578:"DESC",579:"DESCRIPTOR",580:"DIAGNOSTICS",581:"DISPATCH",582:"DOCUMENT",583:"DOMAIN",584:"DYNAMIC_FUNCTION",585:"DYNAMIC_FUNCTION_CODE",586:"EMPTY",587:"ENCODING",588:"ENFORCED",589:"EXCLUDE",590:"EXCLUDING",591:"EXPRESSION",592:"FILE",593:"FINAL",594:"FLAG",595:"FOLLOWING",596:"FORTRAN",597:"FOUND",598:"FS",599:"G",600:"GENERAL",601:"GENERATED",602:"GO",603:"GOTO",604:"GRANTED",605:"HEX",606:"HIERARCHY",607:"ID",608:"IGNORE",609:"IMMEDIATE",610:"IMMEDIATELY",611:"IMPLEMENTATION",612:"INCLUDING",613:"INCREMENT",614:"INDENT",615:"INITIALLY",616:"INPUT",617:"INSTANCE",618:"INSTANTIABLE",619:"INTEGRITY",620:"INVOKER",621:"ISOLATION",622:"K",623:"KEY_MEMBER",624:"KEY_TYPE",625:"LENGTH",626:"LEVEL",627:"LIBRARY",628:"LINK",629:"LOCATION",630:"LOCATOR",631:"M",632:"MAP",633:"MAPPING",634:"MAXVALUE",635:"MESSAGE_LENGTH",636:"MESSAGE_OCTET_LENGTH",637:"MESSAGE_TEXT",638:"MINVALUE",639:"MORE",640:"MUMPS",641:"NAME",642:"NAMES",643:"NAMESPACE",644:"NESTING",645:"NEXT",646:"NFC",647:"NFD",648:"NFKC",649:"NFKD",650:"NIL",651:"NORMALIZED",652:"NULLABLE",653:"NULLS",654:"OBJECT",655:"OCTETS",656:"OPTIONS",657:"ORDERING",658:"ORDINALITY",659:"OTHERS",660:"OVERRIDING",661:"P",662:"PAD",663:"PARAMETER_MODE",664:"PARAMETER_NAME",665:"PARAMETER_ORDINAL_POSITION",666:"PARAMETER_SPECIFIC_CATALOG",667:"PARAMETER_SPECIFIC_NAME",668:"PARAMETER_SPECIFIC_SCHEMA",669:"PARTIAL",670:"PASCAL",671:"PASSING",672:"PASSTHROUGH",673:"PERMISSION",674:"PLACING",675:"PLI",676:"PRECEDING",677:"PRESERVE",678:"PRIOR",679:"PRIVILEGES",680:"PUBLIC",681:"RECOVERY",682:"RELATIVE",683:"REPEATABLE",684:"REQUIRING",685:"RESPECT",686:"RESTART",687:"RESTORE",688:"RESTRICT",689:"RETURNED_CARDINALITY",690:"RETURNED_LENGTH",691:"RETURNED_OCTET_LENGTH",692:"RETURNED_SQLSTATE",693:"RETURNING",694:"ROLE",695:"ROUTINE",696:"ROUTINE_CATALOG",697:"ROUTINE_NAME",698:"ROUTINE_SCHEMA",699:"ROW_COUNT",700:"SCALE",701:"SCHEMA",702:"SCHEMA_NAME",703:"SCOPE_CATALOG",704:"SCOPE_NAME",705:"SCOPE_SCHEMA",706:"SECTION",707:"SECURITY",708:"SELECTIVE",709:"SELF",710:"SEQUENCE",711:"SERIALIZABLE",712:"SERVER",713:"SERVER_NAME",714:"SESSION",715:"SETS",716:"SIMPLE",717:"SIZE",718:"SPACE",719:"SPECIFIC_NAME",720:"STANDALONE",721:"STATE",722:"STATEMENT",723:"STRIP",724:"STRUCTURE",725:"STYLE",726:"SUBCLASS_ORIGIN",727:"T",728:"TABLE_NAME",729:"TEMPORARY",730:"TIES",731:"TOKEN",732:"TOP_LEVEL_COUNT",733:"TRANSACTIONS_COMMITTED",734:"TRANSACTIONS_ROLLED_BACK",735:"TRANSACTION_ACTIVE",736:"TRANSFORM",737:"TRANSFORMS",738:"TRIGGER_CATALOG",739:"TRIGGER_NAME",740:"TRIGGER_SCHEMA",741:"TYPE",742:"UNBOUNDED",743:"UNCOMMITTED",744:"UNDER",745:"UNLINK",746:"UNNAMED",747:"UNTYPED",748:"URI",749:"USAGE",750:"USER_DEFINED_TYPE_CATALOG",751:"USER_DEFINED_TYPE_CODE",752:"USER_DEFINED_TYPE_NAME",753:"USER_DEFINED_TYPE_SCHEMA",754:"VALID",755:"VERSION",756:"WHITESPACE",757:"WORK",758:"WRAPPER",759:"WRITE",760:"XMLDECLARATION",761:"XMLSCHEMA",762:"YES",763:"ZONE",764:"SEMICOLON",765:"PERCENT",766:"ROWS"},productions_:[0,[3,1],[3,1],[3,2],[7,1],[7,2],[8,2],[9,3],[9,1],[9,1],[13,2],[13,4],[12,1],[17,0],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[47,3],[73,3],[73,1],[75,5],[40,10],[40,4],[92,8],[92,11],[102,4],[104,2],[104,1],[103,3],[103,1],[105,1],[105,3],[106,3],[109,3],[109,1],[110,1],[110,2],[114,1],[114,1],[117,1],[117,5],[117,5],[117,1],[117,2],[117,1],[117,2],[117,2],[117,3],[117,4],[117,4],[117,4],[117,4],[117,4],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,2],[117,2],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,3],[117,4],[117,3],[117,1],[117,4],[117,2],[117,2],[117,4],[117,4],[117,4],[117,4],[117,4],[117,5],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,6],[163,3],[163,1],[153,1],[153,1],[153,1],[182,2],[79,4],[79,4],[79,4],[79,3],[184,1],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[186,3],[186,4],[186,0],[81,0],[81,2],[81,2],[81,2],[81,2],[81,2],[82,2],[82,3],[82,5],[82,0],[205,6],[205,7],[205,6],[205,7],[203,1],[203,3],[209,4],[209,5],[209,3],[209,3],[209,2],[209,3],[209,1],[209,3],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,2],[209,3],[214,1],[199,3],[199,1],[204,2],[204,2],[204,1],[204,1],[215,3],[217,1],[217,2],[217,3],[217,3],[217,2],[217,3],[217,4],[217,5],[217,1],[217,2],[217,3],[217,1],[217,2],[217,3],[216,1],[216,2],[221,1],[221,2],[221,2],[221,3],[221,2],[221,3],[221,2],[221,3],[221,2],[221,2],[221,2],[218,2],[218,2],[218,0],[84,0],[84,2],[85,0],[85,4],[233,1],[233,3],[235,5],[235,4],[235,4],[235,1],[234,0],[234,2],[88,0],[88,2],[88,3],[88,2],[88,2],[88,3],[88,4],[88,3],[88,3],[86,0],[86,3],[120,1],[120,3],[241,1],[241,2],[241,3],[241,4],[87,0],[87,3],[87,8],[246,0],[246,2],[174,3],[174,1],[253,3],[253,2],[253,3],[253,2],[253,3],[253,2],[253,1],[254,5],[254,3],[254,1],[111,5],[111,3],[111,3],[111,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,3],[94,3],[94,3],[94,1],[94,1],[56,1],[70,5],[71,5],[263,2],[263,2],[261,6],[261,8],[261,6],[261,8],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[255,5],[255,6],[255,6],[275,0],[275,4],[275,4],[275,5],[277,3],[278,3],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[200,5],[200,3],[200,4],[200,4],[200,8],[200,8],[200,8],[200,8],[200,3],[151,1],[151,3],[196,1],[257,1],[257,1],[113,1],[113,1],[258,1],[202,2],[259,4],[262,3],[201,2],[201,2],[201,1],[201,1],[260,5],[260,4],[304,2],[304,1],[307,4],[305,2],[305,0],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,6],[256,6],[256,3],[256,3],[256,2],[256,2],[256,2],[256,2],[256,2],[256,3],[256,5],[256,6],[256,5],[256,6],[256,4],[256,5],[256,3],[256,4],[256,3],[256,4],[256,3],[256,3],[256,3],[256,3],[256,3],[329,1],[329,1],[329,4],[327,1],[327,1],[327,1],[327,1],[327,1],[327,1],[328,1],[328,1],[328,1],[55,6],[55,4],[147,1],[147,3],[336,3],[336,4],[29,5],[29,3],[36,5],[36,4],[36,7],[36,6],[36,5],[36,4],[36,5],[36,8],[36,7],[36,4],[36,6],[36,7],[341,1],[341,1],[340,0],[340,1],[342,3],[342,1],[342,1],[342,5],[342,3],[342,3],[345,1],[345,3],[346,1],[346,1],[346,1],[346,1],[346,1],[346,1],[100,1],[100,3],[24,9],[24,5],[349,1],[349,1],[352,0],[352,1],[354,2],[354,1],[355,1],[355,3],[355,3],[355,3],[348,0],[348,1],[350,0],[350,3],[351,3],[351,1],[351,2],[359,1],[359,3],[360,2],[360,2],[360,2],[360,2],[360,2],[361,0],[361,2],[366,4],[362,6],[363,9],[377,3],[376,0],[376,2],[378,4],[379,4],[364,6],[365,5],[365,5],[372,1],[372,1],[372,3],[372,3],[358,1],[358,3],[384,3],[384,2],[384,1],[387,6],[387,4],[387,1],[387,4],[272,2],[272,1],[388,1],[388,1],[385,0],[385,1],[391,2],[391,1],[393,3],[392,2],[392,5],[392,3],[392,6],[392,1],[392,2],[392,4],[392,2],[392,1],[392,2],[392,1],[392,1],[392,3],[392,5],[33,4],[399,3],[399,1],[398,0],[398,2],[18,6],[18,6],[18,6],[18,8],[18,6],[39,5],[19,4],[19,7],[19,6],[19,9],[30,3],[21,4],[21,6],[21,9],[21,6],[407,0],[407,2],[54,3],[54,2],[31,4],[31,5],[31,5],[22,8],[22,9],[32,3],[43,2],[43,4],[43,3],[43,5],[45,2],[45,4],[45,4],[45,6],[42,4],[42,6],[44,4],[44,6],[41,4],[41,6],[25,11],[25,8],[413,3],[413,3],[413,5],[34,4],[66,2],[57,2],[58,2],[58,2],[58,4],[144,4],[144,2],[144,2],[144,2],[144,2],[144,1],[144,2],[144,2],[422,1],[422,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,3],[419,3],[419,4],[419,2],[421,2],[421,3],[421,1],[425,3],[425,1],[428,3],[428,3],[428,3],[427,3],[427,1],[65,4],[65,3],[65,4],[65,5],[65,5],[65,6],[431,1],[431,1],[430,3],[430,2],[432,1],[432,1],[432,3],[429,1],[429,1],[51,2],[52,2],[50,2],[35,4],[35,3],[438,2],[59,3],[60,1],[61,1],[62,3],[63,2],[63,2],[64,2],[64,2],[446,1],[446,1],[69,2],[444,3],[444,1],[445,3],[445,1],[28,2],[449,1],[449,3],[450,3],[450,4],[450,5],[450,6],[46,3],[37,6],[453,1],[453,2],[454,2],[455,2],[456,2],[456,2],[456,1],[456,1],[458,4],[458,6],[461,1],[461,3],[459,5],[459,7],[459,7],[459,9],[459,7],[459,9],[462,3],[462,6],[462,3],[462,6],[457,0],[457,2],[457,5],[457,4],[457,7],[27,6],[469,2],[468,0],[468,2],[468,2],[468,1],[26,8],[23,3],[23,4],[473,3],[473,1],[474,3],[474,7],[474,6],[474,3],[474,4],[478,1],[478,1],[482,2],[483,3],[484,2],[485,4],[475,4],[475,3],[475,2],[475,1],[497,2],[493,2],[493,2],[498,4],[500,6],[67,3],[67,2],[506,3],[506,1],[504,1],[504,4],[68,2],[20,2],[48,9],[48,8],[48,9],[510,0],[510,1],[510,1],[510,1],[510,2],[511,1],[511,1],[511,1],[49,3],[38,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[11,1],[11,1],[80,0],[80,1],[83,0],[83,1],[90,0],[90,2],[91,0],[91,1],[96,0],[96,1],[97,0],[97,1],[101,0],[101,1],[108,0],[108,1],[121,0],[121,1],[125,1],[125,2],[126,1],[126,2],[127,0],[127,1],[155,0],[155,2],[157,0],[157,2],[159,0],[159,2],[160,1],[160,1],[161,0],[161,2],[165,0],[165,2],[167,0],[167,2],[176,0],[176,2],[177,0],[177,2],[178,0],[178,2],[188,0],[188,1],[197,0],[197,1],[210,0],[210,1],[211,0],[211,1],[219,0],[219,1],[220,0],[220,1],[248,0],[248,1],[250,0],[250,1],[251,0],[251,1],[252,0],[252,1],[264,1],[264,1],[767,1],[767,1],[289,0],[289,1],[301,1],[301,1],[337,1],[337,1],[371,0],[371,1],[375,0],[375,1],[382,0],[382,1],[383,0],[383,1],[394,0],[394,1],[395,0],[395,1],[397,1],[397,1],[411,0],[411,1],[412,0],[412,1],[465,0],[465,1],[466,0],[466,1],[467,0],[467,1],[471,0],[471,1],[476,0],[476,1],[477,0],[477,1],[479,0],[479,1],[480,0],[480,1],[481,0],[481,1],[486,0],[486,1],[487,0],[487,1],[488,0],[488,1],[489,0],[489,1],[490,0],[490,1],[491,0],[491,1],[492,0],[492,1],[494,0],[494,1],[495,0],[495,1],[496,0],[496,1],[499,0],[499,2],[501,0],[501,2],[502,0],[502,2],[503,0],[503,2],[512,0],[512,1],[513,0],[513,1]],performAction:function(e,t,r,n,a,s,i){var o=s.length-1;switch(a){case 1:T.options.casesensitive?this.$=s[o]:this.$=s[o].toLowerCase();break;case 2:this.$=O(s[o].substr(1,s[o].length-2));break;case 3:this.$=s[o].toLowerCase();break;case 4:this.$=s[o];break;case 5:this.$=s[o]?s[o-1]+" "+s[o]:s[o-1];break;case 6:return new n.Statements({statements:s[o-1]});case 7:this.$=s[o-2],s[o]&&s[o-2].push(s[o]);break;case 8:case 9:case 70:case 80:case 85:case 143:case 177:case 205:case 206:case 242:case 261:case 273:case 354:case 372:case 451:case 474:case 475:case 479:case 487:case 528:case 529:case 566:case 649:case 659:case 683:case 685:case 687:case 701:case 702:case 732:case 756:this.$=[s[o]];break;case 10:case 11:this.$=s[o],s[o].explain=!0;break;case 12:this.$=s[o],n.exists&&(this.$.exists=n.exists),delete n.exists,n.queries&&(this.$.queries=n.queries),delete n.queries;break;case 13:case 162:case 172:case 237:case 238:case 240:case 248:case 250:case 259:case 267:case 270:case 375:case 491:case 501:case 503:case 515:case 521:case 522:case 567:this.$=void 0;break;case 68:this.$=new n.WithSelect({withs:s[o-1],select:s[o]});break;case 69:case 565:s[o-2].push(s[o]),this.$=s[o-2];break;case 71:this.$={name:s[o-4],select:s[o-1]};break;case 72:n.extend(this.$,s[o-9]),n.extend(this.$,s[o-8]),n.extend(this.$,s[o-7]),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-5]),n.extend(this.$,s[o-4]),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]),this.$=s[o-9];break;case 73:this.$=new n.Search({selectors:s[o-2],from:s[o]}),n.extend(this.$,s[o-1]);break;case 74:this.$={pivot:{expr:s[o-5],columnid:s[o-3],inlist:s[o-2],as:s[o]}};break;case 75:this.$={unpivot:{tocolumnid:s[o-8],forcolumnid:s[o-6],inlist:s[o-3],as:s[o]}};break;case 76:case 520:case 549:case 585:case 619:case 636:case 637:case 640:case 662:this.$=s[o-1];break;case 77:case 78:case 86:case 147:case 185:case 247:case 280:case 288:case 289:case 290:case 291:case 292:case 293:case 294:case 295:case 296:case 297:case 298:case 299:case 300:case 301:case 304:case 305:case 320:case 321:case 322:case 323:case 324:case 325:case 374:case 440:case 441:case 442:case 443:case 444:case 445:case 516:case 542:case 546:case 548:case 623:case 624:case 625:case 626:case 627:case 628:case 632:case 634:case 635:case 644:case 660:case 661:case 723:case 738:case 739:case 741:case 742:case 748:case 749:this.$=s[o];break;case 79:case 84:case 731:case 755:this.$=s[o-2],this.$.push(s[o]);break;case 81:this.$={expr:s[o]};break;case 82:this.$={expr:s[o-2],as:s[o]};break;case 83:this.$={removecolumns:s[o]};break;case 87:this.$={like:s[o]};break;case 90:case 104:this.$={srchid:"PROP",args:[s[o]]};break;case 91:this.$={srchid:"ORDERBY",args:s[o-1]};break;case 92:var u=s[o-1];u||(u="ASC"),this.$={srchid:"ORDERBY",args:[{expression:new n.Column({columnid:"_"}),direction:u}]};break;case 93:this.$={srchid:"PARENT"};break;case 94:this.$={srchid:"APROP",args:[s[o]]};break;case 95:this.$={selid:"ROOT"};break;case 96:this.$={srchid:"EQ",args:[s[o]]};break;case 97:this.$={srchid:"LIKE",args:[s[o]]};break;case 98:case 99:this.$={selid:"WITH",args:s[o-1]};break;case 100:this.$={srchid:s[o-3].toUpperCase(),args:s[o-1]};break;case 101:this.$={srchid:"WHERE",args:[s[o-1]]};break;case 102:this.$={selid:"OF",args:[s[o-1]]};break;case 103:this.$={srchid:"CLASS",args:[s[o-1]]};break;case 105:this.$={srchid:"NAME",args:[s[o].substr(1,s[o].length-2)]};break;case 106:this.$={srchid:"CHILD"};break;case 107:this.$={srchid:"VERTEX"};break;case 108:this.$={srchid:"EDGE"};break;case 109:this.$={srchid:"REF"};break;case 110:this.$={srchid:"SHARP",args:[s[o]]};break;case 111:this.$={srchid:"ATTR",args:void 0===s[o]?void 0:[s[o]]};break;case 112:this.$={srchid:"ATTR"};break;case 113:this.$={srchid:"OUT"};break;case 114:this.$={srchid:"IN"};break;case 115:this.$={srchid:"OUTOUT"};break;case 116:this.$={srchid:"ININ"};break;case 117:this.$={srchid:"CONTENT"};break;case 118:this.$={srchid:"EX",args:[new n.Json({value:s[o]})]};break;case 119:this.$={srchid:"AT",args:[s[o]]};break;case 120:this.$={srchid:"AS",args:[s[o]]};break;case 121:this.$={srchid:"SET",args:s[o-1]};break;case 122:this.$={selid:"TO",args:[s[o]]};break;case 123:this.$={srchid:"VALUE"};break;case 124:this.$={srchid:"ROW",args:s[o-1]};break;case 125:this.$={srchid:"CLASS",args:[s[o]]};break;case 126:this.$={selid:s[o],args:[s[o-1]]};break;case 127:this.$={selid:"NOT",args:s[o-1]};break;case 128:this.$={selid:"IF",args:s[o-1]};break;case 129:this.$={selid:s[o-3],args:s[o-1]};break;case 130:this.$={selid:"DISTINCT",args:s[o-1]};break;case 131:this.$={selid:"UNION",args:s[o-1]};break;case 132:this.$={selid:"UNIONALL",args:s[o-1]};break;case 133:this.$={selid:"ALL",args:[s[o-1]]};break;case 134:this.$={selid:"ANY",args:[s[o-1]]};break;case 135:this.$={selid:"INTERSECT",args:s[o-1]};break;case 136:this.$={selid:"EXCEPT",args:s[o-1]};break;case 137:this.$={selid:"AND",args:s[o-1]};break;case 138:this.$={selid:"OR",args:s[o-1]};break;case 139:this.$={selid:"PATH",args:[s[o-1]]};break;case 140:this.$={srchid:"RETURN",args:s[o-1]};break;case 141:this.$={selid:"REPEAT",sels:s[o-3],args:s[o-1]};break;case 142:this.$=s[o-2],this.$.push(s[o]);break;case 144:this.$="PLUS";break;case 145:this.$="STAR";break;case 146:this.$="QUESTION";break;case 148:case 149:this.$=new n.Select({columns:s[o],distinct:!0}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-1]);break;case 150:this.$=new n.Select({columns:s[o],all:!0}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-1]);break;case 151:s[o]?(this.$=new n.Select({columns:s[o]}),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1])):this.$=new n.Select({columns:[new n.Column({columnid:"_"})],modifier:"COLUMN"});break;case 152:"SELECT"==s[o]?this.$=void 0:this.$={modifier:s[o]};break;case 153:this.$={modifier:"VALUE"};break;case 154:this.$={modifier:"ROW"};break;case 155:this.$={modifier:"COLUMN"};break;case 156:this.$={modifier:"MATRIX"};break;case 157:this.$={modifier:"TEXTSTRING"};break;case 158:this.$={modifier:"INDEX"};break;case 159:this.$={modifier:"RECORDSET"};break;case 160:this.$={top:s[o-1],percent:void 0!==s[o]||void 0};break;case 161:this.$={top:s[o-1]};break;case 163:case 330:case 523:case 524:case 724:this.$=void 0;break;case 164:case 165:case 166:case 167:this.$={into:s[o]};break;case 168:var c=s[o];c=c.substr(1,c.length-2);var l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();"#"==c[0]?this.$={into:new n.FuncValue({funcid:"HTML",args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}:"XLS"==l||"CSV"==l||"TAB"==l?this.$={into:new n.FuncValue({funcid:l,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}:"XLSX"!=h&&"JSON"!=h||(this.$={into:new n.FuncValue({funcid:h,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})});break;case 169:this.$={from:s[o]};break;case 170:this.$={from:s[o-1],joins:s[o]};break;case 171:this.$={from:s[o-2],joins:s[o-1]};break;case 173:this.$=new n.Apply({select:s[o-2],applymode:"CROSS",as:s[o]});break;case 174:this.$=new n.Apply({select:s[o-3],applymode:"CROSS",as:s[o]});break;case 175:this.$=new n.Apply({select:s[o-2],applymode:"OUTER",as:s[o]});break;case 176:this.$=new n.Apply({select:s[o-3],applymode:"OUTER",as:s[o]});break;case 178:case 243:case 452:case 530:case 531:this.$=s[o-2],s[o-2].push(s[o]);break;case 179:this.$=s[o-2],this.$.as=s[o];break;case 180:this.$=s[o-3],this.$.as=s[o];break;case 181:this.$=s[o-1],this.$.as="default";break;case 182:this.$=new n.Json({value:s[o-2]}),s[o-2].as=s[o];break;case 183:this.$=s[o-1],s[o-1].as=s[o];break;case 184:this.$=s[o-2],s[o-2].as=s[o];break;case 186:case 638:case 641:this.$=s[o-2];break;case 187:case 191:case 195:case 198:this.$=s[o-1],s[o-1].as=s[o];break;case 188:case 192:case 196:case 199:this.$=s[o-2],s[o-2].as=s[o];break;case 189:case 190:case 194:case 197:this.$=s[o],s[o].as="default";break;case 193:this.$={inserted:!0};break;case 200:var c=s[o];c=c.substr(1,c.length-2);var d,l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();if("#"==c[0])d=new n.FuncValue({funcid:"HTML",args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]});else if("XLS"==l||"CSV"==l||"TAB"==l)d=new n.FuncValue({funcid:l,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]});else{if("XLSX"!=h&&"JSON"!=h)throw new Error("Unknown string in FROM clause");d=new n.FuncValue({funcid:h,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}this.$=d;break;case 201:"INFORMATION_SCHEMA"==s[o-2]?this.$=new n.FuncValue({funcid:s[o-2],args:[new n.StringValue({value:s[o]})]}):this.$=new n.Table({databaseid:s[o-2],tableid:s[o]});break;case 202:this.$=new n.Table({tableid:s[o]});break;case 203:case 204:this.$=s[o-1],s[o-1].push(s[o]);break;case 207:this.$=new n.Join(s[o-2]),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]);break;case 208:this.$={table:s[o]};break;case 209:this.$={table:s[o-1],as:s[o]};break;case 210:this.$={table:s[o-2],as:s[o]};break;case 211:this.$={json:new n.Json({value:s[o-2],as:s[o]})};break;case 212:this.$={param:s[o-1],as:s[o]};break;case 213:this.$={param:s[o-2],as:s[o]};break;case 214:this.$={select:s[o-2],as:s[o]};break;case 215:this.$={select:s[o-3],as:s[o]};break;case 216:this.$={func:s[o],as:"default"};break;case 217:this.$={func:s[o-1],as:s[o]};break;case 218:this.$={func:s[o-2],as:s[o]};break;case 219:this.$={variable:s[o],as:"default"};break;case 220:this.$={variable:s[o-1],as:s[o]};break;case 221:this.$={variable:s[o-2],as:s[o]};break;case 222:this.$={joinmode:s[o]};break;case 223:this.$={joinmode:s[o-1],natural:!0};break;case 224:case 225:this.$="INNER";break;case 226:case 227:this.$="LEFT";break;case 228:case 229:this.$="RIGHT";break;case 230:case 231:this.$="OUTER";break;case 232:this.$="SEMI";break;case 233:this.$="ANTI";break;case 234:this.$="CROSS";break;case 235:this.$={on:s[o]};break;case 236:case 697:this.$={using:s[o]};break;case 239:this.$={where:new n.Expression({expression:s[o]})};break;case 241:this.$={group:s[o-1]},n.extend(this.$,s[o]);break;case 244:this.$=new n.GroupExpression({type:"GROUPING SETS",group:s[o-1]});break;case 245:this.$=new n.GroupExpression({type:"ROLLUP",group:s[o-1]});break;case 246:this.$=new n.GroupExpression({type:"CUBE",group:s[o-1]});break;case 249:this.$={having:s[o]};break;case 251:this.$={union:s[o]};break;case 252:this.$={unionall:s[o]};break;case 253:this.$={except:s[o]};break;case 254:this.$={intersect:s[o]};break;case 255:this.$={union:s[o],corresponding:!0};break;case 256:this.$={unionall:s[o],corresponding:!0};break;case 257:this.$={except:s[o],corresponding:!0};break;case 258:this.$={intersect:s[o],corresponding:!0};break;case 260:this.$={order:s[o]};break;case 262:this.$=s[o-2],s[o-2].push(s[o]);break;case 263:this.$=new n.Expression({expression:s[o],direction:"ASC"});break;case 264:this.$=new n.Expression({expression:s[o-1],direction:s[o].toUpperCase()});break;case 265:this.$=new n.Expression({expression:s[o-2],direction:"ASC",nocase:!0});break;case 266:this.$=new n.Expression({expression:s[o-3],direction:s[o].toUpperCase(),nocase:!0});break;case 268:this.$={limit:s[o-1]},n.extend(this.$,s[o]);break;case 269:this.$={limit:s[o-2],offset:s[o-6]};break;case 271:this.$={offset:s[o]};break;case 272:case 509:case 533:case 648:case 658:case 682:case 684:case 688:s[o-2].push(s[o]),this.$=s[o-2];break;case 274:case 276:case 278:s[o-2].as=s[o],this.$=s[o-2];break;case 275:case 277:case 279:s[o-1].as=s[o],this.$=s[o-1];break;case 281:this.$=new n.Column({columid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 282:this.$=new n.Column({columnid:s[o],tableid:s[o-2]});break;case 283:this.$=new n.Column({columnid:s[o]});break;case 284:this.$=new n.Column({columnid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 285:case 286:this.$=new n.Column({columnid:s[o],tableid:s[o-2]});break;case 287:this.$=new n.Column({columnid:s[o]});break;case 302:this.$=new n.DomainValueValue;break;case 303:this.$=new n.Json({value:s[o]});break;case 306:case 307:case 308:n.queries||(n.queries=[]),n.queries.push(s[o-1]),s[o-1].queriesidx=n.queries.length,this.$=s[o-1];break;case 309:this.$=s[o];break;case 310:this.$=new n.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 311:this.$=new n.JavaScript({value:s[o].substr(2,s[o].length-4)});break;case 312:this.$=new n.JavaScript({value:'alasql.fn["'+s[o-2]+'"] = '+s[o].substr(2,s[o].length-4)});break;case 313:this.$=new n.JavaScript({value:'alasql.aggr["'+s[o-2]+'"] = '+s[o].substr(2,s[o].length-4)});break;case 314:this.$=new n.FuncValue({funcid:s[o],newid:!0});break;case 315:this.$=s[o],n.extend(this.$,{newid:!0});break;case 316:this.$=new n.Convert({expression:s[o-3]}),n.extend(this.$,s[o-1]);break;case 317:this.$=new n.Convert({expression:s[o-5],style:s[o-1]}),n.extend(this.$,s[o-3]);break;case 318:this.$=new n.Convert({expression:s[o-1]}),n.extend(this.$,s[o-3]);break;case 319:this.$=new n.Convert({expression:s[o-3],style:s[o-1]}),n.extend(this.$,s[o-5]);break;case 326:this.$=new n.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 327:s[o-2].length>1&&("MAX"==s[o-4].toUpperCase()||"MIN"==s[o-4].toUpperCase())?this.$=new n.FuncValue({funcid:s[o-4],args:s[o-2]}):this.$=new n.AggrValue({aggregatorid:s[o-4].toUpperCase(),expression:s[o-2].pop(),over:s[o]});break;case 328:this.$=new n.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],distinct:!0,over:s[o]});break;case 329:this.$=new n.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],over:s[o]});break;case 331:case 332:this.$=new n.Over,n.extend(this.$,s[o-1]);break;case 333:this.$=new n.Over,n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]);break;case 334:this.$={partition:s[o]};break;case 335:this.$={order:s[o]};break;case 336:this.$="SUM";break;case 337:this.$="COUNT";break;case 338:this.$="MIN";break;case 339:case 544:this.$="MAX";break;case 340:this.$="AVG";break;case 341:this.$="FIRST";break;case 342:this.$="LAST";break;case 343:this.$="AGGR";break;case 344:this.$="ARRAY";break;case 345:var f=s[o-4],p=s[o-1];p.length>1&&("MIN"==f.toUpperCase()||"MAX"==f.toUpperCase())?this.$=new n.FuncValue({funcid:f,args:p}):T.aggr[s[o-4]]?this.$=new n.AggrValue({aggregatorid:"REDUCE",funcid:f,expression:p.pop(),distinct:"DISTINCT"==s[o-2]}):this.$=new n.FuncValue({funcid:f,args:p});break;case 346:this.$=new n.FuncValue({funcid:s[o-2]});break;case 347:this.$=new n.FuncValue({funcid:"IIF",args:s[o-1]});break;case 348:this.$=new n.FuncValue({funcid:"REPLACE",args:s[o-1]});break;case 349:this.$=new n.FuncValue({funcid:"DATEADD",args:[new n.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 350:this.$=new n.FuncValue({funcid:"DATEADD",args:[s[o-5],s[o-3],s[o-1]]});break;case 351:this.$=new n.FuncValue({funcid:"DATEDIFF",args:[new n.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 352:this.$=new n.FuncValue({funcid:"DATEDIFF",args:[s[o-5],s[o-3],s[o-1]]});break;case 353:this.$=new n.FuncValue({funcid:"INTERVAL",args:[s[o-1],new n.StringValue({value:s[o].toLowerCase()})]});break;case 355:s[o-2].push(s[o]),this.$=s[o-2];break;case 356:this.$=new n.NumValue({value:+s[o]});break;case 357:this.$=new n.LogicValue({value:!0});break;case 358:this.$=new n.LogicValue({value:!1});break;case 359:this.$=new n.StringValue({value:s[o].substr(1,s[o].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 360:this.$=new n.StringValue({value:s[o].substr(2,s[o].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 361:this.$=new n.NullValue({value:void 0});break;case 362:this.$=new n.VarValue({variable:s[o]});break;case 363:n.exists||(n.exists=[]),this.$=new n.ExistsValue({value:s[o-1],existsidx:n.exists.length}),n.exists.push(s[o-1]);break;case 364:this.$=new n.ArrayValue({value:s[o-1]});break;case 365:case 366:this.$=new n.ParamValue({param:s[o]});break;case 367:void 0===n.question&&(n.question=0),this.$=new n.ParamValue({param:n.question++});break;case 368:void 0===n.question&&(n.question=0),this.$=new n.ParamValue({param:n.question++,array:!0});break;case 369:this.$=new n.CaseValue({expression:s[o-3],whens:s[o-2],elses:s[o-1]});break;case 370:this.$=new n.CaseValue({whens:s[o-2],elses:s[o-1]});break;case 371:case 699:case 700:this.$=s[o-1],this.$.push(s[o]);break;case 373:this.$={when:s[o-2],then:s[o]};break;case 376:case 377:this.$=new n.Op({left:s[o-2],op:"REGEXP",right:s[o]});break;case 378:this.$=new n.Op({left:s[o-2],op:"GLOB",right:s[o]});break;case 379:this.$=new n.Op({left:s[o-2],op:"LIKE",right:s[o]});break;case 380:this.$=new n.Op({left:s[o-4],op:"LIKE",right:s[o-2],escape:s[o]});break;case 381:this.$=new n.Op({left:s[o-2],op:"NOT LIKE",right:s[o]});break;case 382:this.$=new n.Op({left:s[o-4],op:"NOT LIKE",right:s[o-2],escape:s[o]});break;case 383:this.$=new n.Op({left:s[o-2],op:"||",right:s[o]});break;case 384:this.$=new n.Op({left:s[o-2],op:"+",right:s[o]});break;case 385:this.$=new n.Op({left:s[o-2],op:"-",right:s[o]});break;case 386:this.$=new n.Op({left:s[o-2],op:"*",right:s[o]});break;case 387:this.$=new n.Op({left:s[o-2],op:"/",right:s[o]});break;case 388:this.$=new n.Op({left:s[o-2],op:"%",right:s[o]});break;case 389:this.$=new n.Op({left:s[o-2],op:"^",right:s[o]});break;case 390:this.$=new n.Op({left:s[o-2],op:">>",right:s[o]});break;case 391:this.$=new n.Op({left:s[o-2],op:"<<",right:s[o]});break;case 392:this.$=new n.Op({left:s[o-2],op:"&",right:s[o]});break;case 393:this.$=new n.Op({left:s[o-2],op:"|",right:s[o]});break;case 394:case 395:case 397:this.$=new n.Op({left:s[o-2],op:"->",right:s[o]});break;case 396:this.$=new n.Op({left:s[o-4],op:"->",right:s[o-1]});break;case 398:case 399:case 401:this.$=new n.Op({left:s[o-2],op:"!",right:s[o]});break;case 400:this.$=new n.Op({left:s[o-4],op:"!",right:s[o-1]});break;case 402:this.$=new n.Op({left:s[o-2],op:">",right:s[o]});break;case 403:this.$=new n.Op({left:s[o-2],op:">=",right:s[o]});break;case 404:this.$=new n.Op({left:s[o-2],op:"<",right:s[o]});break;case 405:this.$=new n.Op({left:s[o-2],op:"<=",right:s[o]});break;case 406:this.$=new n.Op({left:s[o-2],op:"=",right:s[o]});break;case 407:this.$=new n.Op({left:s[o-2],op:"==",right:s[o]});break;case 408:this.$=new n.Op({left:s[o-2],op:"===",right:s[o]});break;case 409:this.$=new n.Op({left:s[o-2],op:"!=",right:s[o]});break;case 410:this.$=new n.Op({left:s[o-2],op:"!==",right:s[o]});break;case 411:this.$=new n.Op({left:s[o-2],op:"!===",right:s[o]});break;case 412:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1],queriesidx:n.queries.length}),n.queries.push(s[o-1]);break;case 413:this.$=new n.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1]});break;case 414:"BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new n.Op({left:s[o-2].left.left,op:"AND",right:new n.Op({left:s[o-2].left.right,op:"BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new n.Op({left:s[o-2].left,op:"BETWEEN",right1:s[o-2].right,right2:s[o]}):"NOT BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new n.Op({left:s[o-2].left.left,op:"AND",right:new n.Op({left:s[o-2].left.right,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new n.Op({left:s[o-2].left,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]}):this.$=new n.Op({left:s[o-2],op:"AND",right:s[o]});break;case 415:this.$=new n.Op({left:s[o-2],op:"OR",right:s[o]});break;case 416:this.$=new n.UniOp({op:"NOT",right:s[o]});break;case 417:this.$=new n.UniOp({op:"-",right:s[o]});break;case 418:this.$=new n.UniOp({op:"+",right:s[o]});break;case 419:this.$=new n.UniOp({op:"~",right:s[o]});break;case 420:this.$=new n.UniOp({op:"#",right:s[o]});break;case 421:this.$=new n.UniOp({right:s[o-1]});break;case 422:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-4],op:"IN",right:s[o-1],queriesidx:n.queries.length}),n.queries.push(s[o-1]);break;case 423:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-5],op:"NOT IN",right:s[o-1],queriesidx:n.queries.length}),
n.queries.push(s[o-1]);break;case 424:this.$=new n.Op({left:s[o-4],op:"IN",right:s[o-1]});break;case 425:this.$=new n.Op({left:s[o-5],op:"NOT IN",right:s[o-1]});break;case 426:this.$=new n.Op({left:s[o-3],op:"IN",right:[]});break;case 427:this.$=new n.Op({left:s[o-4],op:"NOT IN",right:[]});break;case 428:case 430:this.$=new n.Op({left:s[o-2],op:"IN",right:s[o]});break;case 429:case 431:this.$=new n.Op({left:s[o-3],op:"NOT IN",right:s[o]});break;case 432:this.$=new n.Op({left:s[o-2],op:"BETWEEN1",right:s[o]});break;case 433:this.$=new n.Op({left:s[o-2],op:"NOT BETWEEN1",right:s[o]});break;case 434:this.$=new n.Op({op:"IS",left:s[o-2],right:s[o]});break;case 435:this.$=new n.Op({op:"IS",left:s[o-2],right:new n.UniOp({op:"NOT",right:new n.NullValue({value:void 0})})});break;case 436:this.$=new n.Convert({expression:s[o-2]}),n.extend(this.$,s[o]);break;case 437:case 438:this.$=s[o];break;case 439:this.$=s[o-1];break;case 446:this.$="ALL";break;case 447:this.$="SOME";break;case 448:this.$="ANY";break;case 449:this.$=new n.Update({table:s[o-4],columns:s[o-2],where:s[o]});break;case 450:this.$=new n.Update({table:s[o-2],columns:s[o]});break;case 453:this.$=new n.SetColumn({column:s[o-2],expression:s[o]});break;case 454:this.$=new n.SetColumn({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 455:this.$=new n.Delete({table:s[o-2],where:s[o]});break;case 456:this.$=new n.Delete({table:s[o]});break;case 457:this.$=new n.Insert({into:s[o-2],values:s[o]});break;case 458:this.$=new n.Insert({into:s[o-1],values:s[o]});break;case 459:case 461:this.$=new n.Insert({into:s[o-2],values:s[o],orreplace:!0});break;case 460:case 462:this.$=new n.Insert({into:s[o-1],values:s[o],orreplace:!0});break;case 463:this.$=new n.Insert({into:s[o-2],default:!0});break;case 464:this.$=new n.Insert({into:s[o-5],columns:s[o-3],values:s[o]});break;case 465:this.$=new n.Insert({into:s[o-4],columns:s[o-2],values:s[o]});break;case 466:this.$=new n.Insert({into:s[o-1],select:s[o]});break;case 467:this.$=new n.Insert({into:s[o-1],select:s[o],orreplace:!0});break;case 468:this.$=new n.Insert({into:s[o-4],columns:s[o-2],select:s[o]});break;case 473:this.$=[s[o-1]];break;case 476:this.$=s[o-4],s[o-4].push(s[o-1]);break;case 477:case 478:case 480:case 488:this.$=s[o-2],s[o-2].push(s[o]);break;case 489:this.$=new n.CreateTable({table:s[o-4]}),n.extend(this.$,s[o-7]),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-5]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o]);break;case 490:this.$=new n.CreateTable({table:s[o]}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]);break;case 492:this.$={class:!0};break;case 502:this.$={temporary:!0};break;case 504:this.$={ifnotexists:!0};break;case 505:this.$={columns:s[o-2],constraints:s[o]};break;case 506:this.$={columns:s[o]};break;case 507:this.$={as:s[o]};break;case 508:case 532:this.$=[s[o]];break;case 510:case 511:case 512:case 513:case 514:s[o].constraintid=s[o-1],this.$=s[o];break;case 517:this.$={type:"CHECK",expression:s[o-1]};break;case 518:this.$={type:"PRIMARY KEY",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 519:this.$={type:"FOREIGN KEY",columns:s[o-5],fktable:s[o-2],fkcolumns:s[o-1]};break;case 525:this.$={type:"UNIQUE",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 534:this.$=new n.ColumnDef({columnid:s[o-2]}),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]);break;case 535:this.$=new n.ColumnDef({columnid:s[o-1]}),n.extend(this.$,s[o]);break;case 536:this.$=new n.ColumnDef({columnid:s[o],dbtypeid:""});break;case 537:this.$={dbtypeid:s[o-5],dbsize:s[o-3],dbprecision:+s[o-1]};break;case 538:this.$={dbtypeid:s[o-3],dbsize:s[o-1]};break;case 539:this.$={dbtypeid:s[o]};break;case 540:this.$={dbtypeid:"ENUM",enumvalues:s[o-1]};break;case 541:this.$=s[o-1],s[o-1].dbtypeid+="["+s[o]+"]";break;case 543:case 750:this.$=+s[o];break;case 545:this.$=void 0;break;case 547:n.extend(s[o-1],s[o]),this.$=s[o-1];break;case 550:this.$={primarykey:!0};break;case 551:case 552:this.$={foreignkey:{table:s[o-1],columnid:s[o]}};break;case 553:this.$={identity:{value:s[o-3],step:s[o-1]}};break;case 554:this.$={identity:{value:1,step:1}};break;case 555:case 557:this.$={default:s[o]};break;case 556:this.$={default:s[o-1]};break;case 558:this.$={null:!0};break;case 559:this.$={notnull:!0};break;case 560:this.$={check:s[o]};break;case 561:this.$={unique:!0};break;case 562:this.$={onupdate:s[o]};break;case 563:this.$={onupdate:s[o-1]};break;case 564:this.$=new n.DropTable({tables:s[o],type:s[o-2]}),n.extend(this.$,s[o-1]);break;case 568:this.$={ifexists:!0};break;case 569:this.$=new n.AlterTable({table:s[o-3],renameto:s[o]});break;case 570:this.$=new n.AlterTable({table:s[o-3],addcolumn:s[o]});break;case 571:this.$=new n.AlterTable({table:s[o-3],modifycolumn:s[o]});break;case 572:this.$=new n.AlterTable({table:s[o-5],renamecolumn:s[o-2],to:s[o]});break;case 573:this.$=new n.AlterTable({table:s[o-3],dropcolumn:s[o]});break;case 574:this.$=new n.AlterTable({table:s[o-2],renameto:s[o]});break;case 575:this.$=new n.AttachDatabase({databaseid:s[o],engineid:s[o-2].toUpperCase()});break;case 576:this.$=new n.AttachDatabase({databaseid:s[o-3],engineid:s[o-5].toUpperCase(),args:s[o-1]});break;case 577:this.$=new n.AttachDatabase({databaseid:s[o-2],engineid:s[o-4].toUpperCase(),as:s[o]});break;case 578:this.$=new n.AttachDatabase({databaseid:s[o-5],engineid:s[o-7].toUpperCase(),as:s[o],args:s[o-3]});break;case 579:this.$=new n.DetachDatabase({databaseid:s[o]});break;case 580:this.$=new n.CreateDatabase({databaseid:s[o]}),n.extend(this.$,s[o]);break;case 581:this.$=new n.CreateDatabase({engineid:s[o-4].toUpperCase(),databaseid:s[o-1],as:s[o]}),n.extend(this.$,s[o-2]);break;case 582:this.$=new n.CreateDatabase({engineid:s[o-7].toUpperCase(),databaseid:s[o-4],args:s[o-2],as:s[o]}),n.extend(this.$,s[o-5]);break;case 583:this.$=new n.CreateDatabase({engineid:s[o-4].toUpperCase(),as:s[o],args:[s[o-1]]}),n.extend(this.$,s[o-2]);break;case 584:this.$=void 0;break;case 586:case 587:this.$=new n.UseDatabase({databaseid:s[o]});break;case 588:this.$=new n.DropDatabase({databaseid:s[o]}),n.extend(this.$,s[o-1]);break;case 589:case 590:this.$=new n.DropDatabase({databaseid:s[o],engineid:s[o-3].toUpperCase()}),n.extend(this.$,s[o-1]);break;case 591:this.$=new n.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1]});break;case 592:this.$=new n.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1],unique:!0});break;case 593:this.$=new n.DropIndex({indexid:s[o]});break;case 594:this.$=new n.ShowDatabases;break;case 595:this.$=new n.ShowDatabases({like:s[o]});break;case 596:this.$=new n.ShowDatabases({engineid:s[o-1].toUpperCase()});break;case 597:this.$=new n.ShowDatabases({engineid:s[o-3].toUpperCase(),like:s[o]});break;case 598:this.$=new n.ShowTables;break;case 599:this.$=new n.ShowTables({like:s[o]});break;case 600:this.$=new n.ShowTables({databaseid:s[o]});break;case 601:this.$=new n.ShowTables({like:s[o],databaseid:s[o-2]});break;case 602:this.$=new n.ShowColumns({table:s[o]});break;case 603:this.$=new n.ShowColumns({table:s[o-2],databaseid:s[o]});break;case 604:this.$=new n.ShowIndex({table:s[o]});break;case 605:this.$=new n.ShowIndex({table:s[o-2],databaseid:s[o]});break;case 606:this.$=new n.ShowCreateTable({table:s[o]});break;case 607:this.$=new n.ShowCreateTable({table:s[o-2],databaseid:s[o]});break;case 608:this.$=new n.CreateTable({table:s[o-6],view:!0,select:s[o-1],viewcolumns:s[o-4]}),n.extend(this.$,s[o-9]),n.extend(this.$,s[o-7]);break;case 609:this.$=new n.CreateTable({table:s[o-3],view:!0,select:s[o-1]}),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-4]);break;case 613:this.$=new n.DropTable({tables:s[o],view:!0}),n.extend(this.$,s[o-1]);break;case 614:case 760:this.$=new n.ExpressionStatement({expression:s[o]});break;case 615:this.$=new n.Source({url:s[o].value});break;case 616:this.$=new n.Assert({value:s[o]});break;case 617:this.$=new n.Assert({value:s[o].value});break;case 618:this.$=new n.Assert({value:s[o],message:s[o-2]});break;case 620:case 631:case 633:this.$=s[o].value;break;case 621:case 629:this.$=+s[o].value;break;case 622:this.$=!!s[o].value;break;case 630:this.$=""+s[o].value;break;case 639:this.$={};break;case 642:this.$=[];break;case 643:n.extend(s[o-2],s[o]),this.$=s[o-2];break;case 645:this.$={},this.$[s[o-2].substr(1,s[o-2].length-2)]=s[o];break;case 646:case 647:this.$={},this.$[s[o-2]]=s[o];break;case 650:this.$=new n.SetVariable({variable:s[o-2].toLowerCase(),value:s[o]});break;case 651:this.$=new n.SetVariable({variable:s[o-1].toLowerCase(),value:s[o]});break;case 652:this.$=new n.SetVariable({variable:s[o-2],expression:s[o]});break;case 653:this.$=new n.SetVariable({variable:s[o-3],props:s[o-2],expression:s[o]});break;case 654:this.$=new n.SetVariable({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 655:this.$=new n.SetVariable({variable:s[o-3],props:s[o-2],expression:s[o],method:s[o-4]});break;case 656:this.$="@";break;case 657:this.$="$";break;case 663:this.$=!0;break;case 664:this.$=!1;break;case 665:this.$=new n.CommitTransaction;break;case 666:this.$=new n.RollbackTransaction;break;case 667:this.$=new n.BeginTransaction;break;case 668:this.$=new n.If({expression:s[o-2],thenstat:s[o-1],elsestat:s[o]}),s[o-1].exists&&(this.$.exists=s[o-1].exists),s[o-1].queries&&(this.$.queries=s[o-1].queries);break;case 669:this.$=new n.If({expression:s[o-1],thenstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 670:this.$=s[o];break;case 671:this.$=new n.While({expression:s[o-1],loopstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 672:this.$=new n.Continue;break;case 673:this.$=new n.Break;break;case 674:this.$=new n.BeginEnd({statements:s[o-1]});break;case 675:this.$=new n.Print({exprs:s[o]});break;case 676:this.$=new n.Print({select:s[o]});break;case 677:this.$=new n.Require({paths:s[o]});break;case 678:this.$=new n.Require({plugins:s[o]});break;case 679:case 680:this.$=s[o].toUpperCase();break;case 681:this.$=new n.Echo({expr:s[o]});break;case 686:this.$=new n.Declare({declares:s[o]});break;case 689:this.$={variable:s[o-1]},n.extend(this.$,s[o]);break;case 690:this.$={variable:s[o-2]},n.extend(this.$,s[o]);break;case 691:this.$={variable:s[o-3],expression:s[o]},n.extend(this.$,s[o-2]);break;case 692:this.$={variable:s[o-4],expression:s[o]},n.extend(this.$,s[o-2]);break;case 693:this.$=new n.TruncateTable({table:s[o]});break;case 694:this.$=new n.Merge,n.extend(this.$,s[o-4]),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,{matches:s[o-1]}),n.extend(this.$,s[o]);break;case 695:case 696:this.$={into:s[o]};break;case 698:this.$={on:s[o]};break;case 703:this.$={matched:!0,action:s[o]};break;case 704:this.$={matched:!0,expr:s[o-2],action:s[o]};break;case 705:this.$={delete:!0};break;case 706:this.$={update:s[o]};break;case 707:case 708:this.$={matched:!1,bytarget:!0,action:s[o]};break;case 709:case 710:this.$={matched:!1,bytarget:!0,expr:s[o-2],action:s[o]};break;case 711:this.$={matched:!1,bysource:!0,action:s[o]};break;case 712:this.$={matched:!1,bysource:!0,expr:s[o-2],action:s[o]};break;case 713:this.$={insert:!0,values:s[o]};break;case 714:this.$={insert:!0,values:s[o],columns:s[o-3]};break;case 715:this.$={insert:!0,defaultvalues:!0};break;case 716:this.$={insert:!0,defaultvalues:!0,columns:s[o-3]};break;case 718:this.$={output:{columns:s[o]}};break;case 719:this.$={output:{columns:s[o-3],intovar:s[o],method:s[o-1]}};break;case 720:this.$={output:{columns:s[o-2],intotable:s[o]}};break;case 721:this.$={output:{columns:s[o-5],intotable:s[o-3],intocolumns:s[o-1]}};break;case 722:this.$=new n.CreateVertex({class:s[o-3],sharp:s[o-2],name:s[o-1]}),n.extend(this.$,s[o]);break;case 725:this.$={sets:s[o]};break;case 726:this.$={content:s[o]};break;case 727:this.$={select:s[o]};break;case 728:this.$=new n.CreateEdge({from:s[o-3],to:s[o-1],name:s[o-5]}),n.extend(this.$,s[o]);break;case 729:this.$=new n.CreateGraph({graph:s[o]});break;case 730:this.$=new n.CreateGraph({from:s[o]});break;case 733:this.$=s[o-2],s[o-1]&&(this.$.json=new n.Json({value:s[o-1]})),s[o]&&(this.$.as=s[o]);break;case 734:this.$={source:s[o-6],target:s[o]},s[o-3]&&(this.$.json=new n.Json({value:s[o-3]})),s[o-2]&&(this.$.as=s[o-2]),n.extend(this.$,s[o-4]);break;case 735:this.$={source:s[o-5],target:s[o]},s[o-2]&&(this.$.json=new n.Json({value:s[o-3]})),s[o-1]&&(this.$.as=s[o-2]);break;case 736:this.$={source:s[o-2],target:s[o]};break;case 740:this.$={vars:s[o],method:s[o-1]};break;case 743:case 744:var b=s[o-1];this.$={prop:s[o-3],sharp:s[o-2],name:void 0===b?void 0:b.substr(1,b.length-2),class:s[o]};break;case 745:var E=s[o-1];this.$={sharp:s[o-2],name:void 0===E?void 0:E.substr(1,E.length-2),class:s[o]};break;case 746:var g=s[o-1];this.$={name:void 0===g?void 0:g.substr(1,g.length-2),class:s[o]};break;case 747:this.$={class:s[o]};break;case 753:this.$=new n.AddRule({left:s[o-2],right:s[o]});break;case 754:this.$=new n.AddRule({right:s[o]});break;case 757:this.$=new n.Term({termid:s[o]});break;case 758:this.$=new n.Term({termid:s[o-3],args:s[o-1]});break;case 761:this.$=new n.CreateTrigger({trigger:s[o-6],when:s[o-5],action:s[o-4],table:s[o-2],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 762:this.$=new n.CreateTrigger({trigger:s[o-5],when:s[o-4],action:s[o-3],table:s[o-1],funcid:s[o]});break;case 763:this.$=new n.CreateTrigger({trigger:s[o-6],when:s[o-4],action:s[o-3],table:s[o-5],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 764:case 765:case 767:this.$="AFTER";break;case 766:this.$="BEFORE";break;case 768:this.$="INSTEADOF";break;case 769:this.$="INSERT";break;case 770:this.$="DELETE";break;case 771:this.$="UPDATE";break;case 772:this.$=new n.DropTrigger({trigger:s[o]});break;case 773:this.$=new n.Reindex({indexid:s[o]});break;case 1047:case 1067:case 1069:case 1071:case 1075:case 1077:case 1079:case 1081:case 1083:case 1085:this.$=[];break;case 1048:case 1062:case 1064:case 1068:case 1070:case 1072:case 1076:case 1078:case 1080:case 1082:case 1084:case 1086:s[o-1].push(s[o]);break;case 1061:case 1063:this.$=[s[o]]}},table:[t([10,602,764],r,{8:1,9:2,12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,2:n,4:a,5:s,14:i,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),{1:[3]},{10:[1,105],11:106,602:Y,764:W},t(X,[2,8]),t(X,[2,9]),t(K,[2,12]),t(X,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:109,2:n,4:a,5:s,15:[1,110],53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(K,[2,14]),t(K,[2,15]),t(K,[2,16]),t(K,[2,17]),t(K,[2,18]),t(K,[2,19]),t(K,[2,20]),t(K,[2,21]),t(K,[2,22]),t(K,[2,23]),t(K,[2,24]),t(K,[2,25]),t(K,[2,26]),t(K,[2,27]),t(K,[2,28]),t(K,[2,29]),t(K,[2,30]),t(K,[2,31]),t(K,[2,32]),t(K,[2,33]),t(K,[2,34]),t(K,[2,35]),t(K,[2,36]),t(K,[2,37]),t(K,[2,38]),t(K,[2,39]),t(K,[2,40]),t(K,[2,41]),t(K,[2,42]),t(K,[2,43]),t(K,[2,44]),t(K,[2,45]),t(K,[2,46]),t(K,[2,47]),t(K,[2,48]),t(K,[2,49]),t(K,[2,50]),t(K,[2,51]),t(K,[2,52]),t(K,[2,53]),t(K,[2,54]),t(K,[2,55]),t(K,[2,56]),t(K,[2,57]),t(K,[2,58]),t(K,[2,59]),t(K,[2,60]),t(K,[2,61]),t(K,[2,62]),t(K,[2,63]),t(K,[2,64]),t(K,[2,65]),t(K,[2,66]),t(K,[2,67]),{353:[1,111]},{2:n,3:112,4:a,5:s},{2:n,3:114,4:a,5:s,156:Q,200:113,290:z,291:Z,292:ee,293:te},t(re,[2,501],{3:121,348:125,2:n,4:a,5:s,134:ne,135:ae,187:[1,123],193:[1,122],268:[1,129],269:[1,130],357:[1,131],405:[1,120],472:[1,124],509:[1,128]}),{145:se,449:132,450:133},{183:[1,135]},{405:[1,136]},{2:n,3:138,4:a,5:s,130:[1,144],193:[1,139],353:[1,143],397:140,405:[1,137],410:[1,141],509:[1,142]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:145,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Be,je,{340:204,171:[1,205],198:He}),t(Be,je,{340:207,198:He}),{2:n,3:219,4:a,5:s,77:Je,132:Ye,143:le,144:212,145:he,152:fe,156:Q,181:ge,198:[1,210],199:213,200:215,201:214,202:217,209:209,213:We,214:218,290:z,291:Z,292:ee,293:te,302:_e,419:190,420:Ge,424:Ve,453:208},{2:n,3:221,4:a,5:s},{353:[1,222]},t(Xe,[2,1043],{80:223,106:224,107:[1,225]}),t(Ke,[2,1047],{90:226}),{2:n,3:230,4:a,5:s,190:[1,228],193:[1,231],267:[1,227],353:[1,232],405:[1,229]},{353:[1,233]},{2:n,3:236,4:a,5:s,73:234,75:235},t([306,602,764],r,{12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,9:238,2:n,4:a,5:s,14:i,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,435:[1,237],436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),{435:[1,239]},{435:[1,240]},{2:n,3:242,4:a,5:s,405:[1,241]},{2:n,3:244,4:a,5:s,199:243},t(Qe,[2,311]),{113:245,132:ue,296:Le},{2:n,3:114,4:a,5:s,113:251,131:oe,132:[1,248],143:le,144:246,145:ze,152:fe,156:Q,181:ge,196:250,200:255,201:254,257:252,258:253,265:Ze,274:247,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,302:_e,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:257,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(K,[2,672]),t(K,[2,673]),{2:n,3:168,4:a,5:s,40:259,56:165,77:ie,79:75,89:c,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:258,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,184:99,189:f,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:266,4:a,5:s,113:263,132:ue,296:Le,444:261,445:262,446:264,447:et},{2:n,3:267,4:a,5:s,143:tt,145:rt,431:268},{2:n,3:168,4:a,5:s,56:165,77:ie,94:271,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{505:[1,272]},{2:n,3:100,4:a,5:s,504:274,506:273},{2:n,3:114,4:a,5:s,156:Q,200:275,290:z,291:Z,292:ee,293:te},{2:n,3:168,4:a,5:s,56:165,77:ie,94:276,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(nt,at,{186:280,164:[1,279],185:[1,277],187:[1,278],195:st}),t(it,[2,757],{77:[1,282]}),t([2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],[2,152],{149:[1,283],150:[1,284],190:[1,285],191:[1,286],192:[1,287],193:[1,288],194:[1,289]}),t(ot,[2,1]),t(ot,[2,2]),{6:290,131:[1,439],172:[1,462],245:[1,411],285:[1,373],286:[1,407],370:[1,404],381:[1,295],402:[1,297],410:[1,549],414:[1,471],416:[1,443],417:[1,509],433:[1,442],435:[1,525],440:[1,342],460:[1,418],464:[1,448],470:[1,341],514:[1,307],515:[1,299],516:[1,399],518:[1,291],519:[1,292],520:[1,293],521:[1,294],522:[1,296],523:[1,298],524:[1,300],525:[1,301],526:[1,302],527:[1,303],528:[1,304],529:[1,305],530:[1,306],531:[1,308],532:[1,309],533:[1,310],534:[1,311],535:[1,312],536:[1,313],537:[1,314],538:[1,315],539:[1,316],540:[1,317],541:[1,318],542:[1,319],543:[1,320],544:[1,321],545:[1,322],546:[1,323],547:[1,324],548:[1,325],549:[1,326],550:[1,327],551:[1,328],552:[1,329],553:[1,330],554:[1,331],555:[1,332],556:[1,333],557:[1,334],558:[1,335],559:[1,336],560:[1,337],561:[1,338],562:[1,339],563:[1,340],564:[1,343],565:[1,344],566:[1,345],567:[1,346],568:[1,347],569:[1,348],570:[1,349],571:[1,350],572:[1,351],573:[1,352],574:[1,353],575:[1,354],576:[1,355],577:[1,356],578:[1,357],579:[1,358],580:[1,359],581:[1,360],582:[1,361],583:[1,362],584:[1,363],585:[1,364],586:[1,365],587:[1,366],588:[1,367],589:[1,368],590:[1,369],591:[1,370],592:[1,371],593:[1,372],594:[1,374],595:[1,375],596:[1,376],597:[1,377],598:[1,378],599:[1,379],600:[1,380],601:[1,381],602:[1,382],603:[1,383],604:[1,384],605:[1,385],606:[1,386],607:[1,387],608:[1,388],609:[1,389],610:[1,390],611:[1,391],612:[1,392],613:[1,393],614:[1,394],615:[1,395],616:[1,396],617:[1,397],618:[1,398],619:[1,400],620:[1,401],621:[1,402],622:[1,403],623:[1,405],624:[1,406],625:[1,408],626:[1,409],627:[1,410],628:[1,412],629:[1,413],630:[1,414],631:[1,415],632:[1,416],633:[1,417],634:[1,419],635:[1,420],636:[1,421],637:[1,422],638:[1,423],639:[1,424],640:[1,425],641:[1,426],642:[1,427],643:[1,428],644:[1,429],645:[1,430],646:[1,431],647:[1,432],648:[1,433],649:[1,434],650:[1,435],651:[1,436],652:[1,437],653:[1,438],654:[1,440],655:[1,441],656:[1,444],657:[1,445],658:[1,446],659:[1,447],660:[1,449],661:[1,450],662:[1,451],663:[1,452],664:[1,453],665:[1,454],666:[1,455],667:[1,456],668:[1,457],669:[1,458],670:[1,459],671:[1,460],672:[1,461],673:[1,463],674:[1,464],675:[1,465],676:[1,466],677:[1,467],678:[1,468],679:[1,469],680:[1,470],681:[1,472],682:[1,473],683:[1,474],684:[1,475],685:[1,476],686:[1,477],687:[1,478],688:[1,479],689:[1,480],690:[1,481],691:[1,482],692:[1,483],693:[1,484],694:[1,485],695:[1,486],696:[1,487],697:[1,488],698:[1,489],699:[1,490],700:[1,491],701:[1,492],702:[1,493],703:[1,494],704:[1,495],705:[1,496],706:[1,497],707:[1,498],708:[1,499],709:[1,500],710:[1,501],711:[1,502],712:[1,503],713:[1,504],714:[1,505],715:[1,506],716:[1,507],717:[1,508],718:[1,510],719:[1,511],720:[1,512],721:[1,513],722:[1,514],723:[1,515],724:[1,516],725:[1,517],726:[1,518],727:[1,519],728:[1,520],729:[1,521],730:[1,522],731:[1,523],732:[1,524],733:[1,526],734:[1,527],735:[1,528],736:[1,529],737:[1,530],738:[1,531],739:[1,532],740:[1,533],741:[1,534],742:[1,535],743:[1,536],744:[1,537],745:[1,538],746:[1,539],747:[1,540],748:[1,541],749:[1,542],750:[1,543],751:[1,544],752:[1,545],753:[1,546],754:[1,547],755:[1,548],756:[1,550],757:[1,551],758:[1,552],759:[1,553],760:[1,554],761:[1,555],762:[1,556],763:[1,557]},{1:[2,6]},t(X,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:558,2:n,4:a,5:s,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(ut,[2,1041]),t(ut,[2,1042]),t(X,[2,10]),{16:[1,559]},{2:n,3:244,4:a,5:s,199:560},{405:[1,561]},t(K,[2,760]),{77:ct},{77:[1,563]},{77:lt},{77:[1,565]},{77:[1,566]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:567,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Be,ht,{350:568,156:dt}),{405:[1,570]},{2:n,3:571,4:a,5:s},{193:[1,572]},{2:n,3:578,4:a,5:s,132:ft,137:pt,143:tt,145:rt,152:bt,183:[1,574],431:585,473:573,474:575,475:576,478:577,482:582,493:579,497:581},{130:[1,589],349:586,353:[1,588],410:[1,587]},{113:591,132:ue,183:[2,1141],296:Le,471:590},t(Et,[2,1135],{465:592,3:593,2:n,4:a,5:s}),{2:n,3:594,4:a,5:s},{4:[1,595]},{4:[1,596]},t(re,[2,502]),t(K,[2,686],{74:[1,597]}),t(gt,[2,687]),{2:n,3:598,4:a,5:s},{2:n,3:244,4:a,5:s,199:599},{2:n,3:600,4:a,5:s},t(Be,mt,{398:601,156:vt}),{405:[1,603]},{2:n,3:604,4:a,5:s},t(Be,mt,{398:605,156:vt}),t(Be,mt,{398:606,156:vt}),{2:n,3:607,4:a,5:s},t(St,[2,1129]),t(St,[2,1130]),t(K,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:608,114:625,327:637,2:n,4:a,5:s,53:o,72:u,89:c,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:Rt,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,146:h,154:$t,156:d,170:Mt,171:Ut,179:_t,180:Ft,189:f,266:p,267:b,290:E,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(Qe,[2,288]),t(Qe,[2,289]),t(Qe,[2,290]),t(Qe,[2,291]),t(Qe,[2,292]),t(Qe,[2,293]),t(Qe,[2,294]),t(Qe,[2,295]),t(Qe,[2,296]),t(Qe,[2,297]),t(Qe,[2,298]),t(Qe,[2,299]),t(Qe,[2,300]),t(Qe,[2,301]),t(Qe,[2,302]),t(Qe,[2,303]),t(Qe,[2,304]),t(Qe,[2,305]),{2:n,3:168,4:a,5:s,26:654,27:653,36:649,40:648,56:165,77:ie,79:75,89:c,94:651,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,184:99,189:f,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,264:650,265:me,266:p,267:[1,655],270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:[1,652],291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,339:v,419:190,420:Ge,424:Ve},t(Qe,[2,309]),t(Qe,[2,310]),{77:[1,656]},t([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ar,{77:ct,116:[1,657]}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:658,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:659,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:661,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:662,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve
@@ -9,8 +9,8 @@ n.queries.push(s[o-1]);break;case 424:this.$=new n.Op({left:s[o-4],op:"IN",right
124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{74:[1,1424],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{74:[1,1425],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{74:[1,1426],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(K,[2,581]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:1427,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1428,4:a,5:s},t(K,[2,583]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,120:1429,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{77:[1,1430]},{2:n,3:1431,4:a,5:s},{76:va,139:[2,1149],480:1432,483:1433},t(Qa,[2,1148]),{139:[1,1434]},{139:[2,1152]},t(Sn,[2,737]),t(Dn,[2,744]),t(Dn,[2,1166]),{2:n,3:1268,4:a,5:s,76:[1,1437],351:1435,358:1436,384:1438},{2:n,3:1011,4:a,5:s,100:1439,111:1440},{40:1441,79:75,89:c,184:99,189:f},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1442,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Ma,[2,722]),{2:n,3:1011,4:a,5:s,111:1065,143:fa,145:pa,147:1443,336:1064,337:1066},{2:n,3:168,4:a,5:s,56:165,77:ie,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:1444,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Ma,[2,727]),{2:n,3:244,4:a,5:s,199:1445},{335:Ta,338:Aa,339:ya,511:1446},t(gt,[2,691],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1447,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{74:[1,1448],78:[1,1449]},t(os,[2,543]),t(os,[2,544]),{74:ss,78:[1,1450]},t(gt,[2,565]),t(Ra,[2,380],{114:625,327:637,115:yt,116:Nt,123:Ct,133:Ot,136:wt,138:It,141:kt,142:Lt,179:_t,180:Ft,312:qt,316:Bt,317:jt,318:Ht,319:Jt}),t(Ra,[2,382],{114:625,327:637,115:yt,116:Nt,123:Ct,133:Ot,136:wt,138:It,141:kt,142:Lt,179:_t,180:Ft,312:qt,316:Bt,317:jt,318:Ht,319:Jt}),t(Qe,[2,396]),t(Qe,[2,400]),{78:[1,1451]},{74:pn,78:[1,1452]},t(Qe,[2,422]),t(Qe,[2,424]),{78:[1,1453],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{78:[1,1454]},{74:pn,78:[1,1455]},t(Qe,[2,427]),t(Qe,[2,327]),{77:[1,1456]},t(Qe,rs,{275:1457,276:ns}),t(Qe,rs,{275:1458,276:ns}),t($a,[2,284]),t(Qe,[2,281]),t(Qe,[2,369]),t(Qn,[2,373],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{74:[1,1460],78:[1,1459]},{74:[1,1462],78:[1,1461],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{2:n,3:1325,4:a,5:s},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1194,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,345:1463,419:190,420:Ge,424:Ve},t(Fa,[2,477]),t(Fa,[2,478]),{40:1466,77:sa,79:75,89:c,143:le,144:979,145:ze,149:na,152:fe,181:ge,184:99,189:f,201:980,302:_e,341:1464,342:1465,344:aa,419:190,420:Ge,424:Ve},{2:n,3:1011,4:a,5:s,111:1467},t(Fa,[2,473]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1468,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{77:sa,143:le,144:979,145:ze,152:fe,181:ge,201:980,302:_e,342:1469,419:190,420:Ge,424:Ve},t(Ma,[2,460],{74:Ua}),t(Ma,[2,467]),t(K,[2,694]),t(us,[2,699]),t(us,[2,700]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:817,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,174:1470,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{170:[1,1472],309:[1,1471]},{460:[1,1473]},t(pr,[2,180]),t(ys,[2,240],{85:1474,232:[1,1475]}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1476,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1477,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1478,4:a,5:s},t(ia,[2,170],{216:1357,221:1360,215:1479,205:1480,206:hs,208:ds,222:fs,223:ps,224:bs,225:Es,226:gs,227:ms,228:vs,229:Ss}),{2:n,3:219,4:a,5:s,77:Je,132:Ye,143:le,144:212,145:he,152:fe,156:Q,181:ge,199:213,200:215,201:214,202:217,209:1481,213:We,214:218,290:z,291:Z,292:ee,293:te,302:_e,419:190,420:Ge,424:Ve},t(Ns,[2,205]),t(Ns,[2,206]),{2:n,3:219,4:a,5:s,77:[1,1486],143:le,144:1484,145:he,152:fe,156:Q,181:ge,199:1483,200:1487,201:1485,202:1488,217:1482,290:z,291:Z,292:ee,293:te,302:_e,419:190,420:Ge,424:Ve},{207:[1,1489],223:Cs},{207:[1,1491],223:Rs},t(Os,[2,222]),{206:[1,1495],208:[1,1494],221:1493,223:ps,224:bs,225:Es,226:gs,227:ms,228:vs,229:Ss},t(Os,[2,224]),{223:[1,1496]},{208:[1,1498],223:[1,1497]},{208:[1,1500],223:[1,1499]},{208:[1,1501]},{223:[1,1502]},{223:[1,1503]},{74:ls,204:1504,205:1356,206:hs,208:ds,215:1355,216:1357,221:1360,222:fs,223:ps,224:bs,225:Es,226:gs,227:ms,228:vs,229:Ss},t(Ga,[2,84]),t(da,[2,100]),{74:ws,78:[1,1505]},{78:[1,1507]},t(Is,[2,261]),{78:[2,1060]},t(Is,[2,263],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,242:[1,1508],243:[1,1509],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(da,[2,99]),t(Va,[2,1064],{153:1015,179:ca,180:la,181:ha}),t(da,[2,101]),t(da,[2,102]),t(da,[2,103]),t(da,[2,121]),t(da,[2,124]),t(da,[2,127]),t(Va,[2,1068],{153:1015,179:ca,180:la,181:ha}),t(da,[2,128]),t(Va,[2,1070],{153:1015,179:ca,180:la,181:ha}),t(da,[2,129]),t(Va,[2,1072],{153:1015,179:ca,180:la,181:ha}),t(da,[2,130]),t(Va,[2,1076],{153:1015,179:ca,180:la,181:ha}),t(da,[2,131]),t(Ba,[2,1083],{177:1510}),t(Ba,[2,1086],{153:1015,179:ca,180:la,181:ha}),{74:As,78:[1,1511]},t(da,[2,133]),t(Va,[2,1078],{153:1015,179:ca,180:la,181:ha}),t(da,[2,134]),t(Va,[2,1080],{153:1015,179:ca,180:la,181:ha}),t(da,[2,135]),t(da,[2,136]),t(da,[2,137]),t(da,[2,138]),t(da,[2,139]),t(da,[2,140]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:1512,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Ha,[2,1082],{153:1015,179:ca,180:la,181:ha}),t(K,[2,607]),t(K,[2,603]),t(K,[2,605]),t(K,[2,601]),t(dn,[2,71]),t(K,[2,449],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(Ya,[2,452]),t(Ya,[2,453],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1513,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Wa,[2,662]),t(K,[2,655],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{2:n,3:1514,4:a,5:s},t(Sn,[2,545],{385:1515,391:1516,392:1517,366:1525,154:xs,187:Ds,230:ks,297:Ls,343:$s,356:Ms,368:Us,369:_s,373:Fs,374:Ps}),t(Sn,[2,535]),t(K,[2,576],{76:[1,1529]}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1530,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1531,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1532,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1533,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{74:pn,78:[1,1534]},t(K,[2,585]),{74:ws,78:[1,1535]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,120:1536,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t([10,74,78,139,306,310,602,764],[2,741]),{139:[1,1537]},{139:[2,1150]},{2:n,3:1122,4:a,5:s,132:ft,137:pt,143:tt,145:rt,152:bt,431:585,475:1124,478:1538,482:582,493:579,497:581},{78:[1,1539]},{74:[1,1540],78:[2,506]},{40:1541,79:75,89:c,184:99,189:f},t(os,[2,532]),{74:as,78:[1,1542]},t(Ts,is),t(K,[2,1133],{412:1543,413:1544,72:qs}),t(Ma,za,{79:75,184:99,114:625,327:637,40:1299,468:1546,89:c,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,146:Za,154:$t,170:Mt,171:Ut,179:_t,180:Ft,189:f,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr,470:es}),t(Ma,[2,725],{74:Ja}),t(Ma,[2,726],{74:pn}),t([10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],[2,1181],{512:1547,3:1548,2:n,4:a,5:s,76:[1,1549]}),t(Gs,[2,1183],{513:1550,76:[1,1551]}),t(gt,[2,692],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{131:[1,1552]},t(Na,[2,538]),t(Na,[2,540]),t(Qe,[2,412]),t(Qe,[2,413]),t(Qe,[2,439]),t(Qe,[2,423]),t(Qe,[2,425]),{118:Vs,277:1553,278:1554,279:[1,1555]},t(Qe,[2,328]),t(Qe,[2,329]),t(Qe,[2,316]),{131:[1,1557]},t(Qe,[2,318]),{131:[1,1558]},{74:ss,78:[1,1559]},{77:sa,143:le,144:979,145:ze,152:fe,181:ge,201:980,302:_e,342:1560,419:190,420:Ge,424:Ve},t(Ma,[2,465],{74:Ua}),t(Ma,[2,468]),t(Ts,[2,488]),t(os,[2,480],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(Ma,[2,459],{74:Ua}),t(K,[2,718],{74:ga,198:[1,1561]}),{335:Bs,338:js,461:1562},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1565,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{119:[1,1567],170:[1,1568],309:[1,1566]},t(Hs,[2,259],{86:1569,118:[1,1570]}),{119:[1,1571]},t(cs,[2,239],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{95:[1,1572],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{95:[1,1573]},t(Ns,[2,203]),t(Ns,[2,204]),t(Ts,[2,178]),t(Ns,[2,237],{218:1574,230:[1,1575],231:[1,1576]}),t(Js,[2,208],{3:1577,2:n,4:a,5:s,76:[1,1578]}),t(Ys,[2,1095],{219:1579,76:[1,1580]}),{2:n,3:1581,4:a,5:s,76:[1,1582]},{40:1583,79:75,89:c,184:99,189:f},t(Js,[2,216],{3:1584,2:n,4:a,5:s,76:[1,1585]}),t(Js,[2,219],{3:1586,2:n,4:a,5:s,76:[1,1587]}),{77:[1,1588]},t(Os,[2,234]),{77:[1,1589]},t(Os,[2,230]),t(Os,[2,223]),{223:Rs},{223:Cs},t(Os,[2,225]),t(Os,[2,226]),{223:[1,1590]},t(Os,[2,228]),{223:[1,1591]},{223:[1,1592]},t(Os,[2,232]),t(Os,[2,233]),{78:[1,1593],205:1480,206:hs,208:ds,215:1479,216:1357,221:1360,222:fs,223:ps,224:bs,225:Es,226:gs,227:ms,228:vs,229:Ss},t(da,[2,91]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1594,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(da,[2,92]),t(Is,[2,264]),{244:[1,1595]},t(os,[2,142],{419:190,3:733,114:736,144:758,158:768,160:769,117:1596,2:n,4:a,5:s,72:Tr,76:Ar,77:yr,112:Nr,115:yt,116:Nt,118:Cr,122:Rr,123:Or,124:wr,128:Ir,129:xr,130:Dr,131:kr,132:Lr,133:$r,134:Mr,135:Ur,136:_r,137:Fr,138:Pr,139:qr,140:Gr,141:Vr,142:Br,143:jr,145:Hr,146:Jr,148:Yr,149:Wr,150:Xr,152:Kr,154:Qr,156:zr,162:Zr,164:en,166:tn,168:rn,169:nn,170:an,171:sn,172:on,173:un,175:cn,185:ln,187:hn,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,420:Ge,424:Ve}),t(da,[2,132]),{74:pn,78:[1,1597]},t(Ya,[2,454],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(K,[2,572]),t(Sn,[2,534]),t(Sn,[2,546],{366:1525,392:1598,154:xs,187:Ds,230:ks,297:Ls,343:$s,356:Ms,368:Us,369:_s,373:Fs,374:Ps}),t(fn,[2,548]),{370:[1,1599]},{370:[1,1600]},{2:n,3:244,4:a,5:s,199:1601},t(fn,[2,554],{77:[1,1602]}),{2:n,3:114,4:a,5:s,77:[1,1604],113:251,131:oe,132:ue,143:le,152:fe,156:Q,181:ge,196:250,200:1605,201:254,257:252,258:253,265:Ze,274:1603,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,302:_e},t(fn,[2,558]),{297:[1,1606]},t(fn,[2,560]),t(fn,[2,561]),{335:[1,1607]},{77:[1,1608]},{2:n,3:1609,4:a,5:s},{78:[1,1610],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{78:[1,1611],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{78:[1,1612],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{78:[1,1613],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(K,Xa,{407:1614,76:Ka}),t(K,[2,591]),{74:ws,78:[1,1615]},{2:n,3:1122,4:a,5:s,132:ft,137:pt,143:tt,145:rt,152:bt,431:585,475:1124,478:1616,482:582,493:579,497:581},t(Sn,[2,735]),t(K,[2,493],{352:1617,354:1618,355:1619,4:Ws,243:Xs,343:Ks,356:Qs}),t(zs,Zs,{3:1268,359:1624,384:1625,360:1626,361:1627,2:n,4:a,5:s,367:ei}),{78:[2,507]},{76:[1,1629]},t(K,[2,609]),t(K,[2,1134]),{368:[1,1631],414:[1,1630]},t(Ma,[2,728]),t(K,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1632,2:n,4:a,5:s,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(K,[2,762]),t(Gs,[2,1182]),t(K,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1633,2:n,4:a,5:s,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(Gs,[2,1184]),{78:[1,1634]},{78:[1,1635],118:Vs,278:1636},{78:[1,1637]},{119:[1,1638]},{119:[1,1639]},{78:[1,1640]},{78:[1,1641]},t(Fa,[2,476]),t(Ma,[2,464],{74:Ua}),{2:n,3:244,4:a,5:s,143:tt,145:rt,199:1643,431:1642},t(us,[2,703]),t(us,[2,705]),{146:[1,1644]},{99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,309:[1,1645],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{339:ti,462:1646},{417:[1,1649],463:[1,1648]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1650,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(ri,[2,267],{87:1651,245:[1,1652],247:[1,1653]}),{119:[1,1654]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1655,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1661,4:a,5:s},{2:n,3:1662,4:a,5:s},t(Ns,[2,207]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1663,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1011,4:a,5:s,100:1664,111:1440},t(Js,[2,209]),{2:n,3:1665,4:a,5:s},t(Js,[2,1097],{220:1666,3:1667,2:n,4:a,5:s}),t(Ys,[2,1096]),t(Js,[2,212]),{2:n,3:1668,4:a,5:s},{78:[1,1669]},t(Js,[2,217]),{2:n,3:1670,4:a,5:s},t(Js,[2,220]),{2:n,3:1671,4:a,5:s},{40:1672,79:75,89:c,184:99,189:f},{40:1673,79:75,89:c,184:99,189:f},t(Os,[2,227]),t(Os,[2,229]),t(Os,[2,231]),t(ia,[2,171]),t(Is,[2,262]),t(Is,[2,265],{242:[1,1674]}),t(Ba,[2,1084],{153:1015,179:ca,180:la,181:ha}),t(da,[2,141]),t(fn,[2,547]),t(fn,[2,550]),{374:[1,1675]},t(fn,[2,1127],{395:1676,393:1677,77:ii}),{131:oe,196:1679},t(fn,[2,555]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1680,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(fn,[2,557]),t(fn,[2,559]),{2:n,3:114,4:a,5:s,77:[1,1682],113:251,131:oe,132:ue,143:le,152:fe,156:Q,181:ge,196:250,200:255,201:254,257:252,258:253,265:Ze,274:1681,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,302:_e},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1683,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(K,[2,578]),t(sr,[2,349]),t(sr,[2,350]),t(sr,[2,351]),t(sr,[2,352]),t(K,[2,582]),t(K,[2,592]),t(Sn,[2,734]),t(K,[2,489]),t(K,[2,494],{355:1684,4:Ws,243:Xs,343:Ks,356:Qs}),t(oi,[2,496]),t(oi,[2,497]),{124:[1,1685]},{124:[1,1686]},{124:[1,1687]},{74:[1,1688],78:[2,505]},t(os,[2,533]),t(os,[2,508]),{187:[1,1696],193:[1,1697],362:1689,363:1690,364:1691,365:1692,366:1693,368:Us,369:[1,1694],370:[1,1698],373:[1,1695]},{2:n,3:1699,4:a,5:s},{40:1700,79:75,89:c,184:99,189:f},{415:[1,1701]},{416:[1,1702]},t(K,[2,761]),t(K,[2,763]),t(Na,[2,537]),t(Qe,[2,331]),{78:[1,1703]},t(Qe,[2,332]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1704,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,120:1705,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Qe,[2,317]),t(Qe,[2,319]),{2:n,3:1706,4:a,5:s},t(K,[2,720],{77:[1,1707]}),{2:n,3:1011,4:a,5:s,111:1065,143:fa,145:pa,147:1708,336:1064,337:1066},{335:Bs,338:js,461:1709},t(us,[2,707]),{77:[1,1711],343:[1,1712],344:[1,1710]},{170:[1,1714],309:[1,1713]},{170:[1,1716],309:[1,1715]},{99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,309:[1,1717],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(ua,[2,250],{88:1718,162:[1,1719],168:[1,1721],169:[1,1720]}),{131:oe,196:1722},{131:oe,196:1723},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,120:1724,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(ys,[2,248],{234:1725,74:ui,239:[1,1727]}),t(ci,[2,242]),{146:[1,1728]},{77:[1,1729]},{77:[1,1730]},t(ci,[2,247],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{78:[2,1051],96:1731,99:[1,1733],102:1732},{99:[1,1734]},t(Ns,[2,235],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(Ns,[2,236],{74:as}),t(Js,[2,210]),t(Js,[2,211]),t(Js,[2,1098]),t(Js,[2,213]),{2:n,3:1735,4:a,5:s,76:[1,1736]},t(Js,[2,218]),t(Js,[2,221]),{78:[1,1737]},{78:[1,1738]},t(Is,[2,266]),{2:n,3:244,4:a,5:s,199:1739},t(fn,[2,552]),t(fn,[2,1128]),{2:n,3:1740,4:a,5:s},{74:[1,1741]},{78:[1,1742],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,
317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(fn,[2,562]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1743,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{78:[1,1744],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(oi,[2,495]),{2:n,3:1745,4:a,5:s},{131:oe,196:1746},{2:n,3:1747,4:a,5:s},t(zs,Zs,{361:1627,360:1748,367:ei}),t(Sn,[2,510]),t(Sn,[2,511]),t(Sn,[2,512]),t(Sn,[2,513]),t(Sn,[2,514]),{370:[1,1749]},{370:[1,1750]},t(li,[2,1121],{382:1751,370:[1,1752]}),{2:n,3:1753,4:a,5:s},{2:n,3:1754,4:a,5:s},t(zs,[2,516]),t(K,[2,1131],{411:1755,413:1756,72:qs}),t(K,[2,610]),t(K,[2,611],{367:[1,1757]}),t(Qe,[2,333]),t([78,118],[2,334],{74:ui}),{74:ws,78:[2,335]},t(K,[2,719]),{2:n,3:1011,4:a,5:s,100:1758,111:1440},t(us,[2,706],{74:Ja}),t(us,[2,704]),{77:sa,143:le,144:979,145:ze,152:fe,181:ge,201:980,302:_e,342:1759,419:190,420:Ge,424:Ve},{2:n,3:1011,4:a,5:s,100:1760,111:1440},{344:[1,1761]},{339:ti,462:1762},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1763,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{339:ti,462:1764},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1765,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{339:ti,462:1766},t(ua,[2,72]),{40:1767,79:75,89:c,164:[1,1768],184:99,189:f,240:[1,1769]},{40:1770,79:75,89:c,184:99,189:f,240:[1,1771]},{40:1772,79:75,89:c,184:99,189:f,240:[1,1773]},t(ri,[2,270],{246:1774,247:[1,1775]}),{248:1776,249:[2,1099],766:[1,1777]},t(Hs,[2,260],{74:ws}),t(ys,[2,241]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,235:1778,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1779,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{77:[1,1780]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1781,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1782,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{78:[1,1783]},{78:[2,1052]},{77:[1,1784]},{77:[1,1785]},t(Js,[2,214]),{2:n,3:1786,4:a,5:s},{2:n,3:1787,4:a,5:s,76:[1,1788]},{2:n,3:1789,4:a,5:s,76:[1,1790]},t(fn,[2,1125],{394:1791,393:1792,77:ii}),{78:[1,1793]},{131:oe,196:1794},t(fn,[2,556]),{78:[1,1795],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(fn,[2,517]),t(oi,[2,498]),t(oi,[2,499]),t(oi,[2,500]),t(os,[2,509]),{2:n,3:1797,4:a,5:s,77:[2,1117],371:1796},{77:[1,1798]},{2:n,3:1800,4:a,5:s,77:[2,1123],383:1799},t(li,[2,1122]),{77:[1,1801]},{77:[1,1802]},t(K,[2,608]),t(K,[2,1132]),t(zs,Zs,{361:1627,360:1803,367:ei}),{74:as,78:[1,1804]},t(us,[2,713],{74:Ua}),{74:as,78:[1,1805]},t(us,[2,715]),t(us,[2,708]),{99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,309:[1,1806],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(us,[2,711]),{99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,309:[1,1807],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(us,[2,709]),t(ua,[2,251]),{40:1808,79:75,89:c,184:99,189:f,240:[1,1809]},{40:1810,79:75,89:c,184:99,189:f},t(ua,[2,253]),{40:1811,79:75,89:c,184:99,189:f},t(ua,[2,254]),{40:1812,79:75,89:c,184:99,189:f},t(ri,[2,268]),{131:oe,196:1813},{249:[1,1814]},{249:[2,1100]},t(ci,[2,243]),t(ys,[2,249],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1815,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{74:ui,78:[1,1816]},{74:ui,78:[1,1817]},t(qa,[2,1053],{97:1818,104:1819,3:1821,2:n,4:a,5:s,76:hi}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1824,103:1822,105:1823,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1011,4:a,5:s,100:1825,111:1440},t(Js,[2,215]),t(Ns,[2,173]),{2:n,3:1826,4:a,5:s},t(Ns,[2,175]),{2:n,3:1827,4:a,5:s},t(fn,[2,551]),t(fn,[2,1126]),t(fn,[2,549]),{78:[1,1828]},t(fn,[2,563]),{77:[1,1829]},{77:[2,1118]},{2:n,3:1831,4:a,5:s,132:di,372:1830},{77:[1,1833]},{77:[2,1124]},{2:n,3:1011,4:a,5:s,100:1834,111:1440},{2:n,3:1011,4:a,5:s,100:1835,111:1440},t(K,[2,612]),t(K,[2,721]),{343:[1,1837],344:[1,1836]},{339:ti,462:1838},{335:Bs,338:js,461:1839},t(ua,[2,252]),{40:1840,79:75,89:c,184:99,189:f},t(ua,[2,255]),t(ua,[2,257]),t(ua,[2,258]),t(ri,[2,271]),{131:[2,1101],250:1841,645:[1,1842]},{74:ui,78:[1,1843]},t(ci,[2,245]),t(ci,[2,246]),t(qa,[2,74]),t(qa,[2,1054]),{2:n,3:1844,4:a,5:s},t(qa,[2,78]),{74:[1,1846],78:[1,1845]},t(os,[2,80]),t(os,[2,81],{114:625,327:637,76:[1,1847],99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{74:as,78:[1,1848]},t(Ns,[2,174]),t(Ns,[2,176]),t(fn,[2,553]),{2:n,3:1831,4:a,5:s,132:di,372:1849},{74:fi,78:[1,1850]},t(os,[2,528]),t(os,[2,529]),{2:n,3:1011,4:a,5:s,100:1852,111:1440},{74:as,78:[1,1853]},{74:as,78:[1,1854]},{77:sa,143:le,144:979,145:ze,152:fe,181:ge,201:980,302:_e,342:1855,419:190,420:Ge,424:Ve},{344:[1,1856]},t(us,[2,710]),t(us,[2,712]),t(ua,[2,256]),{131:oe,196:1857},{131:[2,1102]},t(ci,[2,244]),t(qa,[2,77]),{78:[2,76]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1824,105:1858,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1859,4:a,5:s},{78:[1,1860]},{74:fi,78:[1,1861]},{374:[1,1862]},{2:n,3:1863,4:a,5:s,132:[1,1864]},{74:as,78:[1,1865]},t(Sn,[2,526]),t(Sn,[2,527]),t(us,[2,714],{74:Ua}),t(us,[2,716]),t(pi,[2,1103],{251:1866,766:[1,1867]}),t(os,[2,79]),t(os,[2,82]),t(qa,[2,1055],{3:1821,101:1868,104:1869,2:n,4:a,5:s,76:hi}),t(Sn,[2,518]),{2:n,3:244,4:a,5:s,199:1870},t(os,[2,530]),t(os,[2,531]),t(Sn,[2,525]),t(ri,[2,1105],{252:1871,415:[1,1872]}),t(pi,[2,1104]),t(qa,[2,75]),t(qa,[2,1056]),t(bi,[2,1119],{375:1873,377:1874,77:[1,1875]}),t(ri,[2,269]),t(ri,[2,1106]),t(Sn,[2,521],{376:1876,378:1877,230:[1,1878]}),t(bi,[2,1120]),{2:n,3:1831,4:a,5:s,132:di,372:1879},t(Sn,[2,519]),{230:[1,1881],379:1880},{338:[1,1882]},{74:fi,78:[1,1883]},t(Sn,[2,522]),{335:[1,1884]},{380:[1,1885]},t(bi,[2,520]),{380:[1,1886]},{381:[1,1887]},{381:[1,1888]},{230:[2,523]},t(Sn,[2,524])],defaultActions:{105:[2,6],194:[2,336],195:[2,337],196:[2,338],197:[2,339],198:[2,340],199:[2,341],200:[2,342],201:[2,343],202:[2,344],209:[2,695],591:[2,1142],653:[2,1107],654:[2,1108],710:[2,696],780:[2,1073],781:[2,1074],926:[2,446],927:[2,447],928:[2,448],987:[2,697],1288:[2,1152],1375:[2,1060],1433:[2,1150],1541:[2,507],1732:[2,1052],1777:[2,1100],1797:[2,1118],1800:[2,1124],1842:[2,1102],1845:[2,76],1887:[2,523]},parseError:function(e,t){if(!t.recoverable){var r=new Error(e);throw r.hash=t,r}this.trace(e)},parse:function(e){function t(e){for(var t=n.length-1,r=0;;){if(h.toString()in i[e])return r;if(0===e||t<2)return!1;t-=2,e=n[t],++r}}var r=this,n=[0],a=[null],s=[],i=this.table,o="",u=0,c=0,l=0,h=2,d=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var b in this.yy)Object.prototype.hasOwnProperty.call(this.yy,b)&&(p.yy[b]=this.yy[b]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var E=f.yylloc;s.push(E);var g=f.options&&f.options.ranges;"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var m,v,S,T,A,y,N,C,R,O=function(){var e;return e=f.lex()||1,"number"!=typeof e&&(e=r.symbols_[e]||e),e},w={};;){if(S=n[n.length-1],this.defaultActions[S]?T=this.defaultActions[S]:(null!==m&&void 0!==m||(m=O()),T=i[S]&&i[S][m]),void 0===T||!T.length||!T[0]){var I,x="";if(l)1!==v&&(I=t(S));else{I=t(S),R=[];for(y in i[S])this.terminals_[y]&&y>h&&R.push("'"+this.terminals_[y]+"'");x=f.showPosition?"Parse error on line "+(u+1)+":\n"+f.showPosition()+"\nExpecting "+R.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(u+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(x,{text:f.match,token:this.terminals_[m]||m,line:f.yylineno,loc:E,expected:R,recoverable:!1!==I})}if(3==l){if(1===m||1===v)throw new Error(x||"Parsing halted while starting to recover from another error.");c=f.yyleng,o=f.yytext,u=f.yylineno,E=f.yylloc,m=O()}if(!1===I)throw new Error(x||"Parsing halted. No suitable error recovery rule available.");!function(e){n.length=n.length-2*e,a.length=a.length-e,s.length=s.length-e}(I),v=m==h?null:m,m=h,S=n[n.length-1],T=i[S]&&i[S][h],l=3}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+m);switch(T[0]){case 1:n.push(m),a.push(f.yytext),s.push(f.yylloc),n.push(T[1]),m=null,v?(m=v,v=null):(c=f.yyleng,o=f.yytext,u=f.yylineno,E=f.yylloc,l>0&&l--);break;case 2:if(N=this.productions_[T[1]][1],w.$=a[a.length-N],w._$={first_line:s[s.length-(N||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(N||1)].first_column,last_column:s[s.length-1].last_column},g&&(w._$.range=[s[s.length-(N||1)].range[0],s[s.length-1].range[1]]),void 0!==(A=this.performAction.apply(w,[o,c,u,p.yy,T[1],a,s].concat(d))))return A;N&&(n=n.slice(0,-1*N*2),a=a.slice(0,-1*N),s=s.slice(0,-1*N)),n.push(this.productions_[T[1]][0]),a.push(w.$),s.push(w._$),C=i[n[n.length-2]][n[n.length-1]],n.push(C);break;case 3:return!0}}return!0}},gi=["A","ABSENT","ABSOLUTE","ACCORDING","ACTION","ADA","ADD","ADMIN","AFTER","ALWAYS","ASC","ASSERTION","ASSIGNMENT","ATTRIBUTE","ATTRIBUTES","BASE64","BEFORE","BERNOULLI","BLOCKED","BOM","BREADTH","C","CASCADE","CATALOG","CATALOG_NAME","CHAIN","CHARACTERISTICS","CHARACTERS","CHARACTER_SET_CATALOG","CHARACTER_SET_NAME","CHARACTER_SET_SCHEMA","CLASS_ORIGIN","COBOL","COLLATION","COLLATION_CATALOG","COLLATION_NAME","COLLATION_SCHEMA","COLUMNS","COLUMN_NAME","COMMAND_FUNCTION","COMMAND_FUNCTION_CODE","COMMITTED","CONDITION_NUMBER","CONNECTION","CONNECTION_NAME","CONSTRAINTS","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONSTRUCTOR","CONTENT","CONTINUE","CONTROL","CURSOR_NAME","DATA","DATETIME_INTERVAL_CODE","DATETIME_INTERVAL_PRECISION","DB","DEFAULTS","DEFERRABLE","DEFERRED","DEFINED","DEFINER","DEGREE","DEPTH","DERIVED","DESC","DESCRIPTOR","DIAGNOSTICS","DISPATCH","DOCUMENT","DOMAIN","DYNAMIC_FUNCTION","DYNAMIC_FUNCTION_CODE","EMPTY","ENCODING","ENFORCED","EXCLUDE","EXCLUDING","EXPRESSION","FILE","FINAL","FIRST","FLAG","FOLLOWING","FORTRAN","FOUND","FS","G","GENERAL","GENERATED","GO","GOTO","GRANTED","HEX","HIERARCHY","ID","IGNORE","IMMEDIATE","IMMEDIATELY","IMPLEMENTATION","INCLUDING","INCREMENT","INDENT","INITIALLY","INPUT","INSTANCE","INSTANTIABLE","INSTEAD","INTEGRITY","INVOKER","ISOLATION","K","KEY","KEY_MEMBER","KEY_TYPE","LAST","LENGTH","LEVEL","LIBRARY","LIMIT","LINK","LOCATION","LOCATOR","M","MAP","MAPPING","MATCHED","MAXVALUE","MESSAGE_LENGTH","MESSAGE_OCTET_LENGTH","MESSAGE_TEXT","MINVALUE","MORE","MUMPS","NAME","NAMES","NAMESPACE","NESTING","NEXT","NFC","NFD","NFKC","NFKD","NIL","NORMALIZED","NULLABLE","NULLS","NUMBER","OBJECT","OCTETS","OFF","OPTION","OPTIONS","ORDERING","ORDINALITY","OTHERS","OUTPUT","OVERRIDING","P","PAD","PARAMETER_MODE","PARAMETER_NAME","PARAMETER_ORDINAL_POSITION","PARAMETER_SPECIFIC_CATALOG","PARAMETER_SPECIFIC_NAME","PARAMETER_SPECIFIC_SCHEMA","PARTIAL","PASCAL","PASSING","PASSTHROUGH","PATH","PERMISSION","PLACING","PLI","PRECEDING","PRESERVE","PRIOR","PRIVILEGES","PUBLIC","READ","RECOVERY","RELATIVE","REPEATABLE","REQUIRING","RESPECT","RESTART","RESTORE","RESTRICT","RETURNED_CARDINALITY","RETURNED_LENGTH","RETURNED_OCTET_LENGTH","RETURNED_SQLSTATE","RETURNING","ROLE","ROUTINE","ROUTINE_CATALOG","ROUTINE_NAME","ROUTINE_SCHEMA","ROW_COUNT","SCALE","SCHEMA","SCHEMA_NAME","SCOPE_CATALOG","SCOPE_NAME","SCOPE_SCHEMA","SECTION","SECURITY","SELECTIVE","SELF","SEQUENCE","SERIALIZABLE","SERVER","SERVER_NAME","SESSION","SETS","SIMPLE","SIZE","SOURCE","SPACE","SPECIFIC_NAME","STANDALONE","STATE","STATEMENT","STRIP","STRUCTURE","STYLE","SUBCLASS_ORIGIN","T","TABLE_NAME","TEMPORARY","TIES","TOKEN","TOP_LEVEL_COUNT","TRANSACTION","TRANSACTIONS_COMMITTED","TRANSACTIONS_ROLLED_BACK","TRANSACTION_ACTIVE","TRANSFORM","TRANSFORMS","TRIGGER_CATALOG","TRIGGER_NAME","TRIGGER_SCHEMA","TYPE","UNBOUNDED","UNCOMMITTED","UNDER","UNLINK","UNNAMED","UNTYPED","URI","USAGE","USER_DEFINED_TYPE_CATALOG","USER_DEFINED_TYPE_CODE","USER_DEFINED_TYPE_NAME","USER_DEFINED_TYPE_SCHEMA","VALID","VERSION","VIEW","WHITESPACE","WORK","WRAPPER","WRITE","XMLDECLARATION","XMLSCHEMA","YES","ZONE"];Ei.parseError=function(e,t){if(!(t.expected&&t.expected.indexOf("'LITERAL'")>-1&&/[a-zA-Z_][a-zA-Z_0-9]*/.test(t.token)&&gi.indexOf(t.token)>-1))throw new SyntaxError(e)};var mi=function(){return{EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,r=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var r,n,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),n=e[0].match(/(?:\r\n?|\n).*/g),n&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],r=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var s in a)this[s]=a[s];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,r,n;this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),s=0;st[0].length)){if(t=r,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(r,a[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,a[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,r,n){switch(r){case 0:return 266;case 1:return 302;case 2:return 420;case 3:return 299;case 4:case 5:return 5;case 6:case 7:return 296;case 8:case 9:return 132;case 10:return;case 11:break;case 12:return 316;case 13:return 319;case 14:return t.yytext="VALUE",89;case 15:return t.yytext="VALUE",189;case 16:return t.yytext="ROW",189;case 17:return t.yytext="COLUMN",189;case 18:return t.yytext="MATRIX",189;case 19:return t.yytext="INDEX",189;case 20:return t.yytext="RECORDSET",189;case 21:return t.yytext="TEXT",189;case 22:return t.yytext="SELECT",189;case 23:return 520;case 24:return 381;case 25:return 402;case 26:return 515;case 27:return 287;case 28:case 29:return 269;case 30:return 164;case 31:return 400;case 32:return 170;case 33:return 229;case 34:return 166;case 35:return 207;case 36:return 288;case 37:return 76;case 38:return 418;case 39:return 242;case 40:return 404;case 41:return 356;case 42:return 284;case 43:return 514;case 44:return 437;case 45:return 330;case 46:return 441;case 47:return 331;case 48:return 315;case 49:return 119;case 50:return 112;case 51:return 315;case 52:return 112;case 53:return 315;case 54:return 112;case 55:return 315;case 56:return 508;case 57:return 303;case 58:return 271;case 59:return 368;case 60:return 130;case 61:return"CLOSE";case 62:return 243;case 63:case 64:return 190;case 65:return 434;case 66:return 367;case 67:return 470;case 68:return 440;case 69:return 273;case 70:return 240;case 71:return 281;case 72:return 267;case 73:return 206;case 74:return 238;case 75:return 265;case 76:return"CURSOR";case 77:return 405;case 78:return 291;case 79:return 292;case 80:return 448;case 81:return 343;case 82:return 338;case 83:return"DELETED";case 84:return 242;case 85:return 406;case 86:return 185;case 87:return 396;case 88:return 447;case 89:return 135;case 90:return 306;case 91:return 389;case 92:return 310;case 93:return 314;case 94:return 169;case 95:case 96:return 508;case 97:return 298;case 98:return 14;case 99:return 295;case 100:return 249;case 101:return 285;case 102:return 95;case 103:return 373;case 104:return 183;case 105:return 227;case 106:return 268;case 107:return 313;case 108:return 602;case 109:return 472;case 110:return 232;case 111:return 236;case 112:return 239;case 113:return 156;case 114:return 356;case 115:return 332;case 116:return 99;case 117:return 193;case 118:return 212;case 119:return 224;case 120:return 516;case 121:return 339;case 122:return 213;case 123:return 168;case 124:return 293;case 125:return 198;case 126:return 223;case 127:return 370;case 128:return 286;case 129:return"LET";case 130:return 225;case 131:return 112;case 132:return 245;case 133:return 460;case 134:return 191;case 135:return 283;case 136:return 390;case 137:return 282;case 138:return 452;case 139:return 169;case 140:return 403;case 141:return 222;case 142:return 645;case 143:return 270;case 144:return 244;case 145:return 380;case 146:return 154;case 147:return 297;case 148:return 433;case 149:return 230;case 150:return 415;case 151:return 129;case 152:return 247;case 153:return"OPEN";case 154:return 416;case 155:return 171;case 156:return 118;case 157:return 208;case 158:return 276;case 159:return 172;case 160:return 279;case 161:return 765;case 162:return 93;case 163:return 16;case 164:return 369;case 165:return 442;case 166:return 678;case 167:return 15;case 168:return 414;case 169:return 194;case 170:return"REDUCE";case 171:return 374;case 172:return 311;case 173:return 517;case 174:return 682;case 175:return 107;case 176:return 401;case 177:return 175;case 178:return 290;case 179:return 443;case 180:return 687;case 181:case 182:return 173;case 183:return 226;case 184:return 436;case 185:return 237;case 186:return 150;case 187:return 766;case 188:return 405;case 189:return 89;case 190:return 228;case 191:case 192:return 146;case 193:return 409;case 194:return 334;case 195:return 417;case 196:return"STRATEGY";case 197:return"STORE";case 198:return 280;case 199:case 200:return 353;case 201:return 463;case 202:case 203:return 357;case 204:return 192;case 205:return 309;case 206:return"TIMEOUT";case 207:return 148;case 208:return 195;case 209:case 210:return 435;case 211:return 509;case 212:return 294;case 213:return 451;case 214:return 162;case 215:return 187;case 216:return 98;case 217:return 335;case 218:return 408;case 219:return 231;case 220:return 149;case 221:return 344;case 222:return 134;case 223:return 410;case 224:return 308;case 225:return 128;case 226:return 439;case 227:return 72;case 228:return 435;case 229:case 230:return 131;case 231:return 115;case 232:return 137;case 233:return 179;case 234:return 317;case 235:return 180;case 236:return 133;case 237:return 138;case 238:return 326;case 239:return 323;case 240:return 325;case 241:return 322;case 242:return 320;case 243:return 318;case 244:return 319;case 245:return 142;case 246:return 141;case 247:return 139;case 248:return 321;case 249:return 324;case 250:return 140;case 251:return 124;case 252:return 324;case 253:return 77;case 254:return 78;case 255:return 145;case 256:return 424;case 257:return 426;case 258:return 300;case 259:return 505;case 260:return 507;case 261:return 122;case 262:return 116;case 263:return 74;case 264:return 333;case 265:return 152;case 266:return 764;case 267:return 143;case 268:return 181;case 269:return 136;case 270:return 123;case 271:return 312;case 272:return 4;case 273:return 10;case 274:return"INVALID"}},
rules:[/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:ARRAY\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:\|)/i,/^(?:VALUE\s+OF\s+SEARCH\b)/i,/^(?:VALUE\s+OF\s+SELECT\b)/i,/^(?:ROW\s+OF\s+SELECT\b)/i,/^(?:COLUMN\s+OF\s+SELECT\b)/i,/^(?:MATRIX\s+OF\s+SELECT\b)/i,/^(?:INDEX\s+OF\s+SELECT\b)/i,/^(?:RECORDSET\s+OF\s+SELECT\b)/i,/^(?:TEXT\s+OF\s+SELECT\b)/i,/^(?:SELECT\b)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AFTER\b)/i,/^(?:AGGR\b)/i,/^(?:AGGREGATE\b)/i,/^(?:AGGREGATOR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTO(_)?INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEFORE\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:~~\*)/i,/^(?:!~~\*)/i,/^(?:~~)/i,/^(?:!~~)/i,/^(?:ILIKE\b)/i,/^(?:NOT\s+ILIKE\b)/i,/^(?:CALL\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHECK\b)/i,/^(?:CLASS\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTENT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:CORRESPONDING\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE(S)?)/i,/^(?:DATEADD\b)/i,/^(?:DATEDIFF\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:ECHO\b)/i,/^(?:EDGE\b)/i,/^(?:END\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:ESCAPE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXEC\b)/i,/^(?:EXECUTE\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOR\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:FULL\b)/i,/^(?:FUNCTION\b)/i,/^(?:GLOB\b)/i,/^(?:GO\b)/i,/^(?:GRAPH\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INDEXED\b)/i,/^(?:INNER\b)/i,/^(?:INSTEAD\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTERVAL\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LET\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX(\s+)?(?=\())/i,/^(?:MAX(\s+)?(?=(,|\))))/i,/^(?:MIN(\s+)?(?=\())/i,/^(?:MERGE\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:ONLY\b)/i,/^(?:OF\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OPTION\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PATH\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PIVOT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:READ\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:REGEXP\b)/i,/^(?:REINDEX\b)/i,/^(?:RELATIVE\b)/i,/^(?:REMOVE\b)/i,/^(?:RENAME\b)/i,/^(?:REPEAT\b)/i,/^(?:REPLACE\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RETURN\b)/i,/^(?:RETURNS\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:ROWS\b)/i,/^(?:SCHEMA(S)?)/i,/^(?:SEARCH\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:SOURCE\b)/i,/^(?:STRATEGY\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TEMP\b)/i,/^(?:TEMPORARY\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:THEN\b)/i,/^(?:TIMEOUT\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRIGGER\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UNPIVOT\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE\b)/i,/^(?:VALUES\b)/i,/^(?:VERTEX\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:#)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:&)/i,/^(?:\|)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?::-)/i,/^(?:\?-)/i,/^(?:\.\.)/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:!)/i,/^(?:\^)/i,/^(?:~)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274],inclusive:!0}}}}();return Ei.lexer=mi,e.prototype=Ei,Ei.Parser=e,new e}();void 0!==A&&"undefined"!=typeof exports&&(exports.parser=y,exports.Parser=y.Parser,exports.parse=function(){return y.parse.apply(y,arguments)},exports.main=function(e){e[1]||(console.log("Usage: "+e[0]+" FILE"),process.exit(1));var t=A("fs").readFileSync(A("path").normalize(e[1]),"utf8");return exports.parser.parse(t)},"undefined"!=typeof module&&A.main===module&&exports.main(process.argv.slice(1))),T.prettyflag=!1,T.pretty=function(e,t){var r=T.prettyflag;T.prettyflag=!t;var n=T.parse(e).toString();return T.prettyflag=r,n};var N=T.utils={},C=N.escapeq=function(e){return(""+e).replace(/["'\\\n\r\u2028\u2029]/g,function(e){switch(e){case'"':case"'":case"\\":return"\\"+e;case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029"}})},R=N.undoubleq=function(e){return e.replace(/(\')/g,"''")},O=N.doubleq=function(e){return e.replace(/(\'\')/g,"\\'")},w=(N.doubleqq=function(e){return e.replace(/\'/g,"'")},function(e){return e[0]===String.fromCharCode(65279)&&(e=e.substr(1)),e});N.global=function(){return"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:Function("return this")()}();N.isNativeFunction=function(e){return"function"==typeof e&&!!~e.toString().indexOf("[native code]")};N.isWebWorker=function(){try{var e=N.global.importScripts;return N.isNativeFunction(e)}catch(e){return!1}}(),N.isNode=function(){try{return N.isNativeFunction(N.global.process.reallyExit)}catch(e){return!1}}(),N.isBrowser=function(){try{return N.isNativeFunction(N.global.location.reload)}catch(e){return!1}}(),N.isBrowserify=function(){return N.isBrowser&&"undefined"!=typeof process&&process.browser}(),N.isRequireJS=function(){return N.isBrowser&&"function"==typeof A&&"function"==typeof A.specified}(),N.isMeteor=function(){return"undefined"!=typeof Meteor&&Meteor.release}(),N.isMeteorClient=N.isMeteorClient=function(){return N.isMeteor&&Meteor.isClient}(),N.isMeteorServer=function(){return N.isMeteor&&Meteor.isServer}(),N.isCordova=function(){return"object"==typeof cordova}(),N.isReactNative=function(){return!1}(),N.hasIndexedDB=function(){return!!N.global.indexedDB}(),N.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)};var I=N.loadFile=function(e,t,r,n){var a;if(N.isNode||N.isMeteorServer);else if(N.isCordova)N.global.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(t){t.root.getFile(e,{create:!1},function(e){e.file(function(e){var t=new FileReader;t.onloadend=function(e){r(w(this.result))},t.readAsText(e)})})});else if("string"==typeof e)if("#"===e.substr(0,1)&&"undefined"!=typeof document)a=document.querySelector(e).textContent,r(a);else{var s=new XMLHttpRequest;s.onreadystatechange=function(){if(4===s.readyState)if(200===s.status)r&&r(w(s.responseText));else if(n)return n(s)},s.open("GET",e,t),s.responseType="text",s.send()}else if(e instanceof Event){var i=e.target.files,o=new FileReader;i[0].name;o.onload=function(e){var t=e.target.result;r(w(t))},o.readAsText(i[0])}};N.loadBinaryFile=function(e,t,r,n){if(N.isNode||N.isMeteorServer);else if("string"==typeof e){var a=new XMLHttpRequest;a.open("GET",e,t),a.responseType="arraybuffer",a.onload=function(){for(var e=new Uint8Array(a.response),t=[],n=0;n=26&&(e=(e/26|0)-1,t=String.fromCharCode(65+e%26)+t,e>26&&(e=(e/26|0)-1,t=String.fromCharCode(65+e%26)+t)),t},N.xlscn=function(e){var t=e.charCodeAt(0)-65;return e.length>1&&(t=26*(t+1)+e.charCodeAt(1)-65,e.length>2&&(t=26*(t+1)+e.charCodeAt(2)-65)),t},N.domEmptyChildren=function(e){for(var t=e.childNodes.length;t--;)e.removeChild(e.lastChild)},N.like=function(e,t,r){r||(r="");for(var n=0,a="^";n-1?a+="\\"+s:a+=s,n++}return a+="$",(""+(t||"")).toUpperCase().search(RegExp(a.toUpperCase()))>-1};N.glob=function(e,t){for(var r=0,n="^";r-1?n+="\\"+a:n+=a,r++}return n+="$",(""+(e||"")).toUpperCase().search(RegExp(n.toUpperCase()))>-1},N.findAlaSQLPath=function(){if(N.isWebWorker)return"";if(N.isMeteorClient)return"/packages/dist/";if(N.isMeteorServer)return"assets/packages/dist/";if(N.isNode)return"";if(N.isBrowser)for(var e=document.getElementsByTagName("script"),t=0;tT.MAXSQLCACHESIZE&&i.resetSqlCache(),i.sqlCacheSize++,i.sqlCache[s]=o);var c=T.res=o(r,n,a);return c}T.precompile(u.statements[0],T.useid,r);var c=T.res=u.statements[0].execute(e,r,n,a);return c}if(!n)return T.drun(e,u,r,n,a);T.adrun(e,u,r,n,a)}},T.drun=function(e,t,r,n,a){var s=T.useid;s!==e&&T.use(e);for(var i=[],o=0,u=t.statements.length;oe;e+=2){(0,Q[e])(Q[e+1]),Q[e]=void 0,Q[e+1]=void 0}j=0}function o(e,t){var r=this,n=new this.constructor(c);void 0===n[ee]&&I(n);var a=r._state;if(a){var s=arguments[a-1];H(function(){R(a,n,s,r._result)})}else T(r,n,e,t);return n}function u(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var r=new t(c);return g(r,e),r}function c(){}function l(){return new TypeError("You cannot resolve a promise with itself")}function h(){return new TypeError("A promises callback cannot return that same promise.")}function d(e){try{return e.then}catch(e){return ae.error=e,ae}}function f(e,t,r,n){try{e.call(t,r,n)}catch(e){return e}}function p(e,t,r){H(function(e){var n=!1,a=f(r,t,function(r){n||(n=!0,t!==r?g(e,r):v(e,r))},function(t){n||(n=!0,S(e,t))},"Settle: "+(e._label||" unknown promise"));!n&&a&&(n=!0,S(e,a))},e)}function b(e,t){t._state===re?v(e,t._result):t._state===ne?S(e,t._result):T(t,void 0,function(t){g(e,t)},function(t){S(e,t)})}function E(e,r,n){r.constructor===e.constructor&&n===z&&constructor.resolve===Z?b(e,r):n===ae?S(e,ae.error):void 0===n?v(e,r):t(n)?p(e,r,n):v(e,r)}function g(t,r){t===r?S(t,l()):e(r)?E(t,r,d(r)):v(t,r)}function m(e){e._onerror&&e._onerror(e._result),y(e)}function v(e,t){e._state===te&&(e._result=t,e._state=re,0!==e._subscribers.length&&H(y,e))}function S(e,t){e._state===te&&(e._state=ne,e._result=t,H(m,e))}function T(e,t,r,n){var a=e._subscribers,s=a.length;e._onerror=null,a[s]=t,a[s+re]=r,a[s+ne]=n,0===s&&e._state&&H(y,e)}function y(e){var t=e._subscribers,r=e._state;if(0!==t.length){for(var n,a,s=e._result,i=0;is;s++)t.resolve(e[s]).then(r,n)}:function(e,t){t(new TypeError("You must pass an array to race."))})}function k(e){var t=this,r=new t(c);return S(r,e),r}function L(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function $(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function M(e){this[ee]=w(),this._result=this._state=void 0,this._subscribers=[],c!==e&&("function"!=typeof e&&L(),this instanceof M?O(this,e):$())}function U(e,t){this._instanceConstructor=e,this.promise=new e(c),this.promise[ee]||I(this.promise),Array.isArray(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?v(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&v(this.promise,this._result))):S(this.promise,_())}function _(){return new Error("Array Methods must be provided an Array")}function F(){var e;if("undefined"!=typeof global)e=global;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;(!t||"[object Promise]"!==Object.prototype.toString.call(t.resolve())||t.cast)&&(e.Promise=le)}var P;P=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var q,G,V,B=P,j=0,H=function(e,t){Q[j]=e,Q[j+1]=t,2===(j+=2)&&(G?G(i):V())},J="undefined"!=typeof window?window:void 0,Y=J||{},W=Y.MutationObserver||Y.WebKitMutationObserver,X="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),K="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Q=new Array(1e3);V=X?function(){return function(){process.nextTick(i)}}():W?function(){var e=0,t=new W(i),r=document.createTextNode("");return t.observe(r,{characterData:!0}),function(){r.data=e=++e%2}}():K?function(){var e=new MessageChannel;return e.port1.onmessage=i,function(){e.port2.postMessage(0)}}():void 0===J&&"function"==typeof A?function(){try{var e=A,t=e("vertx");return q=t.runOnLoop||t.runOnContext,a()}catch(e){return s()}}():s();var z=o,Z=u,ee=Math.random().toString(36).substring(16),te=void 0,re=1,ne=2,ae=new N,se=new N,ie=0,oe=x,ue=D,ce=k,le=M;M.all=oe,M.race=ue,M.resolve=Z,M.reject=ce,M._setScheduler=r,M._setAsap=n,M._asap=H,M.prototype={constructor:M,then:z,catch:function(e){return this.then(null,e)}};var he=U;U.prototype._enumerate=function(){for(var e=this.length,t=this._input,r=0;this._state===te&&e>r;r++)this._eachEntry(t[r],r)},U.prototype._eachEntry=function(e,t){var r=this._instanceConstructor,n=r.resolve;if(n===Z){var a=d(e);if(a===z&&e._state!==te)this._settledAt(e._state,t,e._result);else if("function"!=typeof a)this._remaining--,this._result[t]=e;else if(r===le){var s=new r(c);E(s,e,a),this._willSettleAt(s,t)}else this._willSettleAt(new r(function(t){t(e)}),t)}else this._willSettleAt(n(e),t)},U.prototype._settledAt=function(e,t,r){var n=this.promise;n._state===te&&(this._remaining--,e===ne?S(n,r):this._result[t]=r),0===this._remaining&&v(n,this._result)},U.prototype._willSettleAt=function(e,t){var r=this;T(e,void 0,function(e){r._settledAt(re,t,e)},function(e){r._settledAt(ne,t,e)})};var de=F,fe={Promise:le,polyfill:de};"function"==typeof define&&define.amd?define(function(){return fe}):"undefined"!=typeof module&&module.exports?module.exports=fe:void 0!==this&&(this.ES6Promise=fe),de()}.call(this);var B=function(e,t,r,n){return new N.global.Promise(function(a,s){T(e,t,function(e,t){t?s(t):(r&&n&&!1!==T.options.progress&&T.options.progress(r,n),a(e))})})},j=function(e){if(!(e.length<1)){for(var t,r,n,a=[],s=0;s0?{status:1,values:n}:{status:-1,values:[]}}return"object"!=typeof e||null===e||"object"!=typeof t||void 0===e[t[0]]?{status:-1,values:[]}:{status:1,values:[e[t[0]]]}},T.srch.APROP=function(e,t){return"object"!=typeof e||null===e||"object"!=typeof t||void 0===e[t[0]]?{status:1,values:[void 0]}:{status:1,values:[e[t[0]]]}},T.srch.EQ=function(e,t,r,n){var a=t[0].toJS("x","");return e===new Function("x,alasql,params","return "+a)(e,T,n)?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.LIKE=function(e,t,r,n){var a=t[0].toJS("x",""),s=new Function("x,alasql,params","return "+a);return e.toUpperCase().match(new RegExp("^"+s(e,T,n).toUpperCase().replace(/%/g,".*").replace(/\?|_/g,".")+"$"),"g")?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.ATTR=function(e,t,r){if("XML"===r.mode)return void 0===t?{status:1,values:[e.attributes]}:"object"==typeof e&&"object"==typeof e.attributes&&void 0!==e.attributes[t[0]]?{status:1,values:[e.attributes[t[0]]]}:{status:-1,values:[]};throw new Error("ATTR is not using in usual mode")},T.srch.CONTENT=function(e,t,r){if("XML"===r.mode)return{status:1,values:[e.content]};throw new Error("ATTR is not using in usual mode")},T.srch.SHARP=function(e,t){var r=T.databases[T.useid].objects[t[0]];return void 0!==e&&e===r?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.PARENT=function(){return console.error("PARENT not implemented",arguments),{status:-1,values:[]}},T.srch.CHILD=function(e,t,r){return"object"==typeof e?Array.isArray(e)?{status:1,values:e}:"XML"===r.mode?{status:1,values:Object.keys(e.children).map(function(t){return e.children[t]})}:{status:1,values:Object.keys(e).map(function(t){return e[t]})}:{status:1,values:[]}},T.srch.KEYS=function(e){return"object"==typeof e&&null!==e?{status:1,values:Object.keys(e)}:{status:1,values:[]}},T.srch.WHERE=function(e,t,r,n){var a=t[0].toJS("x","");return new Function("x,alasql,params","return "+a)(e,T,n)?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.NAME=function(e,t){return e.name===t[0]?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.CLASS=function(e,t){return e.$class==t?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.VERTEX=function(e){return"VERTEX"===e.$node?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.INSTANCEOF=function(e,t){return e instanceof T.fn[t[0]]?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.EDGE=function(e){return"EDGE"===e.$node?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.EX=function(e,t,r,n){var a=t[0].toJS("x","");return{status:1,values:[new Function("x,alasql,params","return "+a)(e,T,n)]}},T.srch.RETURN=function(e,t,r,n){var a={};return t&&t.length>0&&t.forEach(function(t){var r=t.toJS("x",""),s=new Function("x,alasql,params","return "+r);void 0===t.as&&(t.as=t.toString()),a[t.as]=s(e,T,n)}),{status:1,values:[a]}},T.srch.REF=function(e){return{status:1,values:[T.databases[T.useid].objects[e]]}},T.srch.OUT=function(e){if(e.$out&&e.$out.length>0){return{status:1,values:e.$out.map(function(e){return T.databases[T.useid].objects[e]})}}return{status:-1,values:[]}},T.srch.OUTOUT=function(e){if(e.$out&&e.$out.length>0){var t=[];return e.$out.forEach(function(e){var r=T.databases[T.useid].objects[e];r&&r.$out&&r.$out.length>0&&r.$out.forEach(function(e){t=t.concat(T.databases[T.useid].objects[e])})}),{status:1,values:t}}return{status:-1,values:[]}},T.srch.IN=function(e){if(e.$in&&e.$in.length>0){return{status:1,values:e.$in.map(function(e){return T.databases[T.useid].objects[e]})}}return{status:-1,values:[]}},T.srch.ININ=function(e){if(e.$in&&e.$in.length>0){var t=[];return e.$in.forEach(function(e){var r=T.databases[T.useid].objects[e];r&&r.$in&&r.$in.length>0&&r.$in.forEach(function(e){t=t.concat(T.databases[T.useid].objects[e])})}),{status:1,values:t}}return{status:-1,values:[]}},T.srch.AS=function(e,t){
-return T.vars[t[0]]=e,{status:1,values:[e]}},T.srch.AT=function(e,t){return{status:1,values:[T.vars[t[0]]]}},T.srch.CLONEDEEP=function(e){return{status:1,values:[_(e)]}},T.srch.SET=function(e,t,r,n){var a=t.map(function(e){return"@"===e.method?"alasql.vars['"+e.variable+"']="+e.expression.toJS("x",""):"$"===e.method?"params['"+e.variable+"']="+e.expression.toJS("x",""):"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";");return new Function("x,params,alasql",a)(e,n,T),{status:1,values:[e]}},T.srch.ROW=function(e,t,r,n){var a="var y;return [";return a+=t.map(function(e){return e.toJS("x","")}).join(","),a+="]",{status:1,values:[new Function("x,params,alasql",a)(e,n,T)]}},T.srch.D3=function(e){return"VERTEX"!==e.$node&&"EDGE"===e.$node&&(e.source=e.$in[0],e.target=e.$out[0]),{status:1,values:[e]}};var Q=function(e){if(e){if(e&&1===e.length&&e[0].expression&&"function"==typeof e[0].expression){var t=e[0].expression;return function(e,r){var n=t(e),a=t(r);return n>a?1:n===a?0:-1}}var r="",n="";return e.forEach(function(e){var t="";if(e.expression instanceof X.NumValue&&(e.expression=self.columns[e.expression.value-1]),e.expression instanceof X.Column){var a=e.expression.columnid;T.options.valueof&&(t=".valueOf()"),e.nocase&&(t+=".toUpperCase()"),"_"===a?(r+="if(a"+t+("ASC"===e.direction?">":"<")+"b"+t+")return 1;",r+="if(a"+t+"==b"+t+"){"):(r+="if((a['"+a+"']||'')"+t+("ASC"===e.direction?">":"<")+"(b['"+a+"']||'')"+t+")return 1;",r+="if((a['"+a+"']||'')"+t+"==(b['"+a+"']||'')"+t+"){")}else t=".valueOf()",e.nocase&&(t+=".toUpperCase()"),r+="if(("+e.toJS("a","")+"||'')"+t+("ASC"===e.direction?">(":"<(")+e.toJS("b","")+"||'')"+t+")return 1;",r+="if(("+e.toJS("a","")+"||'')"+t+"==("+e.toJS("b","")+"||'')"+t+"){";n+="}"}),r+="return 0;",r+=n+"return -1",new Function("a,b",r)}};T.srch.ORDERBY=function(e,t){return{status:1,values:e.sort(Q(t))}};var z=function(e){for(var t=0,r=e.sources.length;t0&&"ix"==n.optimization&&n.onleftfn&&n.onrightfn){if(n.databaseid&&T.databases[n.databaseid].tables[n.tableid]){T.databases[n.databaseid].tables[n.tableid].indices||(e.database.tables[n.tableid].indices={});var a=T.databases[n.databaseid].tables[n.tableid].indices[x(n.onrightfns+"`"+n.srcwherefns)];!T.databases[n.databaseid].tables[n.tableid].dirty&&a&&(n.ix=a)}if(!n.ix){n.ix={};for(var s,i={},o=0,u=n.data.length;(s=n.data[o])||n.getfn&&(s=n.getfn(o))||o0&&(e+=" GROUP BY "+this.group.map(function(e){return e.toString()}).join(", ")),this.having&&(e+=" HAVING "+this.having.toString()),this.order&&this.order.length>0&&(e+=" ORDER BY "+this.order.map(function(e){return e.toString()}).join(", ")),this.limit&&(e+=" LIMIT "+this.limit.value),this.offset&&(e+=" OFFSET "+this.offset.value),this.union&&(e+=" UNION "+(this.corresponding?"CORRESPONDING ":"")+this.union.toString()),this.unionall&&(e+=" UNION ALL "+(this.corresponding?"CORRESPONDING ":"")+this.unionall.toString()),this.except&&(e+=" EXCEPT "+(this.corresponding?"CORRESPONDING ":"")+this.except.toString()),this.intersect&&(e+=" INTERSECT "+(this.corresponding?"CORRESPONDING ":"")+this.intersect.toString()),e},X.Select.prototype.toJS=function(e){return"alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+"))[0]"},X.Select.prototype.compile=function(e,t){var r=T.databases[e],n=new W;if(n.removeKeys=[],n.aggrKeys=[],n.explain=this.explain,n.explaination=[],n.explid=1,n.modifier=this.modifier,n.database=r,this.compileWhereExists(n),this.compileQueries(n),n.defcols=this.compileDefCols(n,e),n.fromfn=this.compileFrom(n),this.joins&&this.compileJoins(n),n.rownums=[],this.compileSelectGroup0(n),this.group||n.selectGroup.length>0?n.selectgfns=this.compileSelectGroup1(n):n.selectfns=this.compileSelect1(n,t),this.compileRemoveColumns(n),this.where&&this.compileWhereJoins(n),n.wherefn=this.compileWhere(n),(this.group||n.selectGroup.length>0)&&(n.groupfn=this.compileGroup(n)),this.having&&(n.havingfn=this.compileHaving(n)),this.order&&(n.orderfn=this.compileOrder(n)),this.group||n.selectGroup.length>0?n.selectgfn=this.compileSelectGroup2(n):n.selectfn=this.compileSelect2(n),n.distinct=this.distinct,this.pivot&&(n.pivotfn=this.compilePivot(n)),this.unpivot&&(n.pivotfn=this.compileUnpivot(n)),this.top?n.limit=this.top.value:this.limit&&(n.limit=this.limit.value,this.offset&&(n.offset=this.offset.value)),n.percent=this.percent,n.corresponding=this.corresponding,this.union?(n.unionfn=this.union.compile(e),this.union.order?n.orderfn=this.union.compileOrder(n):n.orderfn=null):this.unionall?(n.unionallfn=this.unionall.compile(e),this.unionall.order?n.orderfn=this.unionall.compileOrder(n):n.orderfn=null):this.except?(n.exceptfn=this.except.compile(e),this.except.order?n.orderfn=this.except.compileOrder(n):n.orderfn=null):this.intersect&&(n.intersectfn=this.intersect.compile(e),this.intersect.order?n.intersectfn=this.intersect.compileOrder(n):n.orderfn=null),this.into){if(this.into instanceof X.Table)T.options.autocommit&&T.databases[this.into.databaseid||e].engineid?n.intoallfns='return alasql.engines["'+T.databases[this.into.databaseid||e].engineid+'"].intoTable("'+(this.into.databaseid||e)+'","'+this.into.tableid+'",this.data, columns, cb);':n.intofns="alasql.databases['"+(this.into.databaseid||e)+"'].tables['"+this.into.tableid+"'].data.push(r);";else if(this.into instanceof X.VarValue)n.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=this.data.length;if(cb)res=cb(res);return res;';else if(this.into instanceof X.FuncValue){var a="return alasql.into['"+this.into.funcid.toUpperCase()+"'](";this.into.args&&this.into.args.length>0?(a+=this.into.args[0].toJS()+",",this.into.args.length>1?a+=this.into.args[1].toJS()+",":a+="undefined,"):a+="undefined, undefined,",n.intoallfns=a+"this.data,columns,cb)"}else this.into instanceof X.ParamValue&&(n.intofns="params['"+this.into.param+"'].push(r)");n.intofns?n.intofn=new Function("r,i,params,alasql","var y;"+n.intofns):n.intoallfns&&(n.intoallfn=new Function("columns,cb,params,alasql","var y;"+n.intoallfns))}var s=function(e,t,r){return n.params=e,i(n,r,function(e,r){if(r)return t(r,null);if(n.rownums.length>0)for(var a=0,s=e.length;a0?(t.args[0]?n+=t.args[0].toJS("query.oldscope")+",":n+="null,",t.args[1]?n+=t.args[1].toJS("query.oldscope")+",":n+="null,"):n+="null,null,",n+="cb,idx,query",n+=");/*if(cb)res=cb(res,idx,query);*/return res",s.datafn=new Function("query, params, cb, idx, alasql",n);else{if(!(t instanceof X.FromData))throw new Error("Wrong table at FROM");s.datafn=function(e,r,n,a,s){var i=t.data;return n&&(i=n(i,a,e)),i}}e.sources.push(s)}),e.defaultTableid=e.sources[0].alias)},T.prepareFromData=function(e,t){var r,n,a=e;if("string"==typeof e){if(a=e.split(/\r?\n/),t)for(r=0,n=a.length;r0?(u[0]?o+=u[0].toJS("query.oldscope")+",":o+="null,",u[1]?o+=u[1].toJS("query.oldscope")+",":o+="null,"):o+="null,null,",o+="cb,idx,query",o+=");/*if(cb)res=cb(res,idx,query);*/return res",s.datafn=new Function("query, params, cb, idx, alasql",o),e.aliases[s.alias]={type:"funcvalue"}}var c=s.alias;if(t.natural){if(t.using||t.on)throw new Error("NATURAL JOIN cannot have USING or ON clauses");if(e.sources.length>0){var l=e.sources[e.sources.length-1],h=T.databases[l.databaseid].tables[l.tableid],d=T.databases[s.databaseid].tables[s.tableid];if(!h||!d)throw new Error("In this version of Alasql NATURAL JOIN works for tables with predefined columns only");var f=h.columns.map(function(e){return e.columnid}),p=d.columns.map(function(e){return e.columnid});t.using=L(f,p).map(function(e){return{columnid:e}})}}if(t.using)l=e.sources[e.sources.length-1],s.onleftfns=t.using.map(function(e){return"p['"+(l.alias||l.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),s.onleftfn=new Function("p,params,alasql","var y;return "+s.onleftfns),s.onrightfns=t.using.map(function(e){return"p['"+(s.alias||s.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),s.onrightfn=new Function("p,params,alasql","var y;return "+s.onrightfns),s.optimization="ix";else if(t.on)if(t.on instanceof X.Op&&"="===t.on.op&&!t.on.allsome){s.optimization="ix";var b="",E="",g="",m=!1,v=t.on.left.toJS("p",e.defaultTableid,e.defcols),S=t.on.right.toJS("p",e.defaultTableid,e.defcols);v.indexOf("p['"+c+"']")>-1&&!(S.indexOf("p['"+c+"']")>-1)?(v.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?E=v:m=!0:!(v.indexOf("p['"+c+"']")>-1)&&S.indexOf("p['"+c+"']")>-1&&(S.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?b=v:m=!0,S.indexOf("p['"+c+"']")>-1&&!(v.indexOf("p['"+c+"']")>-1)?(S.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?E=S:m=!0:!(S.indexOf("p['"+c+"']")>-1)&&v.indexOf("p['"+c+"']")>-1&&(v.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?b=S:m=!0,m&&(E="",b="",g=t.on.toJS("p",e.defaultTableid,e.defcols),s.optimization="no"),s.onleftfns=b,s.onrightfns=E,s.onmiddlefns=g||"true",s.onleftfn=new Function("p,params,alasql","var y;return "+s.onleftfns),s.onrightfn=new Function("p,params,alasql","var y;return "+s.onrightfns),s.onmiddlefn=new Function("p,params,alasql","var y;return "+s.onmiddlefns)}else s.optimization="no",s.onmiddlefns=t.on.toJS("p",e.defaultTableid,e.defcols),s.onmiddlefn=new Function("p,params,alasql","var y;return "+t.on.toJS("p",e.defaultTableid,e.defcols));e.sources.push(s)})},X.Select.prototype.compileWhere=function(e){if(this.where){if("function"==typeof this.where)return this.where;var t=this.where.toJS("p",e.defaultTableid,e.defcols);return e.wherefns=t,new Function("p,params,alasql","var y;return "+t)}return function(){return!0}},X.Select.prototype.compileWhereJoins=function(e){},X.Select.prototype.compileGroup=function(e){if(e.sources.length>0)var t=e.sources[0].alias;else var t="";var r=e.defcols,n=[[]];this.group&&(n=p(this.group,e));var a=[];n.forEach(function(e){a=D(a,e)}),e.allgroups=a,e.ingroup=[];var s="";return n.forEach(function(n){s+="var g=this.xgroups[";var i=n.map(function(t){var r=t.split("\t")[0],n=t.split("\t")[1];return""===r?"1":(e.ingroup.push(r),n)});0===i.length&&(i=["''"]),s+=i.join('+"`"+'),s+="];if(!g) {this.groups.push((g=this.xgroups[",s+=i.join('+"`"+'),s+="] = {",s+=n.map(function(e){var t=e.split("\t")[0],r=e.split("\t")[1];return""===t?"":"'"+t+"':"+r+","}).join("");var o=k(a,n);s+=o.map(function(e){return"'"+e.split("\t")[0]+"':null,"}).join("");var u="",c="";void 0!==e.groupStar&&(c+="for(var f in p['"+e.groupStar+"']) {g[f]=p['"+e.groupStar+"'][f];};"),s+=e.selectGroup.map(function(n){var a=n.expression.toJS("p",t,r),s=n.nick;return n instanceof X.AggrValue?(n.distinct&&(u+=",g['$$_VALUES_"+s+"']={},g['$$_VALUES_"+s+"']["+a+"]=true"),"SUM"===n.aggregatorid?"'"+s+"':("+a+")||0,":"MIN"===n.aggregatorid||"MAX"===n.aggregatorid||"FIRST"===n.aggregatorid||"LAST"===n.aggregatorid?"'"+s+"':"+a+",":"ARRAY"===n.aggregatorid?"'"+s+"':["+a+"],":"COUNT"===n.aggregatorid?"*"===n.expression.columnid?"'"+s+"':1,":"'"+s+"':(typeof "+a+' != "undefined")?1:0,':"AVG"===n.aggregatorid?(e.removeKeys.push("_SUM_"+s),e.removeKeys.push("_COUNT_"+s),"'"+s+"':"+a+",'_SUM_"+s+"':("+a+")||0,'_COUNT_"+s+"':(typeof "+a+' != "undefined")?1:0,'):"AGGR"===n.aggregatorid?(u+=",g['"+s+"']="+n.expression.toJS("g",-1),""):"REDUCE"===n.aggregatorid?(e.aggrKeys.push(n),"'"+s+"':alasql.aggr['"+n.funcid+"']("+a+",undefined,1),"):""):""}).join(""),s+="}"+u+",g));"+c+"} else {",s+=e.selectGroup.map(function(e){var n=e.nick,a=e.expression.toJS("p",t,r);if(e instanceof X.AggrValue){var s="",i="";if(e.distinct)var s="if(typeof "+a+'!="undefined" && (!g[\'$$_VALUES_'+n+"']["+a+"])) \t\t\t\t \t\t {",i="g['$$_VALUES_"+n+"']["+a+"]=true;}";return"SUM"===e.aggregatorid?s+"g['"+n+"']+=("+a+"||0);"+i:"COUNT"===e.aggregatorid?"*"===e.expression.columnid?s+"g['"+n+"']++;"+i:s+"if(typeof "+a+'!="undefined") g[\''+n+"']++;"+i:"ARRAY"===e.aggregatorid?s+"g['"+n+"'].push("+a+");"+i:"MIN"===e.aggregatorid?s+"g['"+n+"']=Math.min(g['"+n+"'],"+a+");"+i:"MAX"===e.aggregatorid?s+"g['"+n+"']=Math.max(g['"+n+"'],"+a+");"+i:"FIRST"===e.aggregatorid?"":"LAST"===e.aggregatorid?s+"g['"+n+"']="+a+";"+i:"AVG"===e.aggregatorid?s+"g['_SUM_"+n+"']+=(y="+a+")||0;g['_COUNT_"+n+"']+=(typeof y!=\"undefined\")?1:0;g['"+n+"']=g['_SUM_"+n+"']/g['_COUNT_"+n+"'];"+i:"AGGR"===e.aggregatorid?s+"g['"+n+"']="+e.expression.toJS("g",-1)+";"+i:"REDUCE"===e.aggregatorid?s+"g['"+n+"']=alasql.aggr."+e.funcid+"("+a+",g['"+n+"'],2);"+i:""}return""}).join(""),s+="}"}),new Function("p,params,alasql","var y;"+s)},X.Select.prototype.compileSelect1=function(t,r){var n=this;t.columns=[],t.xcolumns={},t.selectColumns={},t.dirtyColumns=!1;var a="var r={",s="",i=[];return this.columns.forEach(function(a){if(a instanceof X.Column)if("*"===a.columnid)if(a.func)s+="r=params['"+a.param+"'](p['"+t.sources[0].alias+"'],p,params,alasql);";else if(a.tableid){var o=f(t,a.tableid,!1);o.s&&(i=i.concat(o.s)),s+=o.sp}else for(var u in t.aliases){var o=f(t,u,!0);o.s&&(i=i.concat(o.s)),s+=o.sp}else{var c=a.tableid,l=a.databaseid||t.sources[0].databaseid||t.database.databaseid;if(c||(c=t.defcols[a.columnid]),c||(c=t.defaultTableid),"_"!==a.columnid){var h=r&&r.length>1&&Array.isArray(r[0])&&r[0].length>=1&&r[0][0].hasOwnProperty("sheetid");h?s='var r={};var w=p["'+c+'"];var cols=['+n.columns.map(function(e){return"'"+e.columnid+"'"}).join(",")+"];var colas=["+n.columns.map(function(e){return"'"+(e.as||e.columnid)+"'"}).join(",")+"];for (var i=0;i0){var b=p[a.columnid];if(void 0===b)throw new Error("Column does not exist: "+a.columnid);var E={columnid:a.as||a.columnid,dbtypeid:b.dbtypeid,dbsize:b.dbsize,dbpecision:b.dbprecision,dbenum:b.dbenum};t.columns.push(E),t.xcolumns[E.columnid]=E}else{var E={columnid:a.as||a.columnid};t.columns.push(E),t.xcolumns[E.columnid]=E,t.dirtyColumns=!0}}else{var E={columnid:a.as||a.columnid};t.columns.push(E),t.xcolumns[E.columnid]=E}}else if(a instanceof X.AggrValue){n.group||(n.group=[""]),a.as||(a.as=C(a.toString())),"SUM"===a.aggregatorid||"MAX"===a.aggregatorid||"MIN"===a.aggregatorid||"FIRST"===a.aggregatorid||"LAST"===a.aggregatorid||"AVG"===a.aggregatorid||"ARRAY"===a.aggregatorid||"REDUCE"===a.aggregatorid?i.push("'"+C(a.as)+"':"+e(a.expression.toJS("p",t.defaultTableid,t.defcols))):"COUNT"===a.aggregatorid&&i.push("'"+C(a.as)+"':1");var E={columnid:a.as||a.columnid||a.toString()};t.columns.push(E),t.xcolumns[E.columnid]=E}else{i.push("'"+C(a.as||a.columnid||a.toString())+"':"+e(a.toJS("p",t.defaultTableid,t.defcols))),t.selectColumns[C(a.as||a.columnid||a.toString())]=!0;var E={columnid:a.as||a.columnid||a.toString()};t.columns.push(E),t.xcolumns[E.columnid]=E}}),a+=i.join(",")+"};"+s},X.Select.prototype.compileSelect2=function(e){var t=e.selectfns;return this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(r,n){var a="$$$"+n;r instanceof X.Column&&e.xcolumns[r.columnid]?t+="r['"+a+"']=r['"+r.columnid+"'];":t+="r['"+a+"']="+r.toJS("p",e.defaultTableid,e.defcols)+";",e.removeKeys.push(a)}),new Function("p,params,alasql","var y;"+t+"return r")},X.Select.prototype.compileSelectGroup0=function(e){var t=this;t.columns.forEach(function(r,n){if(r instanceof X.Column&&"*"===r.columnid)e.groupStar=r.tableid||"default";else{var a;a=C(r instanceof X.Column?r.columnid:r.toString(!0));for(var s=0;s-1&&(r+="r['"+(t.as||t.nick)+"']=g['"+t.nick+"'];")}),this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(t,n){var a="$$$"+n;t instanceof X.Column&&e.groupColumns[t.columnid]?r+="r['"+a+"']=r['"+t.columnid+"'];":r+="r['"+a+"']="+t.toJS("g","")+";",e.removeKeys.push(a)}),new Function("g,params,alasql","var y;"+r+"return r")},X.Select.prototype.compileRemoveColumns=function(e){void 0!==this.removecolumns&&(e.removeKeys=e.removeKeys.concat(this.removecolumns.filter(function(e){return void 0===e.like}).map(function(e){return e.columnid})),e.removeLikeKeys=this.removecolumns.filter(function(e){return void 0!==e.like}).map(function(e){return e.like.value}))},X.Select.prototype.compileHaving=function(e){if(this.having){var t=this.having.toJS("g",-1);return e.havingfns=t,new Function("g,params,alasql","var y;return "+t)}return function(){return!0}},X.Select.prototype.compileOrder=function(e){var t=this;if(t.orderColumns=[],this.order){if(this.order&&1==this.order.length&&this.order[0].expression&&"function"==typeof this.order[0].expression){var r=this.order[0].expression;return function(e,t){var n=r(e),a=r(t);return n>a?1:n==a?0:-1}}var n="",a="";return this.order.forEach(function(r,s){if(r.expression instanceof X.NumValue)var i=t.columns[r.expression.value-1];else var i=r.expression;t.orderColumns.push(i);var o="$$$"+s,u="";if(r.expression instanceof X.Column){var c=r.expression.columnid;if(e.xcolumns[c]){var l=e.xcolumns[c].dbtypeid;"DATE"!=l&&"DATETIME"!=l&&"DATETIME2"!=l||(u=".valueOf()")}else T.options.valueof&&(u=".valueOf()")}r.nocase&&(u+=".toUpperCase()"),n+="if((a['"+o+"']||'')"+u+("ASC"==r.direction?">":"<")+"(b['"+o+"']||'')"+u+")return 1;",n+="if((a['"+o+"']||'')"+u+"==(b['"+o+"']||'')"+u+"){",a+="}"}),n+="return 0;",n+=a+"return -1",e.orderfns=n,new Function("a,b","var y;"+n)}},X.Select.prototype.compilePivot=function(e){var t=this,r=t.pivot.columnid,n=t.pivot.expr.expression.columnid,a=t.pivot.expr.aggregatorid,s=t.pivot.inlist;return s&&(s=s.map(function(e){return e.expr.columnid})),function(){var e=this,t=e.columns.filter(function(e){return e.columnid!=r&&e.columnid!=n}).map(function(e){return e.columnid}),i=[],o={},u={},c={},l=[];if(e.data.forEach(function(e){if(!s||s.indexOf(e[r])>-1){var h=t.map(function(t){return e[t]}).join("`"),d=u[h];if(d||(d={},u[h]=d,l.push(d),t.forEach(function(t){d[t]=e[t]})),c[h]||(c[h]={}),c[h][e[r]]?c[h][e[r]]++:c[h][e[r]]=1,o[e[r]]||(o[e[r]]=!0,i.push(e[r])),"SUM"==a||"AVG"==a)void 0===d[e[r]]&&(d[e[r]]=0),d[e[r]]+=e[n];else if("COUNT"==a)void 0===d[e[r]]&&(d[e[r]]=0),d[e[r]]++;else if("MIN"==a)void 0===d[e[r]]&&(d[e[r]]=1/0),e[n]d[e[r]]&&(d[e[r]]=e[n]);else if("FIRST"==a)void 0===d[e[r]]&&(d[e[r]]=e[n]);else if("LAST"==a)d[e[r]]=e[n];else{if(!T.aggr[a])throw new Error("Wrong aggregator in PIVOT clause");T.aggr[a](d[e[r]],e[n])}}}),"AVG"==a)for(var h in u){var d=u[h];for(var f in d)-1==t.indexOf(f)&&f!=n&&(d[f]=d[f]/c[h][f])}e.data=l,s&&(i=s);var p=e.columns.filter(function(e){return e.columnid==n})[0];e.columns=e.columns.filter(function(e){return!(e.columnid==r||e.columnid==n)}),i.forEach(function(t){var r=_(p);r.columnid=t,e.columns.push(r)})}},X.Select.prototype.compileUnpivot=function(e){var t=this,r=t.unpivot.tocolumnid,n=t.unpivot.forcolumnid,a=t.unpivot.inlist.map(function(e){return e.columnid});return function(){var t=[],s=e.columns.map(function(e){return e.columnid}).filter(function(e){return-1==a.indexOf(e)&&e!=n&&e!=r});e.data.forEach(function(e){a.forEach(function(a){var i={};s.forEach(function(t){i[t]=e[t]}),i[n]=a,i[r]=e[a],t.push(i)})}),e.data=t}};var Z=function(e,t){for(var r=[],n=0,a=e.length,s=0;s"===this.op||"!"===this.op){var e=this.left.toString()+this.op;return"string"!=typeof this.right&&"number"!=typeof this.right&&(e+="("),e+=this.right.toString(),"string"!=typeof this.right&&"number"!=typeof this.right&&(e+=")"),e}return this.left.toString()+" "+this.op+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()},X.Op.prototype.findAggregator=function(e){this.left&&this.left.findAggregator&&this.left.findAggregator(e),this.right&&this.right.findAggregator&&!this.allsome&&this.right.findAggregator(e)},X.Op.prototype.toType=function(e){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(["||"].indexOf(this.op)>-1)return"string";if("+"===this.op){if("string"===this.left.toType(e)||"string"===this.right.toType(e))return"string";if("number"===this.left.toType(e)||"number"===this.right.toType(e))return"number"}return["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE","REGEXP","GLOB"].indexOf(this.op)>-1?"boolean":"BETWEEN"===this.op||"NOT BETWEEN"===this.op||"IS NULL"===this.op||"IS NOT NULL"===this.op?"boolean":this.allsome?"boolean":this.op?"unknown":this.left.toType()},X.Op.prototype.toJS=function(e,t,r){var n,a=[],s=this.op,i=this,o=function(n){return n.toJS&&(n=n.toJS(e,t,r)),"y["+(a.push(n)-1)+"]"},u=function(){return o(i.left)},c=function(){return o(i.right)};if("="===this.op?s="===":"<>"===this.op?s="!=":"OR"===this.op&&(s="||"),"->"===this.op){var l="("+u()+"||{})";if("string"==typeof this.right)n=l+'["'+this.right+'"]';else if("number"==typeof this.right)n=l+"["+this.right+"]";else if(this.right instanceof X.FuncValue){var h=[];if(this.right.args&&0!==this.right.args.length)var h=this.right.args.map(o);n=l+"['"+this.right.funcid+"']("+h.join(",")+")"}else n=l+"["+c()+"]"}if("!"===this.op&&"string"==typeof this.right&&(n="alasql.databases[alasql.useid].objects["+u()+']["'+this.right+'"]'),"IS"===this.op&&(n="(("+u()+"==null) === ("+c()+"==null))"),"=="===this.op&&(n="alasql.utils.deepEqual("+u()+","+c()+")"),"==="!==this.op&&"!==="!==this.op||(n="("+("!==="===this.op?"!":"")+"(("+u()+").valueOf()===("+c()+").valueOf()))"),"!=="===this.op&&(n="(!alasql.utils.deepEqual("+u()+","+c()+"))"),"||"===this.op&&(n="(''+("+u()+"||'')+("+c()+'||""))'),"LIKE"===this.op||"NOT LIKE"===this.op){var n="("+("NOT LIKE"===this.op?"!":"")+"alasql.utils.like("+c()+","+u();this.escape&&(n+=","+o(this.escape)),n+="))"}if("REGEXP"===this.op&&(n="alasql.stdfn.REGEXP_LIKE("+u()+","+c()+")"),"GLOB"===this.op&&(n="alasql.utils.glob("+u()+","+c()+")"),"BETWEEN"===this.op||"NOT BETWEEN"===this.op){var d=u();n="("+("NOT BETWEEN"===this.op?"!":"")+"(("+o(this.right1)+"<="+d+") && ("+d+"<="+o(this.right2)+")))"}if("IN"===this.op&&(this.right instanceof X.Select?(n="(",n+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,"+e+"))",n+=".indexOf(",n+=u()+")>-1)"):n=Array.isArray(this.right)?"(["+this.right.map(o).join(",")+"].indexOf("+u()+")>-1)":"("+c()+".indexOf("+u()+")>-1)"),"NOT IN"===this.op&&(this.right instanceof X.Select?(n="(",n+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,p))",n+=".indexOf(",n+=u()+")<0)"):Array.isArray(this.right)?(n="(["+this.right.map(o).join(",")+"].indexOf(",n+=u()+")<0)"):(n="("+c()+".indexOf(",n+=u()+")==-1)")),"ALL"===this.allsome){var n;if(this.right instanceof X.Select)n="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",n+=".every(function(b){return (",n+=u()+")"+s+"b})";else{if(!Array.isArray(this.right))throw new Error("NOT IN operator without SELECT");n=""+(1==this.right.length?o(this.right[0]):"["+this.right.map(o).join(",")+"]"),n+=".every(function(b){return (",n+=u()+")"+s+"b})"}}if("SOME"===this.allsome||"ANY"===this.allsome){var n;if(this.right instanceof X.Select)n="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",n+=".some(function(b){return (",n+=u()+")"+s+"b})";else{if(!Array.isArray(this.right))throw new Error("SOME/ANY operator without SELECT");n=""+(1==this.right.length?o(this.right[0]):"["+this.right.map(o).join(",")+"]"),n+=".some(function(b){return (",n+=u()+")"+s+"b})"}}if("AND"===this.op){if(this.left.reduced){if(this.right.reduced)return"true";n=c()}else this.right.reduced&&(n=u());s="&&"}var f=n||"("+u()+s+c()+")",p="y=[("+a.join("), (")+")]";return"&&"===s||"||"===s||"IS"===s||"IS NULL"===s||"IS NOT NULL"===s?"("+p+", "+f+")":"("+p+", y.some(function(e){return e == null}) ? void 0 : "+f+")"},X.VarValue=function(e){return X.extend(this,e)},X.VarValue.prototype.toString=function(){return"@"+this.variable},X.VarValue.prototype.toType=function(){return"unknown"},X.VarValue.prototype.toJS=function(){return"alasql.vars['"+this.variable+"']"},X.NumValue=function(e){return X.extend(this,e)},X.NumValue.prototype.toString=function(){return this.value.toString()},X.NumValue.prototype.toType=function(){return"number"},X.NumValue.prototype.toJS=function(){return""+this.value},X.StringValue=function(e){return X.extend(this,e)},X.StringValue.prototype.toString=function(){return"'"+this.value.toString()+"'"},X.StringValue.prototype.toType=function(){return"string"},X.StringValue.prototype.toJS=function(){return"'"+C(this.value)+"'"},X.DomainValueValue=function(e){return X.extend(this,e)},X.DomainValueValue.prototype.toString=function(){return"VALUE"},X.DomainValueValue.prototype.toType=function(){return"object"},X.DomainValueValue.prototype.toJS=function(e,t,r){return e},X.ArrayValue=function(e){return X.extend(this,e)},X.ArrayValue.prototype.toString=function(){return"ARRAY[]"},X.ArrayValue.prototype.toType=function(){return"object"},X.ArrayValue.prototype.toJS=function(e,t,r){return"[("+this.value.map(function(n){return n.toJS(e,t,r)}).join("), (")+")]"},X.LogicValue=function(e){return X.extend(this,e)},X.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"},X.LogicValue.prototype.toType=function(){return"boolean"},X.LogicValue.prototype.toJS=function(){return this.value?"true":"false"},X.NullValue=function(e){return X.extend(this,e)},X.NullValue.prototype.toString=function(){return"NULL"},X.NullValue.prototype.toJS=function(){return"undefined"},X.ParamValue=function(e){return X.extend(this,e)},X.ParamValue.prototype.toString=function(){return"$"+this.param},X.ParamValue.prototype.toJS=function(){return"string"==typeof this.param?"params['"+this.param+"']":"params["+this.param+"]"},X.UniOp=function(e){return X.extend(this,e)},X.UniOp.prototype.toString=function(){var e;return e=void 0,"~"===this.op&&(e=this.op+this.right.toString()),"-"===this.op&&(e=this.op+this.right.toString()),"+"===this.op&&(e=this.op+this.right.toString()),"#"===this.op&&(e=this.op+this.right.toString()),"NOT"===this.op&&(e=this.op+"("+this.right.toString()+")"),null===this.op&&(e="("+this.right.toString()+")"),e||(e="("+this.right.toString()+")"),e},X.UniOp.prototype.findAggregator=function(e){this.right.findAggregator&&this.right.findAggregator(e)},X.UniOp.prototype.toType=function(){return"-"===this.op?"number":"+"===this.op?"number":"NOT"===this.op?"boolean":void 0},X.UniOp.prototype.toJS=function(e,t,r){return"~"===this.op?"(~("+this.right.toJS(e,t,r)+"))":"-"===this.op?"(-("+this.right.toJS(e,t,r)+"))":"+"===this.op?"("+this.right.toJS(e,t,r)+")":"NOT"===this.op?"!("+this.right.toJS(e,t,r)+")":"#"===this.op?this.right instanceof X.Column?"(alasql.databases[alasql.useid].objects['"+this.right.columnid+"'])":"(alasql.databases[alasql.useid].objects["+this.right.toJS(e,t,r)+"])":null==this.op?"("+this.right.toJS(e,t,r)+")":void 0},X.Column=function(e){return X.extend(this,e)},X.Column.prototype.toString=function(e){var t;return t=this.columnid==+this.columnid?"["+this.columnid+"]":this.columnid,this.tableid&&(t=+this.columnid===this.columnid?this.tableid+t:this.tableid+"."+t,this.databaseid&&(t=this.databaseid+"."+t)),this.alias&&!e&&(t+=" AS "+this.alias),t},X.Column.prototype.toJS=function(e,t,r){var n="";if(this.tableid||""!==t||r)if("g"===e)n="g['"+this.nick+"']";else if(this.tableid)n="_"!==this.columnid?e+"['"+this.tableid+"']['"+this.columnid+"']":"g"===e?"g['_']":e+"['"+this.tableid+"']";else if(r){var a=r[this.columnid];if("-"===a)throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables');n=a?"_"!==this.columnid?e+"['"+a+"']['"+this.columnid+"']":e+"['"+a+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']"}else n=-1===t?e+"['"+this.columnid+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']";else n="_"!==this.columnid?e+"['"+this.columnid+"']":"g"===e?"g['_']":e;return n},X.AggrValue=function(e){return X.extend(this,e)},X.AggrValue.prototype.toString=function(e){var t="";return"REDUCE"===this.aggregatorid?t+=this.funcid+"(":t+=this.aggregatorid+"(",this.distinct&&(t+="DISTINCT "),this.expression&&(t+=this.expression.toString()),t+=")",this.over&&(t+=" "+this.over.toString()),this.alias&&!e&&(t+=" AS "+this.alias),t},X.AggrValue.prototype.findAggregator=function(e){var t=C(this.toString())+":"+e.selectGroup.length,r=!1;if(!r){if(!this.nick){this.nick=t;for(var r=!1,n=0;n-1?"number":["ARRAY"].indexOf(this.aggregatorid)>-1?"array":["FIRST","LAST"].indexOf(this.aggregatorid)>-1?this.expression.toType():void 0},X.AggrValue.prototype.toJS=function(){var e=this.nick;return void 0===e&&(e=this.toString()),"g['"+e+"']"},X.OrderExpression=function(e){return X.extend(this,e)},X.OrderExpression.prototype.toString=X.Expression.prototype.toString,X.GroupExpression=function(e){return X.extend(this,e)},X.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"},X.FromData=function(e){return X.extend(this,e)},X.FromData.prototype.toString=function(){return this.data?"DATA("+(1e16*Math.random()|0)+")":"?"},X.FromData.prototype.toJS=function(){},X.Select.prototype.exec=function(e,t){this.preparams&&(e=this.preparams.concat(e));var r=T.useid;db=T.databases[r];var n=this.toString(),a=x(n),s=this.compile(r);if(s){s.sql=n,s.dbversion=db.dbversion,db.sqlCacheSize>T.MAXSQLCACHESIZE&&db.resetSqlCache(),db.sqlCacheSize++,db.sqlCache[a]=s;return T.res=s(e,t)}},X.Select.prototype.Select=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return e.columns=[],args.forEach(function(t){if("string"==typeof t)e.columns.push(new X.Column({columnid:t}));else if("function"==typeof t){var r=0;e.preparams?r=e.preparams.length:e.preparams=[],e.preparams.push(t),e.columns.push(new X.Column({columnid:"*",func:t,param:r}))}}),e},X.Select.prototype.From=function(e){var t=this;if(t.from||(t.from=[]),Array.isArray(e)){var r=0;t.preparams?r=t.preparams.length:t.preparams=[],t.preparams.push(e),t.from.push(new X.ParamValue({param:r}))}else{if("string"!=typeof e)throw new Error("Unknown arguments in From() function");t.from.push(new X.Table({tableid:e}))}return t},X.Select.prototype.OrderBy=function(){var e=this;if(e.order=[],0==arguments.length)args=["_"];else if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return args.length>0&&args.forEach(function(t){var r=new X.Column({columnid:t});"function"==typeof t&&(r=t),e.order.push(new X.OrderExpression({expression:r,direction:"ASC"}))}),e},X.Select.prototype.Top=function(e){var t=this;return t.top=new X.NumValue({value:e}),t},X.Select.prototype.GroupBy=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return e.group=[],args.forEach(function(t){var r=new X.Column({columnid:t});e.group.push(r)}),e},X.Select.prototype.Where=function(e){var t=this;return"function"==typeof e&&(t.where=e),t},X.FuncValue=function(e){return X.extend(this,e)},X.FuncValue.prototype.toString=function(e){var t="";return T.fn[this.funcid]?t+=this.funcid:T.aggr[this.funcid]?t+=this.funcid:(T.stdlib[this.funcid.toUpperCase()]||T.stdfn[this.funcid.toUpperCase()])&&(t+=this.funcid.toUpperCase()),t+="(",this.args&&this.args.length>0&&(t+=this.args.map(function(e){return e.toString()}).join(",")),t+=")",this.as&&!e&&(t+=" AS "+this.as.toString()),t},X.FuncValue.prototype.execute=function(e,t,r){var n=1;return T.precompile(this,e,t),new Function("params,alasql","var y;return "+this.toJS("","",null))(t,T),r&&(n=r(n)),n},X.FuncValue.prototype.findAggregator=function(e){this.args&&this.args.length>0&&this.args.forEach(function(t){t.findAggregator&&t.findAggregator(e)})},X.FuncValue.prototype.toJS=function(e,t,r){var n="",a=this.funcid;return!T.fn[a]&&T.stdlib[a.toUpperCase()]?this.args&&this.args.length>0?n+=T.stdlib[a.toUpperCase()].apply(this,this.args.map(function(r){return r.toJS(e,t)})):n+=T.stdlib[a.toUpperCase()]():!T.fn[a]&&T.stdfn[a.toUpperCase()]?(this.newid&&(n+="new "),n+="alasql.stdfn."+this.funcid.toUpperCase()+"(",this.args&&this.args.length>0&&(n+=this.args.map(function(n){return n.toJS(e,t,r)}).join(",")),n+=")"):(this.newid&&(n+="new "),n+="alasql.fn."+this.funcid+"(",this.args&&this.args.length>0&&(n+=this.args.map(function(n){return n.toJS(e,t,r)}).join(",")),n+=")"),n};var ne=T.stdlib={},ae=T.stdfn={};ne.ABS=function(e){return"Math.abs("+e+")"},ne.CLONEDEEP=function(e){return"alasql.utils.cloneDeep("+e+")"},ae.CONCAT=function(){return Array.prototype.slice.call(arguments).join("")},ne.EXP=function(e){return"Math.pow(Math.E,"+e+")"},ne.IIF=function(e,t,r){if(3==arguments.length)return"(("+e+")?("+t+"):("+r+"))";throw new Error("Number of arguments of IFF is not equals to 3")},ne.IFNULL=function(e,t){return"("+e+"||"+t+")"},ne.INSTR=function(e,t){return"(("+e+").indexOf("+t+")+1)"},ne.LEN=ne.LENGTH=function(e){return t(e,"y.length")},ne.LOWER=ne.LCASE=function(e){return t(e,"String(y).toLowerCase()")},ne.LTRIM=function(e){return t(e,'y.replace(/^[ ]+/,"")')},ne.RTRIM=function(e){return t(e,'y.replace(/[ ]+$/,"")')},ne.MAX=ne.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"},ne.MIN=ne.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"},ne.SUBSTRING=ne.SUBSTR=ne.MID=function(e,r,n){return 2==arguments.length?t(e,"y.substr("+r+"-1)"):3==arguments.length?t(e,"y.substr("+r+"-1,"+n+")"):void 0},ae.REGEXP_LIKE=function(e,t,r){return(e||"").search(RegExp(t,r))>-1},ne.ISNULL=ne.NULLIF=function(e,t){return"("+e+"=="+t+"?undefined:"+e+")"},ne.POWER=function(e,t){return"Math.pow("+e+","+t+")"},ne.RANDOM=function(e){return 0==arguments.length?"Math.random()":"(Math.random()*("+e+")|0)"},ne.ROUND=function(e,t){return 2==arguments.length?"Math.round(("+e+")*Math.pow(10,("+t+")))/Math.pow(10,("+t+"))":"Math.round("+e+")"},ne.CEIL=ne.CEILING=function(e){return"Math.ceil("+e+")"},ne.FLOOR=function(e){return"Math.floor("+e+")"},ne.ROWNUM=function(){return"1"},ne.ROW_NUMBER=function(){return"1"},ne.SQRT=function(e){return"Math.sqrt("+e+")"},ne.TRIM=function(e){return t(e,"y.trim()")},ne.UPPER=ne.UCASE=function(e){return t(e,"String(y).toUpperCase()")},ae.CONCAT_WS=function(){var e=Array.prototype.slice.call(arguments);return e.slice(1,e.length).join(e[0])},T.aggr.GROUP_CONCAT=function(e,t,r){return 1===r?""+e:2===r?t+=","+e:t},T.aggr.MEDIAN=function(e,t,r){if(2===r)return null!==e&&t.push(e),t;if(1===r)return null===e?[]:[e];if(!t.length)return t;var n=t.sort(),a=(n.length+1)/2;return Number.isInteger(a)?n[a-1]:(n[Math.floor(a-1)]+n[Math.ceil(a-1)])/2},T.aggr.QUART=function(e,t,r,n){if(2===r)return null!==e&&t.push(e),t;if(1===r)return null===e?[]:[e];if(!t.length)return t;n=n||1;var a=t.sort(),s=n*(a.length+1)/4;return Number.isInteger(s)?a[s-1]:a[Math.floor(s)]},T.aggr.QUART2=function(e,t,r){return T.aggr.QUART(e,t,r,2)},T.aggr.QUART3=function(e,t,r){return T.aggr.QUART(e,t,r,3)},T.aggr.VAR=function(e,t,r){if(1===r)return null===e?{arr:[],sum:0}:{arr:[e],sum:e};if(2===r)return null===e?t:(t.arr.push(e),t.sum+=e,t);for(var n=t.arr.length,a=t.sum/n,s=0,i=0;i>8&255]+se[e>>16&255]+se[e>>24&255]+"-"+se[255&t]+se[t>>8&255]+"-"+se[t>>16&15|64]+se[t>>24&255]+"-"+se[63&r|128]+se[r>>8&255]+"-"+se[r>>16&255]+se[r>>24&255]+se[255&n]+se[n>>8&255]+se[n>>16&255]+se[n>>24&255]},X.CaseValue=function(e){return X.extend(this,e)},X.CaseValue.prototype.toString=function(){var e="CASE ";return this.expression&&(e+=this.expression.toString()),this.whens&&(e+=this.whens.map(function(e){return" WHEN "+e.when.toString()+" THEN "+e.then.toString()}).join()),e+=" END"},X.CaseValue.prototype.findAggregator=function(e){this.expression&&this.expression.findAggregator&&this.expression.findAggregator(e),this.whens&&this.whens.length>0&&this.whens.forEach(function(t){t.when.findAggregator&&t.when.findAggregator(e),t.then.findAggregator&&t.then.findAggregator(e)}),this.elses&&this.elses.findAggregator&&this.elses.findAggregator(e)},X.CaseValue.prototype.toJS=function(e,t,r){var n="((function("+e+",params,alasql){var y,r;";return this.expression?(n+="v="+this.expression.toJS(e,t,r)+";",n+=(this.whens||[]).map(function(n){return" if(v=="+n.when.toJS(e,t,r)+") {r="+n.then.toJS(e,t,r)+"}"}).join(" else "),this.elses&&(n+=" else {r="+this.elses.toJS(e,t,r)+"}")):(n+=(this.whens||[]).map(function(n){return" if("+n.when.toJS(e,t,r)+") {r="+n.then.toJS(e,t,r)+"}"}).join(" else "),this.elses&&(n+=" else {r="+this.elses.toJS(e,t,r)+"}")),n+=";return r;}).bind(this))("+e+",params,alasql)"},X.Json=function(e){return X.extend(this,e)},X.Json.prototype.toString=function(){var e="";return e+=oe(this.value),e+=""};var oe=T.utils.JSONtoString=function(e){var t="";if("string"==typeof e)t='"'+e+'"';else if("number"==typeof e)t=e;else if("boolean"==typeof e)t=e;else{if("object"!=typeof e)throw new Error("2Can not show JSON object "+JSON.stringify(e));if(Array.isArray(e))t+="["+e.map(function(e){return oe(e)}).join(",")+"]";else if(!e.toJS||e instanceof X.Json){t="{";var r=[];for(var n in e){var a="";if("string"==typeof n)a+='"'+n+'"';else if("number"==typeof n)a+=n;else{if("boolean"!=typeof n)throw new Error("THis is not ES6... no expressions on left side yet");a+=n}a+=":"+oe(e[n]),r.push(a)}t+=r.join(",")+"}"}else{if(!e.toString)throw new Error("1Can not show JSON object "+JSON.stringify(e));t=e.toString()}}return t};X.Json.prototype.toJS=function(e,t,r){return b(this.value,e,t,r)},X.Convert=function(e){return X.extend(this,e)},X.Convert.prototype.toString=function(){var e="CONVERT(";return e+=this.dbtypeid,void 0!==this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+this.dbprecision),e+=")"),e+=","+this.expression.toString(),this.style&&(e+=","+this.style),e+=")"},X.Convert.prototype.toJS=function(e,t,r){return"alasql.stdfn.CONVERT("+this.expression.toJS(e,t,r)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",dbprecision:"+this.dbprecision+",style:"+this.style+"})"},T.stdfn.CONVERT=function(e,t){var r=e;if(t.style){var n;switch(n=/\d{8}/.test(r)?new Date(+r.substr(0,4),+r.substr(4,2)-1,+r.substr(6,2)):new Date(r),t.style){case 1:r=("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2)+"/"+("0"+n.getYear()).substr(-2);break;case 2:r=("0"+n.getYear()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getDate()).substr(-2);break;case 3:r=("0"+n.getDate()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getYear()).substr(-2);break;case 4:r=("0"+n.getDate()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getYear()).substr(-2);break;case 5:r=("0"+n.getDate()).substr(-2)+"-"+("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getYear()).substr(-2);break;case 6:r=("0"+n.getDate()).substr(-2)+" "+n.toString().substr(4,3).toLowerCase()+" "+("0"+n.getYear()).substr(-2);break;case 7:r=n.toString().substr(4,3)+" "+("0"+n.getDate()).substr(-2)+","+("0"+n.getYear()).substr(-2);break;case 8:case 108:r=("0"+n.getHours()).substr(-2)+":"+("0"+n.getMinutes()).substr(-2)+":"+("0"+n.getSeconds()).substr(-2);break;case 10:r=("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getDate()).substr(-2)+"-"+("0"+n.getYear()).substr(-2);break;case 11:r=("0"+n.getYear()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2);break;case 12:r=("0"+n.getYear()).substr(-2)+("0"+(n.getMonth()+1)).substr(-2)+("0"+n.getDate()).substr(-2);break;case 101:r=("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2)+"/"+n.getFullYear();break;case 102:r=n.getFullYear()+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getDate()).substr(-2);break;case 103:r=("0"+n.getDate()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+n.getFullYear();break;case 104:r=("0"+n.getDate()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+n.getFullYear();break;case 105:r=("0"+n.getDate()).substr(-2)+"-"+("0"+(n.getMonth()+1)).substr(-2)+"-"+n.getFullYear();break;case 106:r=("0"+n.getDate()).substr(-2)+" "+n.toString().substr(4,3).toLowerCase()+" "+n.getFullYear();break;case 107:r=n.toString().substr(4,3)+" "+("0"+n.getDate()).substr(-2)+","+n.getFullYear();break;case 110:r=("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getDate()).substr(-2)+"-"+n.getFullYear();break;case 111:r=n.getFullYear()+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2);break;case 112:r=n.getFullYear()+("0"+(n.getMonth()+1)).substr(-2)+("0"+n.getDate()).substr(-2);break;default:throw new Error("The CONVERT style "+t.style+" is not realized yet.")}}var a=t.dbtypeid.toUpperCase();if("Date"==t.dbtypeid)return new Date(r);if("DATE"==a){var s=new Date(r),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i}if("DATETIME"==a||"DATETIME2"==a){var s=new Date(r),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i+=" "+("0"+s.getHours()).substr(-2)+":"+("0"+s.getMinutes()).substr(-2)+":"+("0"+s.getSeconds()).substr(-2),i+="."+("00"+s.getMilliseconds()).substr(-3)}if(["MONEY"].indexOf(a)>-1){var o=+r;return(0|o)+100*o%100/100}if(["BOOLEAN"].indexOf(a)>-1)return!!r;if(["INT","INTEGER","SMALLINT","BIGINT","SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(t.dbtypeid.toUpperCase())>-1)return 0|r;if(["STRING","VARCHAR","NVARCHAR","CHARACTER VARIABLE"].indexOf(t.dbtypeid.toUpperCase())>-1)return t.dbsize?(""+r).substr(0,t.dbsize):""+r;if(["CHAR","CHARACTER","NCHAR"].indexOf(a)>-1)return(r+new Array(t.dbsize+1).join(" ")).substr(0,t.dbsize);if(["NUMBER","FLOAT","DECIMAL","NUMERIC"].indexOf(a)>-1){var o=+r;return o=void 0!==t.dbsize?parseFloat(o.toPrecision(t.dbsize)):o,o=void 0!==t.dbprecision?parseFloat(o.toFixed(t.dbprecision)):o}if(["JSON"].indexOf(a)>-1){if("object"==typeof r)return r;try{return JSON.parse(r)}catch(e){throw new Error("Cannot convert string to JSON")}}return r},X.ColumnDef=function(e){return X.extend(this,e)},X.ColumnDef.prototype.toString=function(){var e=this.columnid;return this.dbtypeid&&(e+=" "+this.dbtypeid),this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+this.dbprecision),e+=")"),this.primarykey&&(e+=" PRIMARY KEY"),this.notnull&&(e+=" NOT NULL"),e},X.CreateTable=function(e){return X.extend(this,e)},X.CreateTable.prototype.toString=function(){var e="CREATE";if(this.temporary&&(e+=" TEMPORARY"),this.view?e+=" VIEW":e+=" "+(this.class?"CLASS":"TABLE"),this.ifnotexists&&(e+=" IF NOT EXISTS"),e+=" "+this.table.toString(),this.viewcolumns&&(e+="("+this.viewcolumns.map(function(e){return e.toString()}).join(",")+")"),this.as)e+=" AS "+this.as;else{e+=" ("+this.columns.map(function(e){return e.toString()}).join(",")+")"}return this.view&&this.select&&(e+=" AS "+this.select.toString()),e},X.CreateTable.prototype.execute=function(e,t,r){var n=T.databases[this.table.databaseid||e],a=this.table.tableid;if(!a)throw new Error("Table name is not defined");var s=this.columns,i=this.constraints||[];if(this.ifnotexists&&n.tables[a])return r?r(0):0;if(n.tables[a])throw new Error("Can not create table '"+a+"', because it already exists in the database '"+n.databaseid+"'");var o=n.tables[a]=new T.Table;this.class&&(o.isclass=!0);var u=[],c=[];if(s&&s.forEach(function(t){var r=t.dbtypeid;T.fn[r]||(r=r.toUpperCase()),["SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(r)>-1&&(t.identity={value:1,step:1});var n={columnid:t.columnid,dbtypeid:r,dbsize:t.dbsize,dbprecision:t.dbprecision,notnull:t.notnull,identity:t.identity};if(t.identity&&(o.identities[t.columnid]={value:+t.identity.value,step:+t.identity.step}),t.check&&o.checks.push({id:t.check.constrantid,fn:new Function("r","var y;return "+t.check.expression.toJS("r",""))}),t.default&&u.push("'"+t.columnid+"':"+t.default.toJS("r","")),t.primarykey){var a=o.pk={};a.columns=[t.columnid],a.onrightfns="r['"+t.columnid+"']",a.onrightfn=new Function("r","var y;return "+a.onrightfns),a.hh=x(a.onrightfns),o.uniqs[a.hh]={}}if(t.unique){var s={};o.uk=o.uk||[],o.uk.push(s),s.columns=[t.columnid],s.onrightfns="r['"+t.columnid+"']",s.onrightfn=new Function("r","var y;return "+s.onrightfns),s.hh=x(s.onrightfns),o.uniqs[s.hh]={}}if(t.foreignkey){var i=t.foreignkey.table,l=T.databases[i.databaseid||e].tables[i.tableid];if(void 0===i.columnid){if(!(l.pk.columns&&l.pk.columns.length>0))throw new Error("FOREIGN KEY allowed only to tables with PRIMARY KEYs");i.columnid=l.pk.columns[0]}var h=function(e){var r={};if(void 0===e[t.columnid])return!0;r[i.columnid]=e[t.columnid];var n=l.pk.onrightfn(r);if(!l.uniqs[l.pk.hh][n])throw new Error('Foreign key "'+e[t.columnid]+'" is not found in table '+l.tableid);return!0};o.checks.push({fn:h})}t.onupdate&&c.push("r['"+t.columnid+"']="+t.onupdate.toJS("r","")),o.columns.push(n),o.xcolumns[n.columnid]=n}),o.defaultfns=u.join(","),o.onupdatefns=c.join(";"),i.forEach(function(t){var r;if("PRIMARY KEY"===t.type){if(o.pk)throw new Error("Primary key already exists");var n=o.pk={};n.columns=t.columns,n.onrightfns=n.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),n.onrightfn=new Function("r","var y;return "+n.onrightfns),n.hh=x(n.onrightfns),o.uniqs[n.hh]={}}else if("CHECK"===t.type)r=new Function("r","var y;return "+t.expression.toJS("r",""));else if("UNIQUE"===t.type){var a={};o.uk=o.uk||[],o.uk.push(a),a.columns=t.columns,a.onrightfns=a.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),a.onrightfn=new Function("r","var y;return "+a.onrightfns),a.hh=x(a.onrightfns),o.uniqs[a.hh]={}}else if("FOREIGN KEY"===t.type){var s=o.xcolumns[t.columns[0]],i=t.fktable;t.fkcolumns&&t.fkcolumns.length>0&&(i.columnid=t.fkcolumns[0]);var u=T.databases[i.databaseid||e].tables[i.tableid];void 0===i.columnid&&(i.columnid=u.pk.columns[0]),r=function(e){var t={};if(void 0===e[s.columnid])return!0;t[i.columnid]=e[s.columnid];var r=u.pk.onrightfn(t);if(!u.uniqs[u.pk.hh][r])throw new Error('Foreign key "'+e[s.columnid]+'" is not found in table '+u.tableid);return!0}}r&&o.checks.push({fn:r,id:t.constraintid,fk:"FOREIGN KEY"===t.type})}),this.view&&this.viewcolumns){var l=this;this.viewcolumns.forEach(function(e,t){l.select.columns[t].as=e.columnid})}if(this.view&&this.select&&(o.view=!0,o.select=this.select.compile(this.table.databaseid||e)),n.engineid)return T.engines[n.engineid].createTable(this.table.databaseid||e,a,this.ifnotexists,r);o.insert=function(r,n){var a=T.inserted;T.inserted=[r];var s=this,i=!1,o=!1;for(var u in s.beforeinsert){var c=s.beforeinsert[u];c&&(c.funcid?!1===T.fn[c.funcid](r)&&(o=o||!0):c.statement&&!1===c.statement.execute(e)&&(o=o||!0))}if(!o){var l=!1;for(u in s.insteadofinsert)l=!0,(c=s.insteadofinsert[u])&&(c.funcid?T.fn[c.funcid](r):c.statement&&c.statement.execute(e));if(!l){for(var h in s.identities){var d=s.identities[h];r[h]=d.value}if(s.checks&&s.checks.length>0&&s.checks.forEach(function(e){if(!e.fn(r))throw new Error("Violation of CHECK constraint "+(e.id||""))}),s.columns.forEach(function(e){if(e.notnull&&void 0===r[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),s.pk){var f=s.pk,p=f.onrightfn(r)
-;if(void 0!==s.uniqs[f.hh][p]){if(!n)throw new Error("Cannot insert record, because it already exists in primary key index");i=s.uniqs[f.hh][p]}}if(s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(r);if(void 0!==s.uniqs[e.hh][t]){if(!n)throw new Error("Cannot insert record, because it already exists in unique index");i=s.uniqs[e.hh][t]}}),i)s.update(function(e){for(var t in r)e[t]=r[t]},s.data.indexOf(i),t);else{s.data.push(r);for(var h in s.identities){var d=s.identities[h];d.value+=d.step}if(s.pk){var f=s.pk,p=f.onrightfn(r);s.uniqs[f.hh][p]=r}s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(r);s.uniqs[e.hh][t]=r})}for(var u in s.afterinsert){var c=s.afterinsert[u];c&&(c.funcid?T.fn[c.funcid](r):c.statement&&c.statement.execute(e))}T.inserted=a}}},o.delete=function(t){var r=this,n=r.data[t],a=!1;for(var s in r.beforedelete){var i=r.beforedelete[s];i&&(i.funcid?!1===T.fn[i.funcid](n)&&(a=a||!0):i.statement&&!1===i.statement.execute(e)&&(a=a||!0))}if(a)return!1;var o=!1;for(var s in r.insteadofdelete){o=!0;var i=r.insteadofdelete[s];i&&(i.funcid?T.fn[i.funcid](n):i.statement&&i.statement.execute(e))}if(!o){if(this.pk){var u=this.pk,c=u.onrightfn(n);if(void 0===this.uniqs[u.hh][c])throw new Error("Something wrong with primary key index on table");this.uniqs[u.hh][c]=void 0}r.uk&&r.uk.length&&r.uk.forEach(function(e){var t=e.onrightfn(n);if(void 0===r.uniqs[e.hh][t])throw new Error("Something wrong with unique index on table");r.uniqs[e.hh][t]=void 0})}},o.deleteall=function(){this.data.length=0,this.pk&&(this.uniqs[this.pk.hh]={}),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh]={}})},o.update=function(t,r,n){var a,s=_(this.data[r]);if(this.pk&&(a=this.pk,a.pkaddr=a.onrightfn(s,n),void 0===this.uniqs[a.hh][a.pkaddr]))throw new Error("Something wrong with index on table");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.ukaddr=e.onrightfn(s),void 0===o.uniqs[e.hh][e.ukaddr])throw new Error("Something wrong with unique index on table")}),t(s,n,T);var i=!1;for(var u in o.beforeupdate){var c=o.beforeupdate[u];c&&(c.funcid?!1===T.fn[c.funcid](this.data[r],s)&&(i=i||!0):c.statement&&!1===c.statement.execute(e)&&(i=i||!0))}if(i)return!1;var l=!1;for(var u in o.insteadofupdate){l=!0;var c=o.insteadofupdate[u];c&&(c.funcid?T.fn[c.funcid](this.data[r],s):c.statement&&c.statement.execute(e))}if(!l){if(o.checks&&o.checks.length>0&&o.checks.forEach(function(e){if(!e.fn(s))throw new Error("Violation of CHECK constraint "+(e.id||""))}),o.columns.forEach(function(e){if(e.notnull&&void 0===s[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),this.pk&&(a.newpkaddr=a.onrightfn(s),void 0!==this.uniqs[a.hh][a.newpkaddr]&&a.newpkaddr!==a.pkaddr))throw new Error("Record already exists");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.newukaddr=e.onrightfn(s),void 0!==o.uniqs[e.hh][e.newukaddr]&&e.newukaddr!==e.ukaddr)throw new Error("Record already exists")}),this.pk&&(this.uniqs[a.hh][a.pkaddr]=void 0,this.uniqs[a.hh][a.newpkaddr]=s),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh][e.ukaddr]=void 0,o.uniqs[e.hh][e.newukaddr]=s}),this.data[r]=s;for(var u in o.afterupdate){var c=o.afterupdate[u];c&&(c.funcid?T.fn[c.funcid](this.data[r],s):c.statement&&c.statement.execute(e))}}};var h;return T.options.nocount||(h=1),r&&(h=r(h)),h},T.fn.Date=Object,T.fn.Date=Date,T.fn.Number=Number,T.fn.String=String,T.fn.Boolean=Boolean,ae.EXTEND=T.utils.extend,ae.CHAR=String.fromCharCode.bind(String),ae.ASCII=function(e){return e.charCodeAt(0)},ae.COALESCE=function(){for(var e=0;e0)var n=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),s=new Function("x,params,alasql",n);return function(e,n){var i,o,u=T.databases[t];o=void 0!==r?r:u.counter++;var c={$id:o,$node:"VERTEX"};return u.objects[c.$id]=c,i=c,a&&a(c),s&&s(c,e,T),n&&(i=n(i)),i}},X.CreateEdge=function(e){return X.extend(this,e)},X.CreateEdge.prototype.toString=function(){var e="CREATE EDGE ";return this.class&&(e+=this.class+" "),e},X.CreateEdge.prototype.toJS=function(e){return"this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+")"},X.CreateEdge.prototype.compile=function(e){var t=e,r=new Function("params,alasql","var y;return "+this.from.toJS()),n=new Function("params,alasql","var y;return "+this.to.toJS());if(void 0!==this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);return function(e,a){var o=0,u=T.databases[t],c={$id:u.counter++,$node:"EDGE"},l=r(e,T),h=n(e,T);return c.$in=[l.$id],c.$out=[h.$id],void 0===l.$out&&(l.$out=[]),l.$out.push(c.$id),void 0===typeof h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,T),a&&(o=a(o)),o}},X.CreateGraph=function(e){return X.extend(this,e)},X.CreateGraph.prototype.toString=function(){var e="CREATE GRAPH ";return this.class&&(e+=this.class+" "),e},X.CreateGraph.prototype.execute=function(e,t,r){function n(e){var t=T.databases[T.useid].objects;for(var r in t)if(t[r].name===e)return t[r]}function a(r){var n={};void 0!==r.as&&(T.vars[r.as]=n),void 0!==r.prop&&(n.$id=r.prop,n.name=r.prop),void 0!==r.sharp&&(n.$id=r.sharp),void 0!==r.name&&(n.name=r.name),void 0!==r.class&&(n.$class=r.class);var a=T.databases[e];if(void 0===n.$id&&(n.$id=a.counter++),n.$node="VERTEX",void 0!==r.json&&q(n,new Function("params,alasql","var y;return "+r.json.toJS())(t,T)),a.objects[n.$id]=n,void 0!==n.$class){if(void 0===T.databases[e].tables[n.$class])throw new Error("No such class. Pleace use CREATE CLASS");T.databases[e].tables[n.$class].data.push(n)}return s.push(n.$id),n}var s=[];return this.from&&T.from[this.from.funcid]&&(this.graph=T.from[this.from.funcid.toUpperCase()]),this.graph.forEach(function(r){if(r.source){var i={};void 0!==r.as&&(T.vars[r.as]=i),void 0!==r.prop&&(i.name=r.prop),void 0!==r.sharp&&(i.$id=r.sharp),void 0!==r.name&&(i.name=r.name),void 0!==r.class&&(i.$class=r.class);var o=T.databases[e];void 0===i.$id&&(i.$id=o.counter++),i.$node="EDGE",void 0!==r.json&&q(i,new Function("params,alasql","var y;return "+r.json.toJS())(t,T));var u;if(r.source.vars){var c=T.vars[r.source.vars];u="object"==typeof c?c:o.objects[c]}else{var l=r.source.sharp;void 0===l&&(l=r.source.prop),u=T.databases[e].objects[l],void 0!==u||!T.options.autovertex||void 0===r.source.prop&&void 0===r.source.name||void 0===(u=n(r.source.prop||r.source.name))&&(u=a(r.source))}var h;if(r.source.vars){var c=T.vars[r.target.vars];h="object"==typeof c?c:o.objects[c]}else{var d=r.target.sharp;void 0===d&&(d=r.target.prop),h=T.databases[e].objects[d],void 0!==h||!T.options.autovertex||void 0===r.target.prop&&void 0===r.target.name||void 0===(h=n(r.target.prop||r.target.name))&&(h=a(r.target))}if(i.$in=[u.$id],i.$out=[h.$id],void 0===u.$out&&(u.$out=[]),u.$out.push(i.$id),void 0===h.$in&&(h.$in=[]),h.$in.push(i.$id),o.objects[i.$id]=i,void 0!==i.$class){if(void 0===T.databases[e].tables[i.$class])throw new Error("No such class. Pleace use CREATE CLASS");T.databases[e].tables[i.$class].data.push(i)}s.push(i.$id)}else a(r)}),r&&(s=r(s)),s},X.CreateGraph.prototype.compile1=function(e){var t=e,r=new Function("params,alasql","var y;return "+this.from.toJS()),n=new Function("params,alasql","var y;return "+this.to.toJS());if(void 0!==this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);return function(e,a){var o=0,u=T.databases[t],c={$id:u.counter++,$node:"EDGE"},l=r(e,T),h=n(e,T);return c.$in=[l.$id],c.$out=[h.$id],void 0===l.$out&&(l.$out=[]),l.$out.push(c.$id),void 0===h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,T),a&&(o=a(o)),o}},X.AlterTable=function(e){return X.extend(this,e)},X.AlterTable.prototype.toString=function(){var e="ALTER TABLE "+this.table.toString();return this.renameto&&(e+=" RENAME TO "+this.renameto),e},X.AlterTable.prototype.execute=function(e,t,r){var n=T.databases[e];if(n.dbversion=Date.now(),this.renameto){var a=this.table.tableid,s=this.renameto,i=1;if(n.tables[s])throw new Error("Can not rename a table '"+a+"' to '"+s+"', because the table with this name already exists");if(s===a)throw new Error("Can not rename a table '"+a+"' to itself");return n.tables[s]=n.tables[a],delete n.tables[a],i=1,r&&r(i),i}if(this.addcolumn){n=T.databases[this.table.databaseid||e],n.dbversion++;var o=this.table.tableid,u=n.tables[o],c=this.addcolumn.columnid;if(u.xcolumns[c])throw new Error('Cannot add column "'+c+'", because it already exists in the table "'+o+'"');var l={columnid:c,dbtypeid:this.dbtypeid,dbsize:this.dbsize,dbprecision:this.dbprecision,dbenum:this.dbenum,defaultfns:null};u.columns.push(l),u.xcolumns[c]=l;for(var h=0,d=u.data.length;h0)for(var l=0,h=s.data.length;l0)for(var l=0,h=s.data.length;l=0?r+="(x="+s[t].toJS()+",x==undefined?undefined:+x)":T.fn[a.xcolumns[e.columnid].dbtypeid]?(r+="(new "+a.xcolumns[e.columnid].dbtypeid+"(",r+=s[t].toJS(),r+="))"):r+=s[t].toJS():r+=s[t].toJS(),u.push(r)}):Array.isArray(s)&&a.columns&&a.columns.length>0?a.columns.forEach(function(e,t){var r="'"+e.columnid+"':";["INT","FLOAT","NUMBER","MONEY"].indexOf(e.dbtypeid)>=0?r+="+"+s[t].toJS():T.fn[e.dbtypeid]?(r+="(new "+e.dbtypeid+"(",r+=s[t].toJS(),r+="))"):r+=s[t].toJS(),u.push(r)}):o=b(s),r.tables[n].defaultfns&&u.unshift(r.tables[n].defaultfns),i+=o?"a="+o+";":"a={"+u.join(",")+"};",r.tables[n].isclass&&(i+="var db=alasql.databases['"+e+"'];",i+='a.$class="'+n+'";',i+="a.$id=db.counter++;",i+="db.objects[a.$id]=a;"),r.tables[n].insert?(i+="var db=alasql.databases['"+e+"'];",i+="db.tables['"+n+"'].insert(a,"+(t.orreplace?"true":"false")+");"):i+="aa.push(a);"}),s=u+i,r.tables[n].insert||(i+="alasql.databases['"+e+"'].tables['"+n+"'].data=alasql.databases['"+e+"'].tables['"+n+"'].data.concat(aa);"),r.tables[n].insert&&r.tables[n].isclass?i+="return a.$id;":i+="return "+t.values.length;var c=new Function("db, params, alasql","var y;"+u+i).bind(this)}else if(this.select){this.select.modifier="RECORDSET";var l=this.select.compile(e);if(r.engineid&&T.engines[r.engineid].intoTable){var h=function(e,t){var a=l(e);return T.engines[r.engineid].intoTable(r.databaseid,n,a.data,null,t)};return h}var d="return alasql.utils.extend(r,{"+a.defaultfns+"})",f=new Function("r,db,params,alasql",d),c=function(e,r,a){var s=l(r).data;if(e.tables[n].insert)for(var i=0,o=s.length;i0&&(e+="("+this.args.map(function(e){return e.toString()}).join(", ")+")"),this.as&&(e+=" AS "+this.as),e},X.CreateDatabase.prototype.execute=function(e,t,r){if(this.args&&this.args.length>0&&this.args.map(function(e){return new Function("params,alasql","var y;return "+e.toJS())(t,T)}),this.engineid){var n=T.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,r);return n}var a=this.databaseid;if(T.databases[a])throw new Error("Database '"+a+"' already exists");var n=(new T.Database(a),1);return r?r(n):n},X.AttachDatabase=function(e){return X.extend(this,e)},X.AttachDatabase.prototype.toString=function(e){var t="ATTACH";return this.engineid&&(t+=" "+this.engineid),t+=" DATABASE "+this.databaseid,e&&(t+="(",e.length>0&&(t+=e.map(function(e){return e.toString()}).join(", ")),t+=")"),this.as&&(t+=" AS "+this.as),t},X.AttachDatabase.prototype.execute=function(e,t,r){if(!T.engines[this.engineid])throw new Error('Engine "'+this.engineid+'" is not defined.');return T.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,t,r)},X.DetachDatabase=function(e){return X.extend(this,e)},X.DetachDatabase.prototype.toString=function(){var e="DETACH";return e+=" DATABASE "+this.databaseid},X.DetachDatabase.prototype.execute=function(e,t,r){if(!T.databases[this.databaseid].engineid)throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.');var n,a=this.databaseid;if(a===T.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(T.databases[a])delete T.databases[a],a===T.useid&&T.use(),n=1;else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");n=0}return r&&r(n),n},X.UseDatabase=function(e){return X.extend(this,e)},X.UseDatabase.prototype.toString=function(){return"USE DATABASE "+this.databaseid},X.UseDatabase.prototype.execute=function(e,t,r){var n=this.databaseid;if(!T.databases[n])throw new Error("Database '"+n+"' does not exist");T.use(n);return r&&r(1),1},X.DropDatabase=function(e){return X.extend(this,e)},X.DropDatabase.prototype.toString=function(){var e="DROP";return this.ifexists&&(e+=" IF EXISTS"),e+=" DATABASE "+this.databaseid},X.DropDatabase.prototype.execute=function(e,t,r){if(this.engineid)return T.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,r);var n,a=this.databaseid;if(a===T.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(T.databases[a]){if(T.databases[a].engineid)throw new Error("Cannot drop database '"+a+"', because it is attached. Detach it.");delete T.databases[a],a===T.useid&&T.use(),n=1}else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");n=0}return r&&r(n),n},X.Declare=function(e){return X.extend(this,e)},X.Declare.prototype.toString=function(){var e="DECLARE ";return this.declares&&this.declares.length>0&&(e=this.declares.map(function(e){var t="";return t+="@"+e.variable+" ",t+=e.dbtypeid,this.dbsize&&(t+="("+this.dbsize,this.dbprecision&&(t+=","+this.dbprecision),t+=")"),e.expression&&(t+=" = "+e.expression.toString()),t}).join(",")),e},X.Declare.prototype.execute=function(e,t,r){var n=1;return this.declares&&this.declares.length>0&&this.declares.map(function(e){var r=e.dbtypeid;T.fn[r]||(r=r.toUpperCase()),T.declares[e.variable]={dbtypeid:r,dbsize:e.dbsize,dbprecision:e.dbprecision},e.expression&&(T.vars[e.variable]=new Function("params,alasql","return "+e.expression.toJS("({})","",null))(t,T),T.declares[e.variable]&&(T.vars[e.variable]=T.stdfn.CONVERT(T.vars[e.variable],T.declares[e.variable])))}),r&&(n=r(n)),n},X.ShowDatabases=function(e){return X.extend(this,e)},X.ShowDatabases.prototype.toString=function(){var e="SHOW DATABASES";return this.like&&(e+="LIKE "+this.like.toString()),e},X.ShowDatabases.prototype.execute=function(e,t,r){if(this.engineid)return T.engines[this.engineid].showDatabases(this.like,r);var n=this,a=[];for(var s in T.databases)a.push({databaseid:s});return n.like&&a&&a.length>0&&(a=a.filter(function(e){return T.utils.like(n.like.value,e.databaseid)})),r&&r(a),a},X.ShowTables=function(e){return X.extend(this,e)},X.ShowTables.prototype.toString=function(){var e="SHOW TABLES";return this.databaseid&&(e+=" FROM "+this.databaseid),this.like&&(e+=" LIKE "+this.like.toString()),e},X.ShowTables.prototype.execute=function(e,t,r){
-var n=T.databases[this.databaseid||e],a=this,s=[];for(var i in n.tables)s.push({tableid:i});return a.like&&s&&s.length>0&&(s=s.filter(function(e){return T.utils.like(a.like.value,e.tableid)})),r&&r(s),s},X.ShowColumns=function(e){return X.extend(this,e)},X.ShowColumns.prototype.toString=function(){var e="SHOW COLUMNS";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowColumns.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=n.tables[this.table.tableid];if(a&&a.columns){var s=a.columns.map(function(e){return{columnid:e.columnid,dbtypeid:e.dbtypeid,dbsize:e.dbsize}});return r&&r(s),s}return r&&r([]),[]},X.ShowIndex=function(e){return X.extend(this,e)},X.ShowIndex.prototype.toString=function(){var e="SHOW INDEX";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowIndex.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=n.tables[this.table.tableid],s=[];if(a&&a.indices)for(var i in a.indices)s.push({hh:i,len:Object.keys(a.indices[i]).length});return r&&r(s),s},X.ShowCreateTable=function(e){return X.extend(this,e)},X.ShowCreateTable.prototype.toString=function(){var e="SHOW CREATE TABLE "+this.table.tableid;return this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowCreateTable.prototype.execute=function(e){var t=T.databases[this.databaseid||e],r=t.tables[this.table.tableid];if(r){var n="CREATE TABLE "+this.table.tableid+" (",a=[];return r.columns&&(r.columns.forEach(function(e){var t=e.columnid+" "+e.dbtypeid;e.dbsize&&(t+="("+e.dbsize+")"),e.primarykey&&(t+=" PRIMARY KEY"),a.push(t)}),n+=a.join(", ")),n+=")"}throw new Error('There is no such table "'+this.table.tableid+'"')},X.SetVariable=function(e){return X.extend(this,e)},X.SetVariable.prototype.toString=function(){var e="SET ";return void 0!==this.value&&(e+=this.variable.toUpperCase()+" "+(this.value?"ON":"OFF")),this.expression&&(e+=this.method+this.variable+" = "+this.expression.toString()),e},X.SetVariable.prototype.execute=function(e,t,r){if(void 0!==this.value){var n=this.value;"ON"==n?n=!0:"OFF"==n&&(n=!1),T.options[this.variable]=n}else if(this.expression){this.exists&&(this.existsfn=this.exists.map(function(t){var r=t.compile(e);return r.query&&!r.query.modifier&&(r.query.modifier="RECORDSET"),r})),this.queries&&(this.queriesfn=this.queries.map(function(t){var r=t.compile(e);return r.query&&!r.query.modifier&&(r.query.modifier="RECORDSET"),r}));var a=new Function("params,alasql","return "+this.expression.toJS("({})","",null)).bind(this)(t,T);if(T.declares[this.variable]&&(a=T.stdfn.CONVERT(a,T.declares[this.variable])),this.props&&this.props.length>0){if("@"==this.method)var s="alasql.vars['"+this.variable+"']";else var s="params['"+this.variable+"']";s+=this.props.map(function(e){return"string"==typeof e?"['"+e+"']":"number"==typeof e?"["+e+"]":"["+e.toJS()+"]"}).join(),new Function("value,params,alasql","var y;"+s+"=value")(a,t,T)}else"@"==this.method?T.vars[this.variable]=a:t[this.variable]=a}var a=1;return r&&(a=r(a)),a},T.test=function(e,t,r){if(0===arguments.length)return void T.log(T.con.results);var n=Date.now();if(1===arguments.length)return r(),void T.con.log(Date.now()-n);2===arguments.length&&(r=t,t=1);for(var a=0;a",e),Array.isArray(a)&&console.table?console.table(a):console.log(oe(a));else{var s;s="output"===n?document.getElementsByTagName("output")[0]:"string"==typeof n?document.getElementById(n):n;var i="";if("string"==typeof e&&T.options.logprompt&&(i+=""+T.pretty(e)+" "),Array.isArray(a))if(0===a.length)i+="[ ]
";else if("object"!=typeof a[0]||Array.isArray(a[0]))for(var o=0,u=a.length;o"+E(a[o])+"
";else i+=E(a);else i+=E(a);s.innerHTML+=i}},T.clear=function(){var e=T.options.logtarget;if(N.isNode||N.isMeteorServer)console.clear&&console.clear();else{var t;t="output"===e?document.getElementsByTagName("output")[0]:"string"==typeof e?document.getElementById(e):e,t.innerHTML=""}},T.write=function(e){var t=T.options.logtarget;if(N.isNode||N.isMeteorServer)console.log&&console.log(e);else{var r;r="output"===t?document.getElementsByTagName("output")[0]:"string"==typeof t?document.getElementById(t):t,r.innerHTML+=e}},T.prompt=function(e,t,r){if(N.isNode)throw new Error("The prompt not realized for Node.js");var n=0;if("string"==typeof e&&(e=document.getElementById(e)),"string"==typeof t&&(t=document.getElementById(t)),t.textContent=T.useid,r){T.prompthistory.push(r),n=T.prompthistory.length;try{var a=Date.now();T.log(r),T.write(''+(Date.now()-a)+" ms
")}catch(e){T.write(""+olduseid+"> "+sql+"
"),T.write(''+e+"
")}}var s=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;g(document.getElementsByTagName("body")[0],s,500),e.onkeydown=function(r){if(13===r.which){var a=e.value,s=T.useid;e.value="",T.prompthistory.push(a),n=T.prompthistory.length;try{var i=Date.now();T.log(a),T.write('
'+(Date.now()-i)+" ms
")}catch(e){T.write(""+s+"> "+T.pretty(a,!1)+"
"),T.write(''+e+"
")}e.focus(),t.textContent=T.useid;var o=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;g(document.getElementsByTagName("body")[0],o,500)}else 38===r.which?(n--,n<0&&(n=0),T.prompthistory[n]&&(e.value=T.prompthistory[n],r.preventDefault())):40===r.which&&(n++,n>=T.prompthistory.length?(n=T.prompthistory.length,e.value=""):T.prompthistory[n]&&(e.value=T.prompthistory[n],r.preventDefault()))}},X.BeginTransaction=function(e){return X.extend(this,e)},X.BeginTransaction.prototype.toString=function(){return"BEGIN TRANSACTION"},X.BeginTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[T.useid].engineid].begin(e,r):(r&&r(1),1)},X.CommitTransaction=function(e){return X.extend(this,e)},X.CommitTransaction.prototype.toString=function(){return"COMMIT TRANSACTION"},X.CommitTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[T.useid].engineid].commit(e,r):(r&&r(1),1)},X.RollbackTransaction=function(e){return X.extend(this,e)},X.RollbackTransaction.prototype.toString=function(){return"ROLLBACK TRANSACTION"},X.RollbackTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[e].engineid].rollback(e,r):(r&&r(1),1)},T.options.tsql&&(T.stdfn.OBJECT_ID=function(e,t){void 0===t&&(t="T"),t=t.toUpperCase();var r=e.split("."),n=T.useid,a=r[0];2==r.length&&(n=r[0],a=r[1]);var s=T.databases[n].tables;n=T.databases[n].databaseid;for(var i in s)if(i==a){if(s[i].view&&"V"==t)return n+"."+i;if(!s[i].view&&"T"==t)return n+"."+i;return}}),T.options.mysql,(T.options.mysql||T.options.sqlite)&&(T.from.INFORMATION_SCHEMA=function(e,t,r,n,a){if("VIEWS"==e||"TABLES"==e){var s=[];for(var i in T.databases){var o=T.databases[i].tables;for(var u in o)(o[u].view&&"VIEWS"==e||!o[u].view&&"TABLES"==e)&&s.push({TABLE_CATALOG:i,TABLE_NAME:u})}return r&&(s=r(s,n,a)),s}throw new Error("Unknown INFORMATION_SCHEMA table")}),T.options.postgres,T.options.oracle,T.options.sqlite,T.into.SQL=function(e,t,r,n,a){var s;"object"==typeof e&&(t=e,e=void 0);var i={};if(T.utils.extend(i,t),void 0===i.tableid)throw new Error("Table for INSERT TO is not defined.");var o="";0===n.length&&"object"==typeof r[0]&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}}));for(var u=0,c=r.length;u0&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s=r.length,i="";if(r.length>0){var o=n[0].columnid;i+=r.map(function(e){return e[o]}).join("\n")}return e=T.utils.autoExtFilename(e,"txt",t),s=T.utils.saveFile(e,i),a&&(s=a(s)),s},T.into.TAB=T.into.TSV=function(e,t,r,n,a){var s={};return T.utils.extend(s,t),s.separator="\t",e=T.utils.autoExtFilename(e,"tab",t),s.autoExt=!1,T.into.CSV(e,s,r,n,a)},T.into.CSV=function(e,t,r,n,a){0===n.length&&r.length>0&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s={headers:!0};s.separator=";",s.quote='"',s.utf8Bom=!0,t&&!t.headers&&void 0!==t.headers&&(s.utf8Bom=!1),T.utils.extend(s,t);var i=r.length,o=s.utf8Bom?"\ufeff":"";return s.headers&&(o+=s.quote+n.map(function(e){return e.columnid.trim()}).join(s.quote+s.separator+s.quote)+s.quote+"\r\n"),r.forEach(function(e){o+=n.map(function(t){var r=e[t.columnid];return""!==s.quote&&(r=(r+"").replace(new RegExp("\\"+s.quote,"g"),s.quote+s.quote)),+r!=r&&(r=s.quote+r+s.quote),r}).join(s.separator)+"\r\n"}),e=T.utils.autoExtFilename(e,"csv",t),i=T.utils.saveFile(e,o,null,{disableAutoBom:!0}),a&&(i=a(i)),i},T.into.XLS=function(e,t,r,n,a){"object"==typeof e&&(t=e,e=void 0);var s={};t&&t.sheets&&(s=t.sheets);var i={headers:!0};void 0!==s.Sheet1?i=s[0]:void 0!==t&&(i=t),void 0===i.sheetid&&(i.sheetid="Sheet1");var o=function(){var e=' \t\t \t\t\x3c!--[if gte mso 9]> ';if(e+=" "+i.sheetid+" \t\t ",e+=" ",e+="",e+="",void 0!==i.caption){var a=i.caption;"string"==typeof a&&(a={title:a}),e+="",e+=a.title,e+=" "}return void 0!==i.columns?n=i.columns:0==n.length&&r.length>0&&"object"==typeof r[0]&&(n=Array.isArray(r[0])?r[0].map(function(e,t){return{columnid:t}}):Object.keys(r[0]).map(function(e){return{columnid:e}})),n.forEach(function(e,t){void 0!==i.column&&q(e,i.column),void 0===e.width&&(i.column&&"undefined"!=i.column.width?e.width=i.column.width:e.width="120px"),"number"==typeof e.width&&(e.width=e.width+"px"),void 0===e.columnid&&(e.columnid=t),void 0===e.title&&(e.title=""+e.columnid.trim()),i.headers&&Array.isArray(i.headers)&&(e.title=i.headers[t])}),e+="",n.forEach(function(t){e+=' '}),e+=" ",i.headers&&(e+="",e+="",n.forEach(function(t,r){e+="",void 0!==t.title&&("function"==typeof t.title?e+=t.title(i,t,r):e+=t.title),e+=" "}),e+=" ",e+=" "),e+="",r&&r.length>0&&r.forEach(function(r,a){if(!(a>i.limit)){e+="",n.forEach(function(n,o){var u={};q(u,i.cell),q(u,s.cell),void 0!==i.column&&q(u,i.column.cell),q(u,n.cell),i.cells&&i.cells[a]&&i.cells[a][o]&&q(u,i.cells[a][o]);var c=r[n.columnid];"function"==typeof u.value&&(c=u.value(c,i,r,n,u,a,o));var l=u.typeid;"function"==typeof l&&(l=l(c,i,r,n,u,a,o)),void 0===l&&("number"==typeof c?l="number":"string"==typeof c?l="string":"boolean"==typeof c?l="boolean":"object"==typeof c&&c instanceof Date&&(l="date"));var h="";"money"==l?h='mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;':"number"==l?h=" ":"date"==l?h='mso-number-format:"Short Date";':t.types&&t.types[l]&&t.types[l].typestyle&&(h=t.types[l].typestyle),h=h||'mso-number-format:"\\@";',e+="";var d=u.format;if(void 0===c)e+="";else if(void 0!==d)if("function"==typeof d)e+=d(c);else{if("string"!=typeof d)throw new Error("Unknown format type. Should be function or string");e+=c}else e+="number"==l||"date"==l?c.toString():"money"==l?(+c).toFixed(2):c;e+=" "}),e+=" "}}),e+=" ",e+="
",e+="",e+=""}();e=T.utils.autoExtFilename(e,"xls",t);var u=T.utils.saveFile(e,o);return a&&(u=a(u)),u},T.into.XLSXML=function(e,t,r,n,a){t=t||{},"object"==typeof e&&(t=e,e=void 0);var s,i,o={};t&&t.sheets?(o=t.sheets,s=r,i=n):(o.Sheet1=t,s=[r],i=[n]),e=T.utils.autoExtFilename(e,"xls",t);var u=T.utils.saveFile(e,function(){function e(e){var t="";for(var n in e){t+="<"+n;for(var s in e[n])t+=" ","x:"==s.substr(0,2)?t+=s:t+="ss:",t+=s+'="'+e[n][s]+'"';t+="/>"}var i=x(t);return a[i]||(a[i]={styleid:u},r+='",u++),"s"+a[i].styleid}var r="",n=" ",a={},u=62,c=0;for(var l in o){var h=o[l],d=void 0!==h.dataidx?h.dataidx:c++,f=function(e){try{return Object.values(e)}catch(t){return Object.keys(e).map(function(t){return e[t]})}}(s[d]),p=void 0;void 0!==h.columns?p=h.columns:(void 0===(p=i[d])||0==p.length&&f.length>0)&&"object"==typeof f[0]&&(p=Array.isArray(f[0])?f[0].map(function(e,t){return{columnid:t}}):Object.keys(f[0]).map(function(e){return{columnid:e}})),p.forEach(function(e,t){void 0!==h.column&&q(e,h.column),void 0===e.width&&(h.column&&void 0!==h.column.width?e.width=h.column.width:e.width=120),"number"==typeof e.width&&(e.width=e.width),void 0===e.columnid&&(e.columnid=t),void 0===e.title&&(e.title=""+e.columnid.trim()),h.headers&&Array.isArray(h.headers)&&(e.title=h.headers[t])}),n+=' \t \t\t\t',p.forEach(function(e,t){n+=' '}),h.headers&&(n+='',p.forEach(function(t,r){if(n+="',void 0!==t.title&&("function"==typeof t.title?n+=t.title(h,t,r):n+=t.title),n+=" | "}),n+="
"),f&&f.length>0&&f.forEach(function(r,a){if(!(a>h.limit)){var s={};if(q(s,h.row),h.rows&&h.rows[a]&&q(s,h.rows[a]),n+="",p.forEach(function(i,o){var u={};q(u,h.cell),q(u,s.cell),void 0!==h.column&&q(u,h.column.cell),q(u,i.cell),h.cells&&h.cells[a]&&h.cells[a][o]&&q(u,h.cells[a][o]);var c=r[i.columnid];"function"==typeof u.value&&(c=u.value(c,h,r,i,u,a,o));var l=u.typeid;"function"==typeof l&&(l=l(c,h,r,i,u,a,o)),void 0===l&&("number"==typeof c?l="number":"string"==typeof c?l="string":"boolean"==typeof c?l="boolean":"object"==typeof c&&c instanceof Date&&(l="date"));var d="String";"number"==l?d="Number":"date"==l&&(d="Date");var f="";"money"==l?f='mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;':"number"==l?f=" ":"date"==l?f='mso-number-format:"Short Date";':t.types&&t.types[l]&&t.types[l].typestyle&&(f=t.types[l].typestyle),f=f||'mso-number-format:"\\@";',n+="",n+='';var b=u.format;if(void 0===c)n+="";else if(void 0!==b)if("function"==typeof b)n+=b(c);else{if("string"!=typeof b)throw new Error("Unknown format type. Should be function or string");n+=c}else n+="number"==l||"date"==l?c.toString():"money"==l?(+c).toFixed(2):c;n+=" | "}),n+="
"}}),n+="
"}return n+="",' \t\t \t\t \t\t \t\t \t\t \t\t \t\t \t\t 0 \t\t \t\t \t\t '+r+n}());return a&&(u=a(u)),u},T.into.XLSX=function(e,t,r,n,s){function i(){"object"==typeof t&&Array.isArray(t)?r&&r.length>0&&r.forEach(function(e,r){o(t[r],e,void 0,r+1)}):o(t,r,n,1),u(s)}function o(e,t,r,n){var a={sheetid:"Sheet "+n,headers:!0};T.utils.extend(a,e);var s=Object.keys(t).length;(!r||0==r.length)&&s>0&&(r=Object.keys(t[0]).map(function(e){return{columnid:e}}));var i={};h.SheetNames.indexOf(a.sheetid)>-1?i=h.Sheets[a.sheetid]:(h.SheetNames.push(a.sheetid),h.Sheets[a.sheetid]={},i=h.Sheets[a.sheetid]);var o="A1";a.range&&(o=a.range);var u=T.utils.xlscn(o.match(/[A-Z]+/)[0]),c=+o.match(/[0-9]+/)[0]-1;if(h.Sheets[a.sheetid]["!ref"])var l=h.Sheets[a.sheetid]["!ref"],d=T.utils.xlscn(l.match(/[A-Z]+/)[0]),f=+l.match(/[0-9]+/)[0]-1;else var d=1,f=1;var p=Math.max(u+r.length,d),b=Math.max(c+s+2,f),E=c+1;h.Sheets[a.sheetid]["!ref"]="A1:"+T.utils.xlsnc(p)+b,a.headers&&(r.forEach(function(e,t){i[T.utils.xlsnc(u+t)+""+E]={v:e.columnid.trim()}}),E++);for(var g=0;g=b)return f;if(c)return c=!1,d;var t=E;if(e.charCodeAt(t)===h){for(var r=t;r++0){var s=this.exprs.map(function(e){var r=new Function("params,alasql,p","var y;return "+e.toJS("({})","",null)).bind(n),a=r(t,T);return oe(a)});console.log.apply(console,s)}else if(this.select){var i=this.select.execute(e,t);console.log(oe(i))}else console.log();return r&&(a=r(a)),a},X.Source=function(e){return X.extend(this,e)},X.Source.prototype.toString=function(){var e="SOURCE";return this.url&&(e+=" '"+this.url+" '"),e},X.Source.prototype.execute=function(e,t,r){var n;return I(this.url,!!r,function(e){return n=T(e),r&&(n=r(n)),n},function(e){throw e}),n},X.Require=function(e){return X.extend(this,e)},X.Require.prototype.toString=function(){var e="REQUIRE";return this.paths&&this.paths.length>0&&(e+=this.paths.map(function(e){return e.toString()}).join(",")),this.plugins&&this.plugins.length>0&&(e+=this.plugins.map(function(e){return e.toUpperCase()}).join(",")),e},X.Require.prototype.execute=function(e,t,r){var n=this,a=0,s="";return this.paths&&this.paths.length>0?this.paths.forEach(function(e){I(e.value,!!r,function(e){a++,s+=e,a0?this.plugins.forEach(function(e){T.plugins[e]||I(T.path+"/alasql-"+e.toLowerCase()+".js",!!r,function(i){a++,s+=i,aa?1:n===a?0:-1}}var r="",n="";return e.forEach(function(e){var t="";if(e.expression instanceof X.NumValue&&(e.expression=self.columns[e.expression.value-1]),e.expression instanceof X.Column){var a=e.expression.columnid;T.options.valueof&&(t=".valueOf()"),e.nocase&&(t+=".toUpperCase()"),"_"===a?(r+="if(a"+t+("ASC"===e.direction?">":"<")+"b"+t+")return 1;",r+="if(a"+t+"==b"+t+"){"):(r+="if((a['"+a+"']||'')"+t+("ASC"===e.direction?">":"<")+"(b['"+a+"']||'')"+t+")return 1;",r+="if((a['"+a+"']||'')"+t+"==(b['"+a+"']||'')"+t+"){")}else t=".valueOf()",e.nocase&&(t+=".toUpperCase()"),r+="if(("+e.toJS("a","")+"||'')"+t+("ASC"===e.direction?">(":"<(")+e.toJS("b","")+"||'')"+t+")return 1;",r+="if(("+e.toJS("a","")+"||'')"+t+"==("+e.toJS("b","")+"||'')"+t+"){";n+="}"}),r+="return 0;",r+=n+"return -1",new Function("a,b",r)}};T.srch.ORDERBY=function(e,t){return{status:1,values:e.sort(Q(t))}};var z=function(e){for(var t=0,r=e.sources.length;t0&&"ix"==n.optimization&&n.onleftfn&&n.onrightfn){if(n.databaseid&&T.databases[n.databaseid].tables[n.tableid]){T.databases[n.databaseid].tables[n.tableid].indices||(e.database.tables[n.tableid].indices={});var a=T.databases[n.databaseid].tables[n.tableid].indices[x(n.onrightfns+"`"+n.srcwherefns)];!T.databases[n.databaseid].tables[n.tableid].dirty&&a&&(n.ix=a)}if(!n.ix){n.ix={};for(var s,i={},o=0,u=n.data.length;(s=n.data[o])||n.getfn&&(s=n.getfn(o))||o0&&(e+=" GROUP BY "+this.group.map(function(e){return e.toString()}).join(", ")),this.having&&(e+=" HAVING "+this.having.toString()),this.order&&this.order.length>0&&(e+=" ORDER BY "+this.order.map(function(e){return e.toString()}).join(", ")),this.limit&&(e+=" LIMIT "+this.limit.value),this.offset&&(e+=" OFFSET "+this.offset.value),this.union&&(e+=" UNION "+(this.corresponding?"CORRESPONDING ":"")+this.union.toString()),this.unionall&&(e+=" UNION ALL "+(this.corresponding?"CORRESPONDING ":"")+this.unionall.toString()),this.except&&(e+=" EXCEPT "+(this.corresponding?"CORRESPONDING ":"")+this.except.toString()),this.intersect&&(e+=" INTERSECT "+(this.corresponding?"CORRESPONDING ":"")+this.intersect.toString()),e},X.Select.prototype.toJS=function(e){return"alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+"))[0]"},X.Select.prototype.compile=function(e,t){var r=T.databases[e],n=new W;if(n.removeKeys=[],n.aggrKeys=[],n.explain=this.explain,n.explaination=[],n.explid=1,n.modifier=this.modifier,n.database=r,this.compileWhereExists(n),this.compileQueries(n),n.defcols=this.compileDefCols(n,e),n.fromfn=this.compileFrom(n),this.joins&&this.compileJoins(n),n.rownums=[],this.compileSelectGroup0(n),this.group||n.selectGroup.length>0?n.selectgfns=this.compileSelectGroup1(n):n.selectfns=this.compileSelect1(n,t),this.compileRemoveColumns(n),this.where&&this.compileWhereJoins(n),n.wherefn=this.compileWhere(n),(this.group||n.selectGroup.length>0)&&(n.groupfn=this.compileGroup(n)),this.having&&(n.havingfn=this.compileHaving(n)),this.order&&(n.orderfn=this.compileOrder(n)),this.group||n.selectGroup.length>0?n.selectgfn=this.compileSelectGroup2(n):n.selectfn=this.compileSelect2(n),n.distinct=this.distinct,this.pivot&&(n.pivotfn=this.compilePivot(n)),this.unpivot&&(n.pivotfn=this.compileUnpivot(n)),this.top?n.limit=this.top.value:this.limit&&(n.limit=this.limit.value,this.offset&&(n.offset=this.offset.value)),n.percent=this.percent,n.corresponding=this.corresponding,this.union?(n.unionfn=this.union.compile(e),this.union.order?n.orderfn=this.union.compileOrder(n):n.orderfn=null):this.unionall?(n.unionallfn=this.unionall.compile(e),this.unionall.order?n.orderfn=this.unionall.compileOrder(n):n.orderfn=null):this.except?(n.exceptfn=this.except.compile(e),this.except.order?n.orderfn=this.except.compileOrder(n):n.orderfn=null):this.intersect&&(n.intersectfn=this.intersect.compile(e),this.intersect.order?n.intersectfn=this.intersect.compileOrder(n):n.orderfn=null),this.into){if(this.into instanceof X.Table)T.options.autocommit&&T.databases[this.into.databaseid||e].engineid?n.intoallfns='return alasql.engines["'+T.databases[this.into.databaseid||e].engineid+'"].intoTable("'+(this.into.databaseid||e)+'","'+this.into.tableid+'",this.data, columns, cb);':n.intofns="alasql.databases['"+(this.into.databaseid||e)+"'].tables['"+this.into.tableid+"'].data.push(r);";else if(this.into instanceof X.VarValue)n.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=this.data.length;if(cb)res=cb(res);return res;';else if(this.into instanceof X.FuncValue){var a="return alasql.into['"+this.into.funcid.toUpperCase()+"'](";this.into.args&&this.into.args.length>0?(a+=this.into.args[0].toJS()+",",this.into.args.length>1?a+=this.into.args[1].toJS()+",":a+="undefined,"):a+="undefined, undefined,",n.intoallfns=a+"this.data,columns,cb)"}else this.into instanceof X.ParamValue&&(n.intofns="params['"+this.into.param+"'].push(r)");n.intofns?n.intofn=new Function("r,i,params,alasql","var y;"+n.intofns):n.intoallfns&&(n.intoallfn=new Function("columns,cb,params,alasql","var y;"+n.intoallfns))}var s=function(e,t,r){return n.params=e,i(n,r,function(e,r){if(r)return t(r,null);if(n.rownums.length>0)for(var a=0,s=e.length;a0?(t.args[0]?n+=t.args[0].toJS("query.oldscope")+",":n+="null,",t.args[1]?n+=t.args[1].toJS("query.oldscope")+",":n+="null,"):n+="null,null,",n+="cb,idx,query",n+=");/*if(cb)res=cb(res,idx,query);*/return res",s.datafn=new Function("query, params, cb, idx, alasql",n);else{if(!(t instanceof X.FromData))throw new Error("Wrong table at FROM");s.datafn=function(e,r,n,a,s){var i=t.data;return n&&(i=n(i,a,e)),i}}e.sources.push(s)}),e.defaultTableid=e.sources[0].alias)},T.prepareFromData=function(e,t){var r,n,a=e;if("string"==typeof e){if(a=e.split(/\r?\n/),t)for(r=0,n=a.length;r0?(u[0]?o+=u[0].toJS("query.oldscope")+",":o+="null,",u[1]?o+=u[1].toJS("query.oldscope")+",":o+="null,"):o+="null,null,",o+="cb,idx,query",o+=");/*if(cb)res=cb(res,idx,query);*/return res",s.datafn=new Function("query, params, cb, idx, alasql",o),e.aliases[s.alias]={type:"funcvalue"}}var c=s.alias;if(t.natural){if(t.using||t.on)throw new Error("NATURAL JOIN cannot have USING or ON clauses");if(e.sources.length>0){var l=e.sources[e.sources.length-1],h=T.databases[l.databaseid].tables[l.tableid],d=T.databases[s.databaseid].tables[s.tableid];if(!h||!d)throw new Error("In this version of Alasql NATURAL JOIN works for tables with predefined columns only");var f=h.columns.map(function(e){return e.columnid}),p=d.columns.map(function(e){return e.columnid});t.using=L(f,p).map(function(e){return{columnid:e}})}}if(t.using)l=e.sources[e.sources.length-1],s.onleftfns=t.using.map(function(e){return"p['"+(l.alias||l.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),s.onleftfn=new Function("p,params,alasql","var y;return "+s.onleftfns),s.onrightfns=t.using.map(function(e){return"p['"+(s.alias||s.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),s.onrightfn=new Function("p,params,alasql","var y;return "+s.onrightfns),s.optimization="ix";else if(t.on)if(t.on instanceof X.Op&&"="===t.on.op&&!t.on.allsome){s.optimization="ix";var b="",E="",g="",m=!1,v=t.on.left.toJS("p",e.defaultTableid,e.defcols),S=t.on.right.toJS("p",e.defaultTableid,e.defcols);v.indexOf("p['"+c+"']")>-1&&!(S.indexOf("p['"+c+"']")>-1)?(v.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?E=v:m=!0:!(v.indexOf("p['"+c+"']")>-1)&&S.indexOf("p['"+c+"']")>-1&&(S.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?b=v:m=!0,S.indexOf("p['"+c+"']")>-1&&!(v.indexOf("p['"+c+"']")>-1)?(S.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?E=S:m=!0:!(S.indexOf("p['"+c+"']")>-1)&&v.indexOf("p['"+c+"']")>-1&&(v.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?b=S:m=!0,m&&(E="",b="",g=t.on.toJS("p",e.defaultTableid,e.defcols),s.optimization="no"),s.onleftfns=b,s.onrightfns=E,s.onmiddlefns=g||"true",s.onleftfn=new Function("p,params,alasql","var y;return "+s.onleftfns),s.onrightfn=new Function("p,params,alasql","var y;return "+s.onrightfns),s.onmiddlefn=new Function("p,params,alasql","var y;return "+s.onmiddlefns)}else s.optimization="no",s.onmiddlefns=t.on.toJS("p",e.defaultTableid,e.defcols),s.onmiddlefn=new Function("p,params,alasql","var y;return "+t.on.toJS("p",e.defaultTableid,e.defcols));e.sources.push(s)})},X.Select.prototype.compileWhere=function(e){if(this.where){if("function"==typeof this.where)return this.where;var t=this.where.toJS("p",e.defaultTableid,e.defcols);return e.wherefns=t,new Function("p,params,alasql","var y;return "+t)}return function(){return!0}},X.Select.prototype.compileWhereJoins=function(e){},X.Select.prototype.compileGroup=function(e){if(e.sources.length>0)var t=e.sources[0].alias;else var t="";var r=e.defcols,n=[[]];this.group&&(n=p(this.group,e));var a=[];n.forEach(function(e){a=D(a,e)}),e.allgroups=a,e.ingroup=[];var s="";return n.forEach(function(n){s+="var g=this.xgroups[";var i=n.map(function(t){var r=t.split("\t")[0],n=t.split("\t")[1];return""===r?"1":(e.ingroup.push(r),n)});0===i.length&&(i=["''"]),s+=i.join('+"`"+'),s+="];if(!g) {this.groups.push((g=this.xgroups[",s+=i.join('+"`"+'),s+="] = {",s+=n.map(function(e){var t=e.split("\t")[0],r=e.split("\t")[1];return""===t?"":"'"+t+"':"+r+","}).join("");var o=k(a,n);s+=o.map(function(e){return"'"+e.split("\t")[0]+"':null,"}).join("");var u="",c="";void 0!==e.groupStar&&(c+="for(var f in p['"+e.groupStar+"']) {g[f]=p['"+e.groupStar+"'][f];};"),s+=e.selectGroup.map(function(n){var a=n.expression.toJS("p",t,r),s=n.nick;return n instanceof X.AggrValue?(n.distinct&&(u+=",g['$$_VALUES_"+s+"']={},g['$$_VALUES_"+s+"']["+a+"]=true"),"SUM"===n.aggregatorid?"'"+s+"':("+a+")||0,":"MIN"===n.aggregatorid||"MAX"===n.aggregatorid||"FIRST"===n.aggregatorid||"LAST"===n.aggregatorid?"'"+s+"':"+a+",":"ARRAY"===n.aggregatorid?"'"+s+"':["+a+"],":"COUNT"===n.aggregatorid?"*"===n.expression.columnid?"'"+s+"':1,":"'"+s+"':(typeof "+a+' != "undefined")?1:0,':"AVG"===n.aggregatorid?(e.removeKeys.push("_SUM_"+s),e.removeKeys.push("_COUNT_"+s),"'"+s+"':"+a+",'_SUM_"+s+"':("+a+")||0,'_COUNT_"+s+"':(typeof "+a+' != "undefined")?1:0,'):"AGGR"===n.aggregatorid?(u+=",g['"+s+"']="+n.expression.toJS("g",-1),""):"REDUCE"===n.aggregatorid?(e.aggrKeys.push(n),"'"+s+"':alasql.aggr['"+n.funcid+"']("+a+",undefined,1),"):""):""}).join(""),s+="}"+u+",g));"+c+"} else {",s+=e.selectGroup.map(function(e){var n=e.nick,a=e.expression.toJS("p",t,r);if(e instanceof X.AggrValue){var s="",i="";if(e.distinct)var s="if(typeof "+a+'!="undefined" && (!g[\'$$_VALUES_'+n+"']["+a+"])) \t\t\t\t \t\t {",i="g['$$_VALUES_"+n+"']["+a+"]=true;}";return"SUM"===e.aggregatorid?s+"g['"+n+"']+=("+a+"||0);"+i:"COUNT"===e.aggregatorid?"*"===e.expression.columnid?s+"g['"+n+"']++;"+i:s+"if(typeof "+a+'!="undefined") g[\''+n+"']++;"+i:"ARRAY"===e.aggregatorid?s+"g['"+n+"'].push("+a+");"+i:"MIN"===e.aggregatorid?s+"g['"+n+"']=Math.min(g['"+n+"'],"+a+");"+i:"MAX"===e.aggregatorid?s+"g['"+n+"']=Math.max(g['"+n+"'],"+a+");"+i:"FIRST"===e.aggregatorid?"":"LAST"===e.aggregatorid?s+"g['"+n+"']="+a+";"+i:"AVG"===e.aggregatorid?s+"g['_SUM_"+n+"']+=(y="+a+")||0;g['_COUNT_"+n+"']+=(typeof y!=\"undefined\")?1:0;g['"+n+"']=g['_SUM_"+n+"']/g['_COUNT_"+n+"'];"+i:"AGGR"===e.aggregatorid?s+"g['"+n+"']="+e.expression.toJS("g",-1)+";"+i:"REDUCE"===e.aggregatorid?s+"g['"+n+"']=alasql.aggr."+e.funcid+"("+a+",g['"+n+"'],2);"+i:""}return""}).join(""),s+="}"}),new Function("p,params,alasql","var y;"+s)},X.Select.prototype.compileSelect1=function(t,r){var n=this;t.columns=[],t.xcolumns={},t.selectColumns={},t.dirtyColumns=!1;var a="var r={",s="",i=[];return this.columns.forEach(function(a){if(a instanceof X.Column)if("*"===a.columnid)if(a.func)s+="r=params['"+a.param+"'](p['"+t.sources[0].alias+"'],p,params,alasql);";else if(a.tableid){var o=[];o[a.tableid]=a.tableid;var u=f(t,o,!1);u.s&&(i=i.concat(u.s)),s+=u.sp}else{var u=f(t,t.aliases,!0);u.s&&(i=i.concat(u.s)),s+=u.sp}else{var c=a.tableid,l=a.databaseid||t.sources[0].databaseid||t.database.databaseid;if(c||(c=t.defcols[a.columnid]),c||(c=t.defaultTableid),"_"!==a.columnid){var h=r&&r.length>1&&Array.isArray(r[0])&&r[0].length>=1&&r[0][0].hasOwnProperty("sheetid");h?s='var r={};var w=p["'+c+'"];var cols=['+n.columns.map(function(e){return"'"+e.columnid+"'"}).join(",")+"];var colas=["+n.columns.map(function(e){return"'"+(e.as||e.columnid)+"'"}).join(",")+"];for (var i=0;i0){var b=p[a.columnid];if(void 0===b)throw new Error("Column does not exist: "+a.columnid);var E={columnid:a.as||a.columnid,dbtypeid:b.dbtypeid,dbsize:b.dbsize,dbpecision:b.dbprecision,dbenum:b.dbenum};t.columns.push(E),t.xcolumns[E.columnid]=E}else{var E={columnid:a.as||a.columnid};t.columns.push(E),t.xcolumns[E.columnid]=E,t.dirtyColumns=!0}}else{var E={columnid:a.as||a.columnid};t.columns.push(E),t.xcolumns[E.columnid]=E}}else if(a instanceof X.AggrValue){n.group||(n.group=[""]),a.as||(a.as=C(a.toString())),"SUM"===a.aggregatorid||"MAX"===a.aggregatorid||"MIN"===a.aggregatorid||"FIRST"===a.aggregatorid||"LAST"===a.aggregatorid||"AVG"===a.aggregatorid||"ARRAY"===a.aggregatorid||"REDUCE"===a.aggregatorid?i.push("'"+C(a.as)+"':"+e(a.expression.toJS("p",t.defaultTableid,t.defcols))):"COUNT"===a.aggregatorid&&i.push("'"+C(a.as)+"':1");var E={columnid:a.as||a.columnid||a.toString()};t.columns.push(E),t.xcolumns[E.columnid]=E}else{i.push("'"+C(a.as||a.columnid||a.toString())+"':"+e(a.toJS("p",t.defaultTableid,t.defcols))),t.selectColumns[C(a.as||a.columnid||a.toString())]=!0;var E={columnid:a.as||a.columnid||a.toString()};t.columns.push(E),t.xcolumns[E.columnid]=E}}),a+=i.join(",")+"};"+s},X.Select.prototype.compileSelect2=function(e){var t=e.selectfns;return this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(r,n){var a="$$$"+n;r instanceof X.Column&&e.xcolumns[r.columnid]?t+="r['"+a+"']=r['"+r.columnid+"'];":t+="r['"+a+"']="+r.toJS("p",e.defaultTableid,e.defcols)+";",e.removeKeys.push(a)}),new Function("p,params,alasql","var y;"+t+"return r")},X.Select.prototype.compileSelectGroup0=function(e){var t=this;t.columns.forEach(function(r,n){if(r instanceof X.Column&&"*"===r.columnid)e.groupStar=r.tableid||"default";else{var a;a=C(r instanceof X.Column?r.columnid:r.toString(!0));for(var s=0;s-1&&(r+="r['"+(t.as||t.nick)+"']=g['"+t.nick+"'];")}),this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(t,n){var a="$$$"+n;t instanceof X.Column&&e.groupColumns[t.columnid]?r+="r['"+a+"']=r['"+t.columnid+"'];":r+="r['"+a+"']="+t.toJS("g","")+";",e.removeKeys.push(a)}),new Function("g,params,alasql","var y;"+r+"return r")},X.Select.prototype.compileRemoveColumns=function(e){void 0!==this.removecolumns&&(e.removeKeys=e.removeKeys.concat(this.removecolumns.filter(function(e){return void 0===e.like}).map(function(e){return e.columnid})),e.removeLikeKeys=this.removecolumns.filter(function(e){return void 0!==e.like}).map(function(e){return e.like.value}))},X.Select.prototype.compileHaving=function(e){if(this.having){var t=this.having.toJS("g",-1);return e.havingfns=t,new Function("g,params,alasql","var y;return "+t)}return function(){return!0}},X.Select.prototype.compileOrder=function(e){var t=this;if(t.orderColumns=[],this.order){if(this.order&&1==this.order.length&&this.order[0].expression&&"function"==typeof this.order[0].expression){var r=this.order[0].expression;return function(e,t){var n=r(e),a=r(t);return n>a?1:n==a?0:-1}}var n="",a="";return this.order.forEach(function(r,s){if(r.expression instanceof X.NumValue)var i=t.columns[r.expression.value-1];else var i=r.expression;t.orderColumns.push(i);var o="$$$"+s,u="";if(r.expression instanceof X.Column){var c=r.expression.columnid;if(e.xcolumns[c]){var l=e.xcolumns[c].dbtypeid;"DATE"!=l&&"DATETIME"!=l&&"DATETIME2"!=l||(u=".valueOf()")}else T.options.valueof&&(u=".valueOf()")}r.nocase&&(u+=".toUpperCase()"),n+="if((a['"+o+"']||'')"+u+("ASC"==r.direction?">":"<")+"(b['"+o+"']||'')"+u+")return 1;",n+="if((a['"+o+"']||'')"+u+"==(b['"+o+"']||'')"+u+"){",a+="}"}),n+="return 0;",n+=a+"return -1",e.orderfns=n,new Function("a,b","var y;"+n)}},X.Select.prototype.compilePivot=function(e){var t=this,r=t.pivot.columnid,n=t.pivot.expr.expression.columnid,a=t.pivot.expr.aggregatorid,s=t.pivot.inlist;return s&&(s=s.map(function(e){return e.expr.columnid})),function(){var e=this,t=e.columns.filter(function(e){return e.columnid!=r&&e.columnid!=n}).map(function(e){return e.columnid}),i=[],o={},u={},c={},l=[];if(e.data.forEach(function(e){if(!s||s.indexOf(e[r])>-1){var h=t.map(function(t){return e[t]}).join("`"),d=u[h];if(d||(d={},u[h]=d,l.push(d),t.forEach(function(t){d[t]=e[t]})),c[h]||(c[h]={}),c[h][e[r]]?c[h][e[r]]++:c[h][e[r]]=1,o[e[r]]||(o[e[r]]=!0,i.push(e[r])),"SUM"==a||"AVG"==a)void 0===d[e[r]]&&(d[e[r]]=0),d[e[r]]+=e[n];else if("COUNT"==a)void 0===d[e[r]]&&(d[e[r]]=0),d[e[r]]++;else if("MIN"==a)void 0===d[e[r]]&&(d[e[r]]=1/0),e[n]d[e[r]]&&(d[e[r]]=e[n]);else if("FIRST"==a)void 0===d[e[r]]&&(d[e[r]]=e[n]);else if("LAST"==a)d[e[r]]=e[n];else{if(!T.aggr[a])throw new Error("Wrong aggregator in PIVOT clause");T.aggr[a](d[e[r]],e[n])}}}),"AVG"==a)for(var h in u){var d=u[h];for(var f in d)-1==t.indexOf(f)&&f!=n&&(d[f]=d[f]/c[h][f])}e.data=l,s&&(i=s);var p=e.columns.filter(function(e){return e.columnid==n})[0];e.columns=e.columns.filter(function(e){return!(e.columnid==r||e.columnid==n)}),i.forEach(function(t){var r=_(p);r.columnid=t,e.columns.push(r)})}},X.Select.prototype.compileUnpivot=function(e){var t=this,r=t.unpivot.tocolumnid,n=t.unpivot.forcolumnid,a=t.unpivot.inlist.map(function(e){return e.columnid});return function(){var t=[],s=e.columns.map(function(e){return e.columnid}).filter(function(e){return-1==a.indexOf(e)&&e!=n&&e!=r});e.data.forEach(function(e){a.forEach(function(a){var i={};s.forEach(function(t){i[t]=e[t]}),i[n]=a,i[r]=e[a],t.push(i)})}),e.data=t}};var Z=function(e,t){for(var r=[],n=0,a=e.length,s=0;s"===this.op||"!"===this.op){var e=this.left.toString()+this.op;return"string"!=typeof this.right&&"number"!=typeof this.right&&(e+="("),e+=this.right.toString(),"string"!=typeof this.right&&"number"!=typeof this.right&&(e+=")"),e}return this.left.toString()+" "+this.op+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()},X.Op.prototype.findAggregator=function(e){this.left&&this.left.findAggregator&&this.left.findAggregator(e),this.right&&this.right.findAggregator&&!this.allsome&&this.right.findAggregator(e)},X.Op.prototype.toType=function(e){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(["||"].indexOf(this.op)>-1)return"string";if("+"===this.op){if("string"===this.left.toType(e)||"string"===this.right.toType(e))return"string";if("number"===this.left.toType(e)||"number"===this.right.toType(e))return"number"}return["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE","REGEXP","GLOB"].indexOf(this.op)>-1?"boolean":"BETWEEN"===this.op||"NOT BETWEEN"===this.op||"IS NULL"===this.op||"IS NOT NULL"===this.op?"boolean":this.allsome?"boolean":this.op?"unknown":this.left.toType()},X.Op.prototype.toJS=function(e,t,r){var n,a=[],s=this.op,i=this,o=function(n){return n.toJS&&(n=n.toJS(e,t,r)),"y["+(a.push(n)-1)+"]"},u=function(){return o(i.left)},c=function(){return o(i.right)};if("="===this.op?s="===":"<>"===this.op?s="!=":"OR"===this.op&&(s="||"),"->"===this.op){var l="("+u()+"||{})";if("string"==typeof this.right)n=l+'["'+this.right+'"]';else if("number"==typeof this.right)n=l+"["+this.right+"]";else if(this.right instanceof X.FuncValue){var h=[];if(this.right.args&&0!==this.right.args.length)var h=this.right.args.map(o);n=l+"['"+this.right.funcid+"']("+h.join(",")+")"}else n=l+"["+c()+"]"}if("!"===this.op&&"string"==typeof this.right&&(n="alasql.databases[alasql.useid].objects["+u()+']["'+this.right+'"]'),"IS"===this.op&&(n="(("+u()+"==null) === ("+c()+"==null))"),"=="===this.op&&(n="alasql.utils.deepEqual("+u()+","+c()+")"),"==="!==this.op&&"!==="!==this.op||(n="("+("!==="===this.op?"!":"")+"(("+u()+").valueOf()===("+c()+").valueOf()))"),"!=="===this.op&&(n="(!alasql.utils.deepEqual("+u()+","+c()+"))"),"||"===this.op&&(n="(''+("+u()+"||'')+("+c()+'||""))'),"LIKE"===this.op||"NOT LIKE"===this.op){var n="("+("NOT LIKE"===this.op?"!":"")+"alasql.utils.like("+c()+","+u();this.escape&&(n+=","+o(this.escape)),n+="))"}if("REGEXP"===this.op&&(n="alasql.stdfn.REGEXP_LIKE("+u()+","+c()+")"),"GLOB"===this.op&&(n="alasql.utils.glob("+u()+","+c()+")"),"BETWEEN"===this.op||"NOT BETWEEN"===this.op){var d=u();n="("+("NOT BETWEEN"===this.op?"!":"")+"(("+o(this.right1)+"<="+d+") && ("+d+"<="+o(this.right2)+")))"}if("IN"===this.op&&(this.right instanceof X.Select?(n="(",n+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,"+e+"))",n+=".indexOf(",n+=u()+")>-1)"):n=Array.isArray(this.right)?"(["+this.right.map(o).join(",")+"].indexOf("+u()+")>-1)":"("+c()+".indexOf("+u()+")>-1)"),"NOT IN"===this.op&&(this.right instanceof X.Select?(n="(",n+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,p))",n+=".indexOf(",n+=u()+")<0)"):Array.isArray(this.right)?(n="(["+this.right.map(o).join(",")+"].indexOf(",n+=u()+")<0)"):(n="("+c()+".indexOf(",n+=u()+")==-1)")),"ALL"===this.allsome){var n;if(this.right instanceof X.Select)n="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",n+=".every(function(b){return (",n+=u()+")"+s+"b})";else{if(!Array.isArray(this.right))throw new Error("NOT IN operator without SELECT");n=""+(1==this.right.length?o(this.right[0]):"["+this.right.map(o).join(",")+"]"),n+=".every(function(b){return (",n+=u()+")"+s+"b})"}}if("SOME"===this.allsome||"ANY"===this.allsome){var n;if(this.right instanceof X.Select)n="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",n+=".some(function(b){return (",n+=u()+")"+s+"b})";else{if(!Array.isArray(this.right))throw new Error("SOME/ANY operator without SELECT");n=""+(1==this.right.length?o(this.right[0]):"["+this.right.map(o).join(",")+"]"),n+=".some(function(b){return (",n+=u()+")"+s+"b})"}}if("AND"===this.op){if(this.left.reduced){if(this.right.reduced)return"true";n=c()}else this.right.reduced&&(n=u());s="&&"}var f=n||"("+u()+s+c()+")",p="y=[("+a.join("), (")+")]";return"&&"===s||"||"===s||"IS"===s||"IS NULL"===s||"IS NOT NULL"===s?"("+p+", "+f+")":"("+p+", y.some(function(e){return e == null}) ? void 0 : "+f+")"},X.VarValue=function(e){return X.extend(this,e)},X.VarValue.prototype.toString=function(){return"@"+this.variable},X.VarValue.prototype.toType=function(){return"unknown"},X.VarValue.prototype.toJS=function(){return"alasql.vars['"+this.variable+"']"},X.NumValue=function(e){return X.extend(this,e)},X.NumValue.prototype.toString=function(){return this.value.toString()},X.NumValue.prototype.toType=function(){return"number"},X.NumValue.prototype.toJS=function(){return""+this.value},X.StringValue=function(e){return X.extend(this,e)},X.StringValue.prototype.toString=function(){return"'"+this.value.toString()+"'"},X.StringValue.prototype.toType=function(){return"string"},X.StringValue.prototype.toJS=function(){return"'"+C(this.value)+"'"},X.DomainValueValue=function(e){return X.extend(this,e)},X.DomainValueValue.prototype.toString=function(){return"VALUE"},X.DomainValueValue.prototype.toType=function(){return"object"},X.DomainValueValue.prototype.toJS=function(e,t,r){return e},X.ArrayValue=function(e){return X.extend(this,e)},X.ArrayValue.prototype.toString=function(){return"ARRAY[]"},X.ArrayValue.prototype.toType=function(){return"object"},X.ArrayValue.prototype.toJS=function(e,t,r){return"[("+this.value.map(function(n){return n.toJS(e,t,r)}).join("), (")+")]"},X.LogicValue=function(e){return X.extend(this,e)},X.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"},X.LogicValue.prototype.toType=function(){return"boolean"},X.LogicValue.prototype.toJS=function(){return this.value?"true":"false"},X.NullValue=function(e){return X.extend(this,e)},X.NullValue.prototype.toString=function(){return"NULL"},X.NullValue.prototype.toJS=function(){return"undefined"},X.ParamValue=function(e){return X.extend(this,e)},X.ParamValue.prototype.toString=function(){return"$"+this.param},X.ParamValue.prototype.toJS=function(){return"string"==typeof this.param?"params['"+this.param+"']":"params["+this.param+"]"},X.UniOp=function(e){return X.extend(this,e)},X.UniOp.prototype.toString=function(){var e;return e=void 0,"~"===this.op&&(e=this.op+this.right.toString()),"-"===this.op&&(e=this.op+this.right.toString()),"+"===this.op&&(e=this.op+this.right.toString()),"#"===this.op&&(e=this.op+this.right.toString()),"NOT"===this.op&&(e=this.op+"("+this.right.toString()+")"),null===this.op&&(e="("+this.right.toString()+")"),e||(e="("+this.right.toString()+")"),e},X.UniOp.prototype.findAggregator=function(e){this.right.findAggregator&&this.right.findAggregator(e)},X.UniOp.prototype.toType=function(){return"-"===this.op?"number":"+"===this.op?"number":"NOT"===this.op?"boolean":void 0},X.UniOp.prototype.toJS=function(e,t,r){return"~"===this.op?"(~("+this.right.toJS(e,t,r)+"))":"-"===this.op?"(-("+this.right.toJS(e,t,r)+"))":"+"===this.op?"("+this.right.toJS(e,t,r)+")":"NOT"===this.op?"!("+this.right.toJS(e,t,r)+")":"#"===this.op?this.right instanceof X.Column?"(alasql.databases[alasql.useid].objects['"+this.right.columnid+"'])":"(alasql.databases[alasql.useid].objects["+this.right.toJS(e,t,r)+"])":null==this.op?"("+this.right.toJS(e,t,r)+")":void 0},X.Column=function(e){return X.extend(this,e)},X.Column.prototype.toString=function(e){var t;return t=this.columnid==+this.columnid?"["+this.columnid+"]":this.columnid,this.tableid&&(t=+this.columnid===this.columnid?this.tableid+t:this.tableid+"."+t,this.databaseid&&(t=this.databaseid+"."+t)),this.alias&&!e&&(t+=" AS "+this.alias),t},X.Column.prototype.toJS=function(e,t,r){var n="";if(this.tableid||""!==t||r)if("g"===e)n="g['"+this.nick+"']";else if(this.tableid)n="_"!==this.columnid?e+"['"+this.tableid+"']['"+this.columnid+"']":"g"===e?"g['_']":e+"['"+this.tableid+"']";else if(r){var a=r[this.columnid];if("-"===a)throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables');n=a?"_"!==this.columnid?e+"['"+a+"']['"+this.columnid+"']":e+"['"+a+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']"}else n=-1===t?e+"['"+this.columnid+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']";else n="_"!==this.columnid?e+"['"+this.columnid+"']":"g"===e?"g['_']":e;return n},X.AggrValue=function(e){return X.extend(this,e)},X.AggrValue.prototype.toString=function(e){var t="";return"REDUCE"===this.aggregatorid?t+=this.funcid+"(":t+=this.aggregatorid+"(",this.distinct&&(t+="DISTINCT "),this.expression&&(t+=this.expression.toString()),t+=")",this.over&&(t+=" "+this.over.toString()),this.alias&&!e&&(t+=" AS "+this.alias),t},X.AggrValue.prototype.findAggregator=function(e){var t=C(this.toString())+":"+e.selectGroup.length,r=!1;if(!r){if(!this.nick){this.nick=t;for(var r=!1,n=0;n-1?"number":["ARRAY"].indexOf(this.aggregatorid)>-1?"array":["FIRST","LAST"].indexOf(this.aggregatorid)>-1?this.expression.toType():void 0},X.AggrValue.prototype.toJS=function(){var e=this.nick;return void 0===e&&(e=this.toString()),"g['"+e+"']"},X.OrderExpression=function(e){return X.extend(this,e)},X.OrderExpression.prototype.toString=X.Expression.prototype.toString,X.GroupExpression=function(e){return X.extend(this,e)},X.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"},X.FromData=function(e){return X.extend(this,e)},X.FromData.prototype.toString=function(){return this.data?"DATA("+(1e16*Math.random()|0)+")":"?"},X.FromData.prototype.toJS=function(){},X.Select.prototype.exec=function(e,t){this.preparams&&(e=this.preparams.concat(e));var r=T.useid;db=T.databases[r];var n=this.toString(),a=x(n),s=this.compile(r);if(s){s.sql=n,s.dbversion=db.dbversion,db.sqlCacheSize>T.MAXSQLCACHESIZE&&db.resetSqlCache(),db.sqlCacheSize++,db.sqlCache[a]=s;return T.res=s(e,t)}},X.Select.prototype.Select=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return e.columns=[],args.forEach(function(t){if("string"==typeof t)e.columns.push(new X.Column({columnid:t}));else if("function"==typeof t){var r=0;e.preparams?r=e.preparams.length:e.preparams=[],e.preparams.push(t),e.columns.push(new X.Column({columnid:"*",func:t,param:r}))}}),e},X.Select.prototype.From=function(e){var t=this;if(t.from||(t.from=[]),Array.isArray(e)){var r=0;t.preparams?r=t.preparams.length:t.preparams=[],t.preparams.push(e),t.from.push(new X.ParamValue({param:r}))}else{if("string"!=typeof e)throw new Error("Unknown arguments in From() function");t.from.push(new X.Table({tableid:e}))}return t},X.Select.prototype.OrderBy=function(){var e=this;if(e.order=[],0==arguments.length)args=["_"];else if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return args.length>0&&args.forEach(function(t){var r=new X.Column({columnid:t});"function"==typeof t&&(r=t),e.order.push(new X.OrderExpression({expression:r,direction:"ASC"}))}),e},X.Select.prototype.Top=function(e){var t=this;return t.top=new X.NumValue({value:e}),t},X.Select.prototype.GroupBy=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return e.group=[],args.forEach(function(t){var r=new X.Column({columnid:t});e.group.push(r)}),e},X.Select.prototype.Where=function(e){var t=this;return"function"==typeof e&&(t.where=e),t},X.FuncValue=function(e){return X.extend(this,e)},X.FuncValue.prototype.toString=function(e){var t="";return T.fn[this.funcid]?t+=this.funcid:T.aggr[this.funcid]?t+=this.funcid:(T.stdlib[this.funcid.toUpperCase()]||T.stdfn[this.funcid.toUpperCase()])&&(t+=this.funcid.toUpperCase()),t+="(",this.args&&this.args.length>0&&(t+=this.args.map(function(e){return e.toString()}).join(",")),t+=")",this.as&&!e&&(t+=" AS "+this.as.toString()),t},X.FuncValue.prototype.execute=function(e,t,r){var n=1;return T.precompile(this,e,t),new Function("params,alasql","var y;return "+this.toJS("","",null))(t,T),r&&(n=r(n)),n},X.FuncValue.prototype.findAggregator=function(e){this.args&&this.args.length>0&&this.args.forEach(function(t){t.findAggregator&&t.findAggregator(e)})},X.FuncValue.prototype.toJS=function(e,t,r){var n="",a=this.funcid;return!T.fn[a]&&T.stdlib[a.toUpperCase()]?this.args&&this.args.length>0?n+=T.stdlib[a.toUpperCase()].apply(this,this.args.map(function(r){return r.toJS(e,t)})):n+=T.stdlib[a.toUpperCase()]():!T.fn[a]&&T.stdfn[a.toUpperCase()]?(this.newid&&(n+="new "),n+="alasql.stdfn."+this.funcid.toUpperCase()+"(",this.args&&this.args.length>0&&(n+=this.args.map(function(n){return n.toJS(e,t,r)}).join(",")),n+=")"):(this.newid&&(n+="new "),n+="alasql.fn."+this.funcid+"(",this.args&&this.args.length>0&&(n+=this.args.map(function(n){return n.toJS(e,t,r)}).join(",")),n+=")"),n};var ne=T.stdlib={},ae=T.stdfn={};ne.ABS=function(e){return"Math.abs("+e+")"},ne.CLONEDEEP=function(e){return"alasql.utils.cloneDeep("+e+")"},ae.CONCAT=function(){return Array.prototype.slice.call(arguments).join("")},ne.EXP=function(e){return"Math.pow(Math.E,"+e+")"},ne.IIF=function(e,t,r){if(3==arguments.length)return"(("+e+")?("+t+"):("+r+"))";throw new Error("Number of arguments of IFF is not equals to 3")},ne.IFNULL=function(e,t){return"("+e+"||"+t+")"},ne.INSTR=function(e,t){return"(("+e+").indexOf("+t+")+1)"},ne.LEN=ne.LENGTH=function(e){return t(e,"y.length")},ne.LOWER=ne.LCASE=function(e){return t(e,"String(y).toLowerCase()")},ne.LTRIM=function(e){return t(e,'y.replace(/^[ ]+/,"")')},ne.RTRIM=function(e){return t(e,'y.replace(/[ ]+$/,"")')},ne.MAX=ne.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"},ne.MIN=ne.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"},ne.SUBSTRING=ne.SUBSTR=ne.MID=function(e,r,n){return 2==arguments.length?t(e,"y.substr("+r+"-1)"):3==arguments.length?t(e,"y.substr("+r+"-1,"+n+")"):void 0},ae.REGEXP_LIKE=function(e,t,r){return(e||"").search(RegExp(t,r))>-1},ne.ISNULL=ne.NULLIF=function(e,t){return"("+e+"=="+t+"?undefined:"+e+")"},ne.POWER=function(e,t){return"Math.pow("+e+","+t+")"},ne.RANDOM=function(e){return 0==arguments.length?"Math.random()":"(Math.random()*("+e+")|0)"},ne.ROUND=function(e,t){return 2==arguments.length?"Math.round(("+e+")*Math.pow(10,("+t+")))/Math.pow(10,("+t+"))":"Math.round("+e+")"},ne.CEIL=ne.CEILING=function(e){return"Math.ceil("+e+")"},ne.FLOOR=function(e){return"Math.floor("+e+")"},ne.ROWNUM=function(){return"1"},ne.ROW_NUMBER=function(){return"1"},ne.SQRT=function(e){return"Math.sqrt("+e+")"},ne.TRIM=function(e){return t(e,"y.trim()")},ne.UPPER=ne.UCASE=function(e){return t(e,"String(y).toUpperCase()")},ae.CONCAT_WS=function(){var e=Array.prototype.slice.call(arguments);return e.slice(1,e.length).join(e[0])},T.aggr.GROUP_CONCAT=function(e,t,r){return 1===r?""+e:2===r?t+=","+e:t},T.aggr.MEDIAN=function(e,t,r){if(2===r)return null!==e&&t.push(e),t;if(1===r)return null===e?[]:[e];if(!t.length)return t;var n=t.sort(),a=(n.length+1)/2;return Number.isInteger(a)?n[a-1]:(n[Math.floor(a-1)]+n[Math.ceil(a-1)])/2},T.aggr.QUART=function(e,t,r,n){if(2===r)return null!==e&&t.push(e),t;if(1===r)return null===e?[]:[e];if(!t.length)return t;n=n||1;var a=t.sort(),s=n*(a.length+1)/4;return Number.isInteger(s)?a[s-1]:a[Math.floor(s)]},T.aggr.QUART2=function(e,t,r){return T.aggr.QUART(e,t,r,2)},T.aggr.QUART3=function(e,t,r){return T.aggr.QUART(e,t,r,3)},T.aggr.VAR=function(e,t,r){if(1===r)return null===e?{arr:[],sum:0}:{arr:[e],sum:e};if(2===r)return null===e?t:(t.arr.push(e),t.sum+=e,t);for(var n=t.arr.length,a=t.sum/n,s=0,i=0;i>8&255]+se[e>>16&255]+se[e>>24&255]+"-"+se[255&t]+se[t>>8&255]+"-"+se[t>>16&15|64]+se[t>>24&255]+"-"+se[63&r|128]+se[r>>8&255]+"-"+se[r>>16&255]+se[r>>24&255]+se[255&n]+se[n>>8&255]+se[n>>16&255]+se[n>>24&255]},X.CaseValue=function(e){return X.extend(this,e)},X.CaseValue.prototype.toString=function(){var e="CASE ";return this.expression&&(e+=this.expression.toString()),this.whens&&(e+=this.whens.map(function(e){return" WHEN "+e.when.toString()+" THEN "+e.then.toString()}).join()),e+=" END"},X.CaseValue.prototype.findAggregator=function(e){this.expression&&this.expression.findAggregator&&this.expression.findAggregator(e),this.whens&&this.whens.length>0&&this.whens.forEach(function(t){t.when.findAggregator&&t.when.findAggregator(e),t.then.findAggregator&&t.then.findAggregator(e)}),this.elses&&this.elses.findAggregator&&this.elses.findAggregator(e)},X.CaseValue.prototype.toJS=function(e,t,r){var n="((function("+e+",params,alasql){var y,r;";return this.expression?(n+="v="+this.expression.toJS(e,t,r)+";",n+=(this.whens||[]).map(function(n){return" if(v=="+n.when.toJS(e,t,r)+") {r="+n.then.toJS(e,t,r)+"}"}).join(" else "),this.elses&&(n+=" else {r="+this.elses.toJS(e,t,r)+"}")):(n+=(this.whens||[]).map(function(n){return" if("+n.when.toJS(e,t,r)+") {r="+n.then.toJS(e,t,r)+"}"}).join(" else "),this.elses&&(n+=" else {r="+this.elses.toJS(e,t,r)+"}")),n+=";return r;}).bind(this))("+e+",params,alasql)"},X.Json=function(e){return X.extend(this,e)},X.Json.prototype.toString=function(){var e="";return e+=oe(this.value),e+=""};var oe=T.utils.JSONtoString=function(e){var t="";if("string"==typeof e)t='"'+e+'"';else if("number"==typeof e)t=e;else if("boolean"==typeof e)t=e;else{if("object"!=typeof e)throw new Error("2Can not show JSON object "+JSON.stringify(e));if(Array.isArray(e))t+="["+e.map(function(e){return oe(e)}).join(",")+"]";else if(!e.toJS||e instanceof X.Json){t="{";var r=[];for(var n in e){var a="";if("string"==typeof n)a+='"'+n+'"';else if("number"==typeof n)a+=n;else{if("boolean"!=typeof n)throw new Error("THis is not ES6... no expressions on left side yet");a+=n}a+=":"+oe(e[n]),r.push(a)}t+=r.join(",")+"}"}else{if(!e.toString)throw new Error("1Can not show JSON object "+JSON.stringify(e));t=e.toString()}}return t};X.Json.prototype.toJS=function(e,t,r){return b(this.value,e,t,r)},X.Convert=function(e){return X.extend(this,e)},X.Convert.prototype.toString=function(){var e="CONVERT(";return e+=this.dbtypeid,void 0!==this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+this.dbprecision),e+=")"),e+=","+this.expression.toString(),this.style&&(e+=","+this.style),e+=")"},X.Convert.prototype.toJS=function(e,t,r){return"alasql.stdfn.CONVERT("+this.expression.toJS(e,t,r)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",dbprecision:"+this.dbprecision+",style:"+this.style+"})"},T.stdfn.CONVERT=function(e,t){var r=e;if(t.style){var n;switch(n=/\d{8}/.test(r)?new Date(+r.substr(0,4),+r.substr(4,2)-1,+r.substr(6,2)):new Date(r),t.style){case 1:r=("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2)+"/"+("0"+n.getYear()).substr(-2);break;case 2:r=("0"+n.getYear()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getDate()).substr(-2);break;case 3:r=("0"+n.getDate()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getYear()).substr(-2);break;case 4:r=("0"+n.getDate()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getYear()).substr(-2);break;case 5:r=("0"+n.getDate()).substr(-2)+"-"+("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getYear()).substr(-2);break;case 6:r=("0"+n.getDate()).substr(-2)+" "+n.toString().substr(4,3).toLowerCase()+" "+("0"+n.getYear()).substr(-2);break;case 7:r=n.toString().substr(4,3)+" "+("0"+n.getDate()).substr(-2)+","+("0"+n.getYear()).substr(-2);break;case 8:case 108:r=("0"+n.getHours()).substr(-2)+":"+("0"+n.getMinutes()).substr(-2)+":"+("0"+n.getSeconds()).substr(-2);break;case 10:r=("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getDate()).substr(-2)+"-"+("0"+n.getYear()).substr(-2);break;case 11:r=("0"+n.getYear()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2);break;case 12:r=("0"+n.getYear()).substr(-2)+("0"+(n.getMonth()+1)).substr(-2)+("0"+n.getDate()).substr(-2);break;case 101:r=("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2)+"/"+n.getFullYear();break;case 102:r=n.getFullYear()+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getDate()).substr(-2);break;case 103:r=("0"+n.getDate()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+n.getFullYear();break;case 104:r=("0"+n.getDate()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+n.getFullYear();break;case 105:r=("0"+n.getDate()).substr(-2)+"-"+("0"+(n.getMonth()+1)).substr(-2)+"-"+n.getFullYear();break;case 106:r=("0"+n.getDate()).substr(-2)+" "+n.toString().substr(4,3).toLowerCase()+" "+n.getFullYear();break;case 107:r=n.toString().substr(4,3)+" "+("0"+n.getDate()).substr(-2)+","+n.getFullYear();break;case 110:r=("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getDate()).substr(-2)+"-"+n.getFullYear();break;case 111:r=n.getFullYear()+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2);break;case 112:r=n.getFullYear()+("0"+(n.getMonth()+1)).substr(-2)+("0"+n.getDate()).substr(-2);break;default:throw new Error("The CONVERT style "+t.style+" is not realized yet.")}}var a=t.dbtypeid.toUpperCase();if("Date"==t.dbtypeid)return new Date(r);if("DATE"==a){var s=new Date(r),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i}if("DATETIME"==a||"DATETIME2"==a){var s=new Date(r),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i+=" "+("0"+s.getHours()).substr(-2)+":"+("0"+s.getMinutes()).substr(-2)+":"+("0"+s.getSeconds()).substr(-2),i+="."+("00"+s.getMilliseconds()).substr(-3)}if(["MONEY"].indexOf(a)>-1){var o=+r;return(0|o)+100*o%100/100}if(["BOOLEAN"].indexOf(a)>-1)return!!r;if(["INT","INTEGER","SMALLINT","BIGINT","SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(t.dbtypeid.toUpperCase())>-1)return 0|r;if(["STRING","VARCHAR","NVARCHAR","CHARACTER VARIABLE"].indexOf(t.dbtypeid.toUpperCase())>-1)return t.dbsize?(""+r).substr(0,t.dbsize):""+r;if(["CHAR","CHARACTER","NCHAR"].indexOf(a)>-1)return(r+new Array(t.dbsize+1).join(" ")).substr(0,t.dbsize);if(["NUMBER","FLOAT","DECIMAL","NUMERIC"].indexOf(a)>-1){var o=+r;return o=void 0!==t.dbsize?parseFloat(o.toPrecision(t.dbsize)):o,o=void 0!==t.dbprecision?parseFloat(o.toFixed(t.dbprecision)):o}if(["JSON"].indexOf(a)>-1){if("object"==typeof r)return r;try{return JSON.parse(r)}catch(e){throw new Error("Cannot convert string to JSON")}}return r},X.ColumnDef=function(e){return X.extend(this,e)},X.ColumnDef.prototype.toString=function(){var e=this.columnid;return this.dbtypeid&&(e+=" "+this.dbtypeid),this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+this.dbprecision),e+=")"),this.primarykey&&(e+=" PRIMARY KEY"),this.notnull&&(e+=" NOT NULL"),e},X.CreateTable=function(e){return X.extend(this,e)},X.CreateTable.prototype.toString=function(){var e="CREATE";if(this.temporary&&(e+=" TEMPORARY"),this.view?e+=" VIEW":e+=" "+(this.class?"CLASS":"TABLE"),this.ifnotexists&&(e+=" IF NOT EXISTS"),e+=" "+this.table.toString(),this.viewcolumns&&(e+="("+this.viewcolumns.map(function(e){return e.toString()}).join(",")+")"),this.as)e+=" AS "+this.as;else{e+=" ("+this.columns.map(function(e){return e.toString()}).join(",")+")"}return this.view&&this.select&&(e+=" AS "+this.select.toString()),e},X.CreateTable.prototype.execute=function(e,t,r){var n=T.databases[this.table.databaseid||e],a=this.table.tableid;if(!a)throw new Error("Table name is not defined");var s=this.columns,i=this.constraints||[];if(this.ifnotexists&&n.tables[a])return r?r(0):0;if(n.tables[a])throw new Error("Can not create table '"+a+"', because it already exists in the database '"+n.databaseid+"'");var o=n.tables[a]=new T.Table;this.class&&(o.isclass=!0);var u=[],c=[];if(s&&s.forEach(function(t){var r=t.dbtypeid;T.fn[r]||(r=r.toUpperCase()),["SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(r)>-1&&(t.identity={value:1,step:1});var n={columnid:t.columnid,dbtypeid:r,dbsize:t.dbsize,dbprecision:t.dbprecision,notnull:t.notnull,identity:t.identity};if(t.identity&&(o.identities[t.columnid]={value:+t.identity.value,step:+t.identity.step}),t.check&&o.checks.push({id:t.check.constrantid,fn:new Function("r","var y;return "+t.check.expression.toJS("r",""))}),t.default&&u.push("'"+t.columnid+"':"+t.default.toJS("r","")),t.primarykey){var a=o.pk={};a.columns=[t.columnid],a.onrightfns="r['"+t.columnid+"']",a.onrightfn=new Function("r","var y;return "+a.onrightfns),a.hh=x(a.onrightfns),o.uniqs[a.hh]={}}if(t.unique){var s={};o.uk=o.uk||[],o.uk.push(s),s.columns=[t.columnid],s.onrightfns="r['"+t.columnid+"']",s.onrightfn=new Function("r","var y;return "+s.onrightfns),s.hh=x(s.onrightfns),o.uniqs[s.hh]={}}if(t.foreignkey){var i=t.foreignkey.table,l=T.databases[i.databaseid||e].tables[i.tableid];if(void 0===i.columnid){if(!(l.pk.columns&&l.pk.columns.length>0))throw new Error("FOREIGN KEY allowed only to tables with PRIMARY KEYs");i.columnid=l.pk.columns[0]}var h=function(e){var r={};if(void 0===e[t.columnid])return!0;r[i.columnid]=e[t.columnid];var n=l.pk.onrightfn(r);if(!l.uniqs[l.pk.hh][n])throw new Error('Foreign key "'+e[t.columnid]+'" is not found in table '+l.tableid);return!0};o.checks.push({fn:h})}t.onupdate&&c.push("r['"+t.columnid+"']="+t.onupdate.toJS("r","")),o.columns.push(n),o.xcolumns[n.columnid]=n}),o.defaultfns=u.join(","),o.onupdatefns=c.join(";"),i.forEach(function(t){var r;if("PRIMARY KEY"===t.type){if(o.pk)throw new Error("Primary key already exists");var n=o.pk={};n.columns=t.columns,n.onrightfns=n.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),n.onrightfn=new Function("r","var y;return "+n.onrightfns),n.hh=x(n.onrightfns),o.uniqs[n.hh]={}}else if("CHECK"===t.type)r=new Function("r","var y;return "+t.expression.toJS("r",""));else if("UNIQUE"===t.type){var a={};o.uk=o.uk||[],o.uk.push(a),a.columns=t.columns,a.onrightfns=a.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),a.onrightfn=new Function("r","var y;return "+a.onrightfns),a.hh=x(a.onrightfns),o.uniqs[a.hh]={}}else if("FOREIGN KEY"===t.type){var s=o.xcolumns[t.columns[0]],i=t.fktable;t.fkcolumns&&t.fkcolumns.length>0&&(i.columnid=t.fkcolumns[0]);var u=T.databases[i.databaseid||e].tables[i.tableid];void 0===i.columnid&&(i.columnid=u.pk.columns[0]),r=function(e){var t={};if(void 0===e[s.columnid])return!0;t[i.columnid]=e[s.columnid];var r=u.pk.onrightfn(t);if(!u.uniqs[u.pk.hh][r])throw new Error('Foreign key "'+e[s.columnid]+'" is not found in table '+u.tableid);return!0}}r&&o.checks.push({fn:r,id:t.constraintid,fk:"FOREIGN KEY"===t.type})}),this.view&&this.viewcolumns){var l=this;this.viewcolumns.forEach(function(e,t){l.select.columns[t].as=e.columnid})}if(this.view&&this.select&&(o.view=!0,o.select=this.select.compile(this.table.databaseid||e)),n.engineid)return T.engines[n.engineid].createTable(this.table.databaseid||e,a,this.ifnotexists,r);o.insert=function(r,n){var a=T.inserted;T.inserted=[r];var s=this,i=!1,o=!1;for(var u in s.beforeinsert){var c=s.beforeinsert[u];c&&(c.funcid?!1===T.fn[c.funcid](r)&&(o=o||!0):c.statement&&!1===c.statement.execute(e)&&(o=o||!0))}if(!o){var l=!1;for(u in s.insteadofinsert)l=!0,(c=s.insteadofinsert[u])&&(c.funcid?T.fn[c.funcid](r):c.statement&&c.statement.execute(e));if(!l){for(var h in s.identities){var d=s.identities[h];r[h]=d.value}if(s.checks&&s.checks.length>0&&s.checks.forEach(function(e){if(!e.fn(r))throw new Error("Violation of CHECK constraint "+(e.id||""))}),s.columns.forEach(function(e){if(e.notnull&&void 0===r[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),s.pk){
+var f=s.pk,p=f.onrightfn(r);if(void 0!==s.uniqs[f.hh][p]){if(!n)throw new Error("Cannot insert record, because it already exists in primary key index");i=s.uniqs[f.hh][p]}}if(s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(r);if(void 0!==s.uniqs[e.hh][t]){if(!n)throw new Error("Cannot insert record, because it already exists in unique index");i=s.uniqs[e.hh][t]}}),i)s.update(function(e){for(var t in r)e[t]=r[t]},s.data.indexOf(i),t);else{s.data.push(r);for(var h in s.identities){var d=s.identities[h];d.value+=d.step}if(s.pk){var f=s.pk,p=f.onrightfn(r);s.uniqs[f.hh][p]=r}s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(r);s.uniqs[e.hh][t]=r})}for(var u in s.afterinsert){var c=s.afterinsert[u];c&&(c.funcid?T.fn[c.funcid](r):c.statement&&c.statement.execute(e))}T.inserted=a}}},o.delete=function(t){var r=this,n=r.data[t],a=!1;for(var s in r.beforedelete){var i=r.beforedelete[s];i&&(i.funcid?!1===T.fn[i.funcid](n)&&(a=a||!0):i.statement&&!1===i.statement.execute(e)&&(a=a||!0))}if(a)return!1;var o=!1;for(var s in r.insteadofdelete){o=!0;var i=r.insteadofdelete[s];i&&(i.funcid?T.fn[i.funcid](n):i.statement&&i.statement.execute(e))}if(!o){if(this.pk){var u=this.pk,c=u.onrightfn(n);if(void 0===this.uniqs[u.hh][c])throw new Error("Something wrong with primary key index on table");this.uniqs[u.hh][c]=void 0}r.uk&&r.uk.length&&r.uk.forEach(function(e){var t=e.onrightfn(n);if(void 0===r.uniqs[e.hh][t])throw new Error("Something wrong with unique index on table");r.uniqs[e.hh][t]=void 0})}},o.deleteall=function(){this.data.length=0,this.pk&&(this.uniqs[this.pk.hh]={}),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh]={}})},o.update=function(t,r,n){var a,s=_(this.data[r]);if(this.pk&&(a=this.pk,a.pkaddr=a.onrightfn(s,n),void 0===this.uniqs[a.hh][a.pkaddr]))throw new Error("Something wrong with index on table");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.ukaddr=e.onrightfn(s),void 0===o.uniqs[e.hh][e.ukaddr])throw new Error("Something wrong with unique index on table")}),t(s,n,T);var i=!1;for(var u in o.beforeupdate){var c=o.beforeupdate[u];c&&(c.funcid?!1===T.fn[c.funcid](this.data[r],s)&&(i=i||!0):c.statement&&!1===c.statement.execute(e)&&(i=i||!0))}if(i)return!1;var l=!1;for(var u in o.insteadofupdate){l=!0;var c=o.insteadofupdate[u];c&&(c.funcid?T.fn[c.funcid](this.data[r],s):c.statement&&c.statement.execute(e))}if(!l){if(o.checks&&o.checks.length>0&&o.checks.forEach(function(e){if(!e.fn(s))throw new Error("Violation of CHECK constraint "+(e.id||""))}),o.columns.forEach(function(e){if(e.notnull&&void 0===s[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),this.pk&&(a.newpkaddr=a.onrightfn(s),void 0!==this.uniqs[a.hh][a.newpkaddr]&&a.newpkaddr!==a.pkaddr))throw new Error("Record already exists");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.newukaddr=e.onrightfn(s),void 0!==o.uniqs[e.hh][e.newukaddr]&&e.newukaddr!==e.ukaddr)throw new Error("Record already exists")}),this.pk&&(this.uniqs[a.hh][a.pkaddr]=void 0,this.uniqs[a.hh][a.newpkaddr]=s),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh][e.ukaddr]=void 0,o.uniqs[e.hh][e.newukaddr]=s}),this.data[r]=s;for(var u in o.afterupdate){var c=o.afterupdate[u];c&&(c.funcid?T.fn[c.funcid](this.data[r],s):c.statement&&c.statement.execute(e))}}};var h;return T.options.nocount||(h=1),r&&(h=r(h)),h},T.fn.Date=Object,T.fn.Date=Date,T.fn.Number=Number,T.fn.String=String,T.fn.Boolean=Boolean,ae.EXTEND=T.utils.extend,ae.CHAR=String.fromCharCode.bind(String),ae.ASCII=function(e){return e.charCodeAt(0)},ae.COALESCE=function(){for(var e=0;e0)var n=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),s=new Function("x,params,alasql",n);return function(e,n){var i,o,u=T.databases[t];o=void 0!==r?r:u.counter++;var c={$id:o,$node:"VERTEX"};return u.objects[c.$id]=c,i=c,a&&a(c),s&&s(c,e,T),n&&(i=n(i)),i}},X.CreateEdge=function(e){return X.extend(this,e)},X.CreateEdge.prototype.toString=function(){var e="CREATE EDGE ";return this.class&&(e+=this.class+" "),e},X.CreateEdge.prototype.toJS=function(e){return"this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+")"},X.CreateEdge.prototype.compile=function(e){var t=e,r=new Function("params,alasql","var y;return "+this.from.toJS()),n=new Function("params,alasql","var y;return "+this.to.toJS());if(void 0!==this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);return function(e,a){var o=0,u=T.databases[t],c={$id:u.counter++,$node:"EDGE"},l=r(e,T),h=n(e,T);return c.$in=[l.$id],c.$out=[h.$id],void 0===l.$out&&(l.$out=[]),l.$out.push(c.$id),void 0===typeof h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,T),a&&(o=a(o)),o}},X.CreateGraph=function(e){return X.extend(this,e)},X.CreateGraph.prototype.toString=function(){var e="CREATE GRAPH ";return this.class&&(e+=this.class+" "),e},X.CreateGraph.prototype.execute=function(e,t,r){function n(e){var t=T.databases[T.useid].objects;for(var r in t)if(t[r].name===e)return t[r]}function a(r){var n={};void 0!==r.as&&(T.vars[r.as]=n),void 0!==r.prop&&(n.$id=r.prop,n.name=r.prop),void 0!==r.sharp&&(n.$id=r.sharp),void 0!==r.name&&(n.name=r.name),void 0!==r.class&&(n.$class=r.class);var a=T.databases[e];if(void 0===n.$id&&(n.$id=a.counter++),n.$node="VERTEX",void 0!==r.json&&q(n,new Function("params,alasql","var y;return "+r.json.toJS())(t,T)),a.objects[n.$id]=n,void 0!==n.$class){if(void 0===T.databases[e].tables[n.$class])throw new Error("No such class. Pleace use CREATE CLASS");T.databases[e].tables[n.$class].data.push(n)}return s.push(n.$id),n}var s=[];return this.from&&T.from[this.from.funcid]&&(this.graph=T.from[this.from.funcid.toUpperCase()]),this.graph.forEach(function(r){if(r.source){var i={};void 0!==r.as&&(T.vars[r.as]=i),void 0!==r.prop&&(i.name=r.prop),void 0!==r.sharp&&(i.$id=r.sharp),void 0!==r.name&&(i.name=r.name),void 0!==r.class&&(i.$class=r.class);var o=T.databases[e];void 0===i.$id&&(i.$id=o.counter++),i.$node="EDGE",void 0!==r.json&&q(i,new Function("params,alasql","var y;return "+r.json.toJS())(t,T));var u;if(r.source.vars){var c=T.vars[r.source.vars];u="object"==typeof c?c:o.objects[c]}else{var l=r.source.sharp;void 0===l&&(l=r.source.prop),u=T.databases[e].objects[l],void 0!==u||!T.options.autovertex||void 0===r.source.prop&&void 0===r.source.name||void 0===(u=n(r.source.prop||r.source.name))&&(u=a(r.source))}var h;if(r.source.vars){var c=T.vars[r.target.vars];h="object"==typeof c?c:o.objects[c]}else{var d=r.target.sharp;void 0===d&&(d=r.target.prop),h=T.databases[e].objects[d],void 0!==h||!T.options.autovertex||void 0===r.target.prop&&void 0===r.target.name||void 0===(h=n(r.target.prop||r.target.name))&&(h=a(r.target))}if(i.$in=[u.$id],i.$out=[h.$id],void 0===u.$out&&(u.$out=[]),u.$out.push(i.$id),void 0===h.$in&&(h.$in=[]),h.$in.push(i.$id),o.objects[i.$id]=i,void 0!==i.$class){if(void 0===T.databases[e].tables[i.$class])throw new Error("No such class. Pleace use CREATE CLASS");T.databases[e].tables[i.$class].data.push(i)}s.push(i.$id)}else a(r)}),r&&(s=r(s)),s},X.CreateGraph.prototype.compile1=function(e){var t=e,r=new Function("params,alasql","var y;return "+this.from.toJS()),n=new Function("params,alasql","var y;return "+this.to.toJS());if(void 0!==this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);return function(e,a){var o=0,u=T.databases[t],c={$id:u.counter++,$node:"EDGE"},l=r(e,T),h=n(e,T);return c.$in=[l.$id],c.$out=[h.$id],void 0===l.$out&&(l.$out=[]),l.$out.push(c.$id),void 0===h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,T),a&&(o=a(o)),o}},X.AlterTable=function(e){return X.extend(this,e)},X.AlterTable.prototype.toString=function(){var e="ALTER TABLE "+this.table.toString();return this.renameto&&(e+=" RENAME TO "+this.renameto),e},X.AlterTable.prototype.execute=function(e,t,r){var n=T.databases[e];if(n.dbversion=Date.now(),this.renameto){var a=this.table.tableid,s=this.renameto,i=1;if(n.tables[s])throw new Error("Can not rename a table '"+a+"' to '"+s+"', because the table with this name already exists");if(s===a)throw new Error("Can not rename a table '"+a+"' to itself");return n.tables[s]=n.tables[a],delete n.tables[a],i=1,r&&r(i),i}if(this.addcolumn){n=T.databases[this.table.databaseid||e],n.dbversion++;var o=this.table.tableid,u=n.tables[o],c=this.addcolumn.columnid;if(u.xcolumns[c])throw new Error('Cannot add column "'+c+'", because it already exists in the table "'+o+'"');var l={columnid:c,dbtypeid:this.dbtypeid,dbsize:this.dbsize,dbprecision:this.dbprecision,dbenum:this.dbenum,defaultfns:null};u.columns.push(l),u.xcolumns[c]=l;for(var h=0,d=u.data.length;h0)for(var l=0,h=s.data.length;l0)for(var l=0,h=s.data.length;l=0?r+="(x="+s[t].toJS()+",x==undefined?undefined:+x)":T.fn[a.xcolumns[e.columnid].dbtypeid]?(r+="(new "+a.xcolumns[e.columnid].dbtypeid+"(",r+=s[t].toJS(),r+="))"):r+=s[t].toJS():r+=s[t].toJS(),u.push(r)}):Array.isArray(s)&&a.columns&&a.columns.length>0?a.columns.forEach(function(e,t){var r="'"+e.columnid+"':";["INT","FLOAT","NUMBER","MONEY"].indexOf(e.dbtypeid)>=0?r+="+"+s[t].toJS():T.fn[e.dbtypeid]?(r+="(new "+e.dbtypeid+"(",r+=s[t].toJS(),r+="))"):r+=s[t].toJS(),u.push(r)}):o=b(s),r.tables[n].defaultfns&&u.unshift(r.tables[n].defaultfns),i+=o?"a="+o+";":"a={"+u.join(",")+"};",r.tables[n].isclass&&(i+="var db=alasql.databases['"+e+"'];",i+='a.$class="'+n+'";',i+="a.$id=db.counter++;",i+="db.objects[a.$id]=a;"),r.tables[n].insert?(i+="var db=alasql.databases['"+e+"'];",i+="db.tables['"+n+"'].insert(a,"+(t.orreplace?"true":"false")+");"):i+="aa.push(a);"}),s=u+i,r.tables[n].insert||(i+="alasql.databases['"+e+"'].tables['"+n+"'].data=alasql.databases['"+e+"'].tables['"+n+"'].data.concat(aa);"),r.tables[n].insert&&r.tables[n].isclass?i+="return a.$id;":i+="return "+t.values.length;var c=new Function("db, params, alasql","var y;"+u+i).bind(this)}else if(this.select){this.select.modifier="RECORDSET";var l=this.select.compile(e);if(r.engineid&&T.engines[r.engineid].intoTable){var h=function(e,t){var a=l(e);return T.engines[r.engineid].intoTable(r.databaseid,n,a.data,null,t)};return h}var d="return alasql.utils.extend(r,{"+a.defaultfns+"})",f=new Function("r,db,params,alasql",d),c=function(e,r,a){var s=l(r).data;if(e.tables[n].insert)for(var i=0,o=s.length;i0&&(e+="("+this.args.map(function(e){return e.toString()}).join(", ")+")"),this.as&&(e+=" AS "+this.as),e},X.CreateDatabase.prototype.execute=function(e,t,r){if(this.args&&this.args.length>0&&this.args.map(function(e){return new Function("params,alasql","var y;return "+e.toJS())(t,T)}),this.engineid){var n=T.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,r);return n}var a=this.databaseid;if(T.databases[a])throw new Error("Database '"+a+"' already exists");var n=(new T.Database(a),1);return r?r(n):n},X.AttachDatabase=function(e){return X.extend(this,e)},X.AttachDatabase.prototype.toString=function(e){var t="ATTACH";return this.engineid&&(t+=" "+this.engineid),t+=" DATABASE "+this.databaseid,e&&(t+="(",e.length>0&&(t+=e.map(function(e){return e.toString()}).join(", ")),t+=")"),this.as&&(t+=" AS "+this.as),t},X.AttachDatabase.prototype.execute=function(e,t,r){if(!T.engines[this.engineid])throw new Error('Engine "'+this.engineid+'" is not defined.');return T.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,t,r)},X.DetachDatabase=function(e){return X.extend(this,e)},X.DetachDatabase.prototype.toString=function(){var e="DETACH";return e+=" DATABASE "+this.databaseid},X.DetachDatabase.prototype.execute=function(e,t,r){if(!T.databases[this.databaseid].engineid)throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.');var n,a=this.databaseid;if(a===T.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(T.databases[a])delete T.databases[a],a===T.useid&&T.use(),n=1;else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");n=0}return r&&r(n),n},X.UseDatabase=function(e){return X.extend(this,e)},X.UseDatabase.prototype.toString=function(){return"USE DATABASE "+this.databaseid},X.UseDatabase.prototype.execute=function(e,t,r){var n=this.databaseid;if(!T.databases[n])throw new Error("Database '"+n+"' does not exist");T.use(n);return r&&r(1),1},X.DropDatabase=function(e){return X.extend(this,e)},X.DropDatabase.prototype.toString=function(){var e="DROP";return this.ifexists&&(e+=" IF EXISTS"),e+=" DATABASE "+this.databaseid},X.DropDatabase.prototype.execute=function(e,t,r){if(this.engineid)return T.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,r);var n,a=this.databaseid;if(a===T.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(T.databases[a]){if(T.databases[a].engineid)throw new Error("Cannot drop database '"+a+"', because it is attached. Detach it.");delete T.databases[a],a===T.useid&&T.use(),n=1}else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");n=0}return r&&r(n),n},X.Declare=function(e){return X.extend(this,e)},X.Declare.prototype.toString=function(){var e="DECLARE ";return this.declares&&this.declares.length>0&&(e=this.declares.map(function(e){var t="";return t+="@"+e.variable+" ",t+=e.dbtypeid,this.dbsize&&(t+="("+this.dbsize,this.dbprecision&&(t+=","+this.dbprecision),t+=")"),e.expression&&(t+=" = "+e.expression.toString()),t}).join(",")),e},X.Declare.prototype.execute=function(e,t,r){var n=1;return this.declares&&this.declares.length>0&&this.declares.map(function(e){var r=e.dbtypeid;T.fn[r]||(r=r.toUpperCase()),T.declares[e.variable]={dbtypeid:r,dbsize:e.dbsize,dbprecision:e.dbprecision},e.expression&&(T.vars[e.variable]=new Function("params,alasql","return "+e.expression.toJS("({})","",null))(t,T),T.declares[e.variable]&&(T.vars[e.variable]=T.stdfn.CONVERT(T.vars[e.variable],T.declares[e.variable])))}),r&&(n=r(n)),n},X.ShowDatabases=function(e){return X.extend(this,e)},X.ShowDatabases.prototype.toString=function(){var e="SHOW DATABASES";return this.like&&(e+="LIKE "+this.like.toString()),e},X.ShowDatabases.prototype.execute=function(e,t,r){if(this.engineid)return T.engines[this.engineid].showDatabases(this.like,r);var n=this,a=[];for(var s in T.databases)a.push({databaseid:s});return n.like&&a&&a.length>0&&(a=a.filter(function(e){return T.utils.like(n.like.value,e.databaseid)})),r&&r(a),a},X.ShowTables=function(e){return X.extend(this,e)},X.ShowTables.prototype.toString=function(){var e="SHOW TABLES";return this.databaseid&&(e+=" FROM "+this.databaseid),this.like&&(e+=" LIKE "+this.like.toString()),e},
+X.ShowTables.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=this,s=[];for(var i in n.tables)s.push({tableid:i});return a.like&&s&&s.length>0&&(s=s.filter(function(e){return T.utils.like(a.like.value,e.tableid)})),r&&r(s),s},X.ShowColumns=function(e){return X.extend(this,e)},X.ShowColumns.prototype.toString=function(){var e="SHOW COLUMNS";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowColumns.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=n.tables[this.table.tableid];if(a&&a.columns){var s=a.columns.map(function(e){return{columnid:e.columnid,dbtypeid:e.dbtypeid,dbsize:e.dbsize}});return r&&r(s),s}return r&&r([]),[]},X.ShowIndex=function(e){return X.extend(this,e)},X.ShowIndex.prototype.toString=function(){var e="SHOW INDEX";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowIndex.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=n.tables[this.table.tableid],s=[];if(a&&a.indices)for(var i in a.indices)s.push({hh:i,len:Object.keys(a.indices[i]).length});return r&&r(s),s},X.ShowCreateTable=function(e){return X.extend(this,e)},X.ShowCreateTable.prototype.toString=function(){var e="SHOW CREATE TABLE "+this.table.tableid;return this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowCreateTable.prototype.execute=function(e){var t=T.databases[this.databaseid||e],r=t.tables[this.table.tableid];if(r){var n="CREATE TABLE "+this.table.tableid+" (",a=[];return r.columns&&(r.columns.forEach(function(e){var t=e.columnid+" "+e.dbtypeid;e.dbsize&&(t+="("+e.dbsize+")"),e.primarykey&&(t+=" PRIMARY KEY"),a.push(t)}),n+=a.join(", ")),n+=")"}throw new Error('There is no such table "'+this.table.tableid+'"')},X.SetVariable=function(e){return X.extend(this,e)},X.SetVariable.prototype.toString=function(){var e="SET ";return void 0!==this.value&&(e+=this.variable.toUpperCase()+" "+(this.value?"ON":"OFF")),this.expression&&(e+=this.method+this.variable+" = "+this.expression.toString()),e},X.SetVariable.prototype.execute=function(e,t,r){if(void 0!==this.value){var n=this.value;"ON"==n?n=!0:"OFF"==n&&(n=!1),T.options[this.variable]=n}else if(this.expression){this.exists&&(this.existsfn=this.exists.map(function(t){var r=t.compile(e);return r.query&&!r.query.modifier&&(r.query.modifier="RECORDSET"),r})),this.queries&&(this.queriesfn=this.queries.map(function(t){var r=t.compile(e);return r.query&&!r.query.modifier&&(r.query.modifier="RECORDSET"),r}));var a=new Function("params,alasql","return "+this.expression.toJS("({})","",null)).bind(this)(t,T);if(T.declares[this.variable]&&(a=T.stdfn.CONVERT(a,T.declares[this.variable])),this.props&&this.props.length>0){if("@"==this.method)var s="alasql.vars['"+this.variable+"']";else var s="params['"+this.variable+"']";s+=this.props.map(function(e){return"string"==typeof e?"['"+e+"']":"number"==typeof e?"["+e+"]":"["+e.toJS()+"]"}).join(),new Function("value,params,alasql","var y;"+s+"=value")(a,t,T)}else"@"==this.method?T.vars[this.variable]=a:t[this.variable]=a}var a=1;return r&&(a=r(a)),a},T.test=function(e,t,r){if(0===arguments.length)return void T.log(T.con.results);var n=Date.now();if(1===arguments.length)return r(),void T.con.log(Date.now()-n);2===arguments.length&&(r=t,t=1);for(var a=0;a",e),Array.isArray(a)&&console.table?console.table(a):console.log(oe(a));else{var s;s="output"===n?document.getElementsByTagName("output")[0]:"string"==typeof n?document.getElementById(n):n;var i="";if("string"==typeof e&&T.options.logprompt&&(i+=""+T.pretty(e)+" "),Array.isArray(a))if(0===a.length)i+="[ ]
";else if("object"!=typeof a[0]||Array.isArray(a[0]))for(var o=0,u=a.length;o"+E(a[o])+"
";else i+=E(a);else i+=E(a);s.innerHTML+=i}},T.clear=function(){var e=T.options.logtarget;if(N.isNode||N.isMeteorServer)console.clear&&console.clear();else{var t;t="output"===e?document.getElementsByTagName("output")[0]:"string"==typeof e?document.getElementById(e):e,t.innerHTML=""}},T.write=function(e){var t=T.options.logtarget;if(N.isNode||N.isMeteorServer)console.log&&console.log(e);else{var r;r="output"===t?document.getElementsByTagName("output")[0]:"string"==typeof t?document.getElementById(t):t,r.innerHTML+=e}},T.prompt=function(e,t,r){if(N.isNode)throw new Error("The prompt not realized for Node.js");var n=0;if("string"==typeof e&&(e=document.getElementById(e)),"string"==typeof t&&(t=document.getElementById(t)),t.textContent=T.useid,r){T.prompthistory.push(r),n=T.prompthistory.length;try{var a=Date.now();T.log(r),T.write(''+(Date.now()-a)+" ms
")}catch(e){T.write(""+olduseid+"> "+sql+"
"),T.write(''+e+"
")}}var s=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;g(document.getElementsByTagName("body")[0],s,500),e.onkeydown=function(r){if(13===r.which){var a=e.value,s=T.useid;e.value="",T.prompthistory.push(a),n=T.prompthistory.length;try{var i=Date.now();T.log(a),T.write('
'+(Date.now()-i)+" ms
")}catch(e){T.write(""+s+"> "+T.pretty(a,!1)+"
"),T.write(''+e+"
")}e.focus(),t.textContent=T.useid;var o=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;g(document.getElementsByTagName("body")[0],o,500)}else 38===r.which?(n--,n<0&&(n=0),T.prompthistory[n]&&(e.value=T.prompthistory[n],r.preventDefault())):40===r.which&&(n++,n>=T.prompthistory.length?(n=T.prompthistory.length,e.value=""):T.prompthistory[n]&&(e.value=T.prompthistory[n],r.preventDefault()))}},X.BeginTransaction=function(e){return X.extend(this,e)},X.BeginTransaction.prototype.toString=function(){return"BEGIN TRANSACTION"},X.BeginTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[T.useid].engineid].begin(e,r):(r&&r(1),1)},X.CommitTransaction=function(e){return X.extend(this,e)},X.CommitTransaction.prototype.toString=function(){return"COMMIT TRANSACTION"},X.CommitTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[T.useid].engineid].commit(e,r):(r&&r(1),1)},X.RollbackTransaction=function(e){return X.extend(this,e)},X.RollbackTransaction.prototype.toString=function(){return"ROLLBACK TRANSACTION"},X.RollbackTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[e].engineid].rollback(e,r):(r&&r(1),1)},T.options.tsql&&(T.stdfn.OBJECT_ID=function(e,t){void 0===t&&(t="T"),t=t.toUpperCase();var r=e.split("."),n=T.useid,a=r[0];2==r.length&&(n=r[0],a=r[1]);var s=T.databases[n].tables;n=T.databases[n].databaseid;for(var i in s)if(i==a){if(s[i].view&&"V"==t)return n+"."+i;if(!s[i].view&&"T"==t)return n+"."+i;return}}),T.options.mysql,(T.options.mysql||T.options.sqlite)&&(T.from.INFORMATION_SCHEMA=function(e,t,r,n,a){if("VIEWS"==e||"TABLES"==e){var s=[];for(var i in T.databases){var o=T.databases[i].tables;for(var u in o)(o[u].view&&"VIEWS"==e||!o[u].view&&"TABLES"==e)&&s.push({TABLE_CATALOG:i,TABLE_NAME:u})}return r&&(s=r(s,n,a)),s}throw new Error("Unknown INFORMATION_SCHEMA table")}),T.options.postgres,T.options.oracle,T.options.sqlite,T.into.SQL=function(e,t,r,n,a){var s;"object"==typeof e&&(t=e,e=void 0);var i={};if(T.utils.extend(i,t),void 0===i.tableid)throw new Error("Table for INSERT TO is not defined.");var o="";0===n.length&&"object"==typeof r[0]&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}}));for(var u=0,c=r.length;u0&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s=r.length,i="";if(r.length>0){var o=n[0].columnid;i+=r.map(function(e){return e[o]}).join("\n")}return e=T.utils.autoExtFilename(e,"txt",t),s=T.utils.saveFile(e,i),a&&(s=a(s)),s},T.into.TAB=T.into.TSV=function(e,t,r,n,a){var s={};return T.utils.extend(s,t),s.separator="\t",e=T.utils.autoExtFilename(e,"tab",t),s.autoExt=!1,T.into.CSV(e,s,r,n,a)},T.into.CSV=function(e,t,r,n,a){0===n.length&&r.length>0&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s={headers:!0};s.separator=";",s.quote='"',s.utf8Bom=!0,t&&!t.headers&&void 0!==t.headers&&(s.utf8Bom=!1),T.utils.extend(s,t);var i=r.length,o=s.utf8Bom?"\ufeff":"";return s.headers&&(o+=s.quote+n.map(function(e){return e.columnid.trim()}).join(s.quote+s.separator+s.quote)+s.quote+"\r\n"),r.forEach(function(e){o+=n.map(function(t){var r=e[t.columnid];return""!==s.quote&&(r=(r+"").replace(new RegExp("\\"+s.quote,"g"),s.quote+s.quote)),+r!=r&&(r=s.quote+r+s.quote),r}).join(s.separator)+"\r\n"}),e=T.utils.autoExtFilename(e,"csv",t),i=T.utils.saveFile(e,o,null,{disableAutoBom:!0}),a&&(i=a(i)),i},T.into.XLS=function(e,t,r,n,a){"object"==typeof e&&(t=e,e=void 0);var s={};t&&t.sheets&&(s=t.sheets);var i={headers:!0};void 0!==s.Sheet1?i=s[0]:void 0!==t&&(i=t),void 0===i.sheetid&&(i.sheetid="Sheet1");var o=function(){var e=' \t\t \t\t\x3c!--[if gte mso 9]> ';if(e+=" "+i.sheetid+" \t\t ",e+=" ",e+="",e+="",void 0!==i.caption){var a=i.caption;"string"==typeof a&&(a={title:a}),e+="",e+=a.title,e+=" "}return void 0!==i.columns?n=i.columns:0==n.length&&r.length>0&&"object"==typeof r[0]&&(n=Array.isArray(r[0])?r[0].map(function(e,t){return{columnid:t}}):Object.keys(r[0]).map(function(e){return{columnid:e}})),n.forEach(function(e,t){void 0!==i.column&&q(e,i.column),void 0===e.width&&(i.column&&"undefined"!=i.column.width?e.width=i.column.width:e.width="120px"),"number"==typeof e.width&&(e.width=e.width+"px"),void 0===e.columnid&&(e.columnid=t),void 0===e.title&&(e.title=""+e.columnid.trim()),i.headers&&Array.isArray(i.headers)&&(e.title=i.headers[t])}),e+="",n.forEach(function(t){e+=' '}),e+=" ",i.headers&&(e+="",e+="",n.forEach(function(t,r){e+="",void 0!==t.title&&("function"==typeof t.title?e+=t.title(i,t,r):e+=t.title),e+=" "}),e+=" ",e+=" "),e+="",r&&r.length>0&&r.forEach(function(r,a){if(!(a>i.limit)){e+="",n.forEach(function(n,o){var u={};q(u,i.cell),q(u,s.cell),void 0!==i.column&&q(u,i.column.cell),q(u,n.cell),i.cells&&i.cells[a]&&i.cells[a][o]&&q(u,i.cells[a][o]);var c=r[n.columnid];"function"==typeof u.value&&(c=u.value(c,i,r,n,u,a,o));var l=u.typeid;"function"==typeof l&&(l=l(c,i,r,n,u,a,o)),void 0===l&&("number"==typeof c?l="number":"string"==typeof c?l="string":"boolean"==typeof c?l="boolean":"object"==typeof c&&c instanceof Date&&(l="date"));var h="";"money"==l?h='mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;':"number"==l?h=" ":"date"==l?h='mso-number-format:"Short Date";':t.types&&t.types[l]&&t.types[l].typestyle&&(h=t.types[l].typestyle),h=h||'mso-number-format:"\\@";',e+="";var d=u.format;if(void 0===c)e+="";else if(void 0!==d)if("function"==typeof d)e+=d(c);else{if("string"!=typeof d)throw new Error("Unknown format type. Should be function or string");e+=c}else e+="number"==l||"date"==l?c.toString():"money"==l?(+c).toFixed(2):c;e+=" "}),e+=" "}}),e+=" ",e+="
",e+="",e+=""}();e=T.utils.autoExtFilename(e,"xls",t);var u=T.utils.saveFile(e,o);return a&&(u=a(u)),u},T.into.XLSXML=function(e,t,r,n,a){t=t||{},"object"==typeof e&&(t=e,e=void 0);var s,i,o={};t&&t.sheets?(o=t.sheets,s=r,i=n):(o.Sheet1=t,s=[r],i=[n]),e=T.utils.autoExtFilename(e,"xls",t);var u=T.utils.saveFile(e,function(){function e(e){var t="";for(var n in e){t+="<"+n;for(var s in e[n])t+=" ","x:"==s.substr(0,2)?t+=s:t+="ss:",t+=s+'="'+e[n][s]+'"';t+="/>"}var i=x(t);return a[i]||(a[i]={styleid:u},r+='",u++),"s"+a[i].styleid}var r="",n=" ",a={},u=62,c=0;for(var l in o){var h=o[l],d=void 0!==h.dataidx?h.dataidx:c++,f=function(e){try{return Object.values(e)}catch(t){return Object.keys(e).map(function(t){return e[t]})}}(s[d]),p=void 0;void 0!==h.columns?p=h.columns:(void 0===(p=i[d])||0==p.length&&f.length>0)&&"object"==typeof f[0]&&(p=Array.isArray(f[0])?f[0].map(function(e,t){return{columnid:t}}):Object.keys(f[0]).map(function(e){return{columnid:e}})),p.forEach(function(e,t){void 0!==h.column&&q(e,h.column),void 0===e.width&&(h.column&&void 0!==h.column.width?e.width=h.column.width:e.width=120),"number"==typeof e.width&&(e.width=e.width),void 0===e.columnid&&(e.columnid=t),void 0===e.title&&(e.title=""+e.columnid.trim()),h.headers&&Array.isArray(h.headers)&&(e.title=h.headers[t])}),n+=' \t \t\t\t',p.forEach(function(e,t){n+=' '}),h.headers&&(n+='',p.forEach(function(t,r){if(n+="',void 0!==t.title&&("function"==typeof t.title?n+=t.title(h,t,r):n+=t.title),n+=" | "}),n+="
"),f&&f.length>0&&f.forEach(function(r,a){if(!(a>h.limit)){var s={};if(q(s,h.row),h.rows&&h.rows[a]&&q(s,h.rows[a]),n+="",p.forEach(function(i,o){var u={};q(u,h.cell),q(u,s.cell),void 0!==h.column&&q(u,h.column.cell),q(u,i.cell),h.cells&&h.cells[a]&&h.cells[a][o]&&q(u,h.cells[a][o]);var c=r[i.columnid];"function"==typeof u.value&&(c=u.value(c,h,r,i,u,a,o));var l=u.typeid;"function"==typeof l&&(l=l(c,h,r,i,u,a,o)),void 0===l&&("number"==typeof c?l="number":"string"==typeof c?l="string":"boolean"==typeof c?l="boolean":"object"==typeof c&&c instanceof Date&&(l="date"));var d="String";"number"==l?d="Number":"date"==l&&(d="Date");var f="";"money"==l?f='mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;':"number"==l?f=" ":"date"==l?f='mso-number-format:"Short Date";':t.types&&t.types[l]&&t.types[l].typestyle&&(f=t.types[l].typestyle),f=f||'mso-number-format:"\\@";',n+="",n+='';var b=u.format;if(void 0===c)n+="";else if(void 0!==b)if("function"==typeof b)n+=b(c);else{if("string"!=typeof b)throw new Error("Unknown format type. Should be function or string");n+=c}else n+="number"==l||"date"==l?c.toString():"money"==l?(+c).toFixed(2):c;n+=" | "}),n+="
"}}),n+="
"}return n+="",' \t\t \t\t \t\t \t\t \t\t \t\t \t\t \t\t 0 \t\t \t\t \t\t '+r+n}());return a&&(u=a(u)),u},T.into.XLSX=function(e,t,r,n,s){function i(){"object"==typeof t&&Array.isArray(t)?r&&r.length>0&&r.forEach(function(e,r){o(t[r],e,void 0,r+1)}):o(t,r,n,1),u(s)}function o(e,t,r,n){var a={sheetid:"Sheet "+n,headers:!0};T.utils.extend(a,e);var s=Object.keys(t).length;(!r||0==r.length)&&s>0&&(r=Object.keys(t[0]).map(function(e){return{columnid:e}}));var i={};h.SheetNames.indexOf(a.sheetid)>-1?i=h.Sheets[a.sheetid]:(h.SheetNames.push(a.sheetid),h.Sheets[a.sheetid]={},i=h.Sheets[a.sheetid]);var o="A1";a.range&&(o=a.range);var u=T.utils.xlscn(o.match(/[A-Z]+/)[0]),c=+o.match(/[0-9]+/)[0]-1;if(h.Sheets[a.sheetid]["!ref"])var l=h.Sheets[a.sheetid]["!ref"],d=T.utils.xlscn(l.match(/[A-Z]+/)[0]),f=+l.match(/[0-9]+/)[0]-1;else var d=1,f=1;var p=Math.max(u+r.length,d),b=Math.max(c+s+2,f),E=c+1;h.Sheets[a.sheetid]["!ref"]="A1:"+T.utils.xlsnc(p)+b,a.headers&&(r.forEach(function(e,t){i[T.utils.xlsnc(u+t)+""+E]={v:e.columnid.trim()}}),E++);for(var g=0;g=b)return f;if(c)return c=!1,d;var t=E;if(e.charCodeAt(t)===h){for(var r=t;r++0){var s=this.exprs.map(function(e){var r=new Function("params,alasql,p","var y;return "+e.toJS("({})","",null)).bind(n),a=r(t,T);return oe(a)});console.log.apply(console,s)}else if(this.select){var i=this.select.execute(e,t);console.log(oe(i))}else console.log();return r&&(a=r(a)),a},X.Source=function(e){return X.extend(this,e)},X.Source.prototype.toString=function(){var e="SOURCE";return this.url&&(e+=" '"+this.url+" '"),e},X.Source.prototype.execute=function(e,t,r){var n;return I(this.url,!!r,function(e){return n=T(e),r&&(n=r(n)),n},function(e){throw e}),n},X.Require=function(e){return X.extend(this,e)},X.Require.prototype.toString=function(){var e="REQUIRE";return this.paths&&this.paths.length>0&&(e+=this.paths.map(function(e){return e.toString()}).join(",")),this.plugins&&this.plugins.length>0&&(e+=this.plugins.map(function(e){return e.toUpperCase()}).join(",")),e},X.Require.prototype.execute=function(e,t,r){var n=this,a=0,s="";return this.paths&&this.paths.length>0?this.paths.forEach(function(e){I(e.value,!!r,function(e){a++,s+=e,a0?this.plugins.forEach(function(e){T.plugins[e]||I(T.path+"/alasql-"+e.toLowerCase()+".js",!!r,function(i){a++,s+=i,a0&&(r=r.filter(function(e){return e.databaseid.match(a)}))}return t&&(r=t(r)),r},he.createTable=function(e,t,r,n){var a=1,s=T.databases[e].lsdbid;if(he.get(s+"."+t)&&!r)throw new Error('Table "'+t+'" alsready exists in localStorage database "'+s+'"');var i=he.get(s);T.databases[e].tables[t];return i.tables[t]=!0,he.set(s,i),he.storeTable(e,t),n&&(a=n(a)),a},he.truncateTable=function(e,t,r,n){var a,s=1,i=T.databases[e].lsdbid;if(a=T.options.autocommit?he.get(i):T.databases[e],!r&&!a.tables[t])throw new Error('Cannot truncate table "'+t+'" in localStorage, because it does not exist');return he.restoreTable(e,t).data=[],he.storeTable(e,t),n&&(s=n(s)),s},he.dropTable=function(e,t,r,n){var a,s=1,i=T.databases[e].lsdbid;if(a=T.options.autocommit?he.get(i):T.databases[e],!r&&!a.tables[t])throw new Error('Cannot drop table "'+t+'" in localStorage, because it does not exist');return delete a.tables[t],he.set(i,a),he.removeTable(e,t),n&&(s=n(s)),s},he.fromTable=function(e,t,r,n,a){var s=(T.databases[e].lsdbid,he.restoreTable(e,t).data);return r&&(s=r(s,n,a)),s},he.intoTable=function(e,t,r,n,a){var s=(T.databases[e].lsdbid,r.length),i=he.restoreTable(e,t);for(var o in i.identities){var u=i.identities[o];for(var c in r)r[c][o]=u.value,u.value+=u.step}return i.data||(i.data=[]),i.data=i.data.concat(r),he.storeTable(e,t),a&&(s=a(s)),s},he.loadTableData=function(e,t){T.databases[e],T.databases[e].lsdbid;he.restoreTable(e,t)},he.saveTableData=function(e,t){var r=T.databases[e],n=T.databases[e].lsdbid;he.storeTable(n,t),r.tables[t].data=void 0},he.commit=function(e,t){var r=T.databases[e],n=T.databases[e].lsdbid,a={databaseid:n,tables:{}};if(r.tables)for(var s in r.tables)a.tables[s]=!0,he.storeTable(e,s);return he.set(n,a),t?t(1):1},he.begin=he.commit,he.rollback=function(e,t){return};var de=T.engines.SQLITE=function(){};de.createDatabase=function(e,t,r,n,a){throw new Error("Connot create SQLITE database in memory. Attach it.")},de.dropDatabase=function(e){throw new Error("This is impossible to drop SQLite database. Detach it.")},de.attachDatabase=function(e,t,r,n,a){if(T.databases[t])throw new Error('Unable to attach database as "'+t+'" because it already exists');if(r[0]&&r[0]instanceof X.StringValue||r[0]instanceof X.ParamValue){if(r[0]instanceof X.StringValue)var s=r[0].value;else if(r[0]instanceof X.ParamValue)var s=n[r[0].param];return T.utils.loadBinaryFile(s,!0,function(r){var n=new T.Database(t||e);n.engineid="SQLITE",n.sqldbid=e;var s=n.sqldb=new SQL.Database(r);n.tables=[],s.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values.forEach(function(e){n.tables[e[1]]={};var t=n.tables[e[1]].columns=[],r=T.parse(e[4]),a=r.statements[0].columns;a&&a.length>0&&a.forEach(function(e){t.push(e)})}),a(1)},function(e){throw new Error('Cannot open SQLite database file "'+r[0].value+'"')}),1}throw new Error("Cannot attach SQLite database without a file")},de.fromTable=function(e,t,r,n,a){var s=T.databases[e].sqldb.exec("SELECT * FROM "+t),i=a.sources[n].columns=[];s[0].columns.length>0&&s[0].columns.forEach(function(e){i.push({columnid:e})});var o=[];s[0].values.length>0&&s[0].values.forEach(function(e){var t={};i.forEach(function(r,n){t[r.columnid]=e[n]}),o.push(t)}),r&&r(o,n,a)},de.intoTable=function(e,t,r,n,a){for(var s=T.databases[e].sqldb,i=0,o=r.length;i1){var o="REQUIRE "+t.map(function(e){return'"'+e+'"'}).join(",");T(o,[],r)}}else if(!1===e)return void delete T.webworker});var pe=pe||function(e){if(!(void 0===e||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var t=e.document,r=function(){return e.URL||e.webkitURL||e},n=t.createElementNS("http://www.w3.org/1999/xhtml","a"),a="download"in n,s=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},i=/constructor/i.test(e.HTMLElement)||e.safari,o=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},c=function(e){var t=function(){"string"==typeof e?r().revokeObjectURL(e):e.remove()};setTimeout(t,4e4)},l=function(e,t,r){t=[].concat(t);for(var n=t.length;n--;){var a=e["on"+t[n]];if("function"==typeof a)try{a.call(e,r||e)}catch(e){u(e)}}},h=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e},d=function(t,u,d){d||(t=h(t));var f,p=this,b=t.type,E="application/octet-stream"===b,g=function(){l(p,"writestart progress write writeend".split(" "))};if(p.readyState=p.INIT,a)return f=r().createObjectURL(t),void setTimeout(function(){n.href=f,n.download=u,s(n),g(),c(f),p.readyState=p.DONE});!function(){if((o||E&&i)&&e.FileReader){var n=new FileReader;return n.onloadend=function(){var t=o?n.result:n.result.replace(/^data:[^;]*;/,"data:attachment/file;");e.open(t,"_blank")||(e.location.href=t),t=void 0,p.readyState=p.DONE,g()},n.readAsDataURL(t),void(p.readyState=p.INIT)}if(f||(f=r().createObjectURL(t)),E)e.location.href=f;else{e.open(f,"_blank")||(e.location.href=f)}p.readyState=p.DONE,g(),c(f)}()},f=d.prototype,p=function(e,t,r){return new d(e,t||e.name||"download",r)};return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,r){return t=t||e.name||"download",r||(e=h(e)),navigator.msSaveOrOpenBlob(e,t)}:(f.abort=function(){},f.readyState=f.INIT=0,f.WRITING=1,f.DONE=2,f.error=f.onwritestart=f.onprogress=f.onwrite=f.onabort=f.onerror=f.onwriteend=null,p)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof module&&module.exports?module.exports.saveAs=pe:"undefined"!=typeof define&&null!==define&&null!==define.amd&&define("FileSaver.js",function(){return pe}),(N.isCordova||N.isMeteorServer||N.isNode)&&console.warn("It looks like you are using the browser version of AlaSQL. Please use the alasql.fs.js file instead."),T.utils.saveAs=pe}return new H("alasql"),T.use("alasql"),T});
\ No newline at end of file
diff --git a/src/424select.js b/src/424select.js
index 41cb0fcd4a..a125803bf6 100755
--- a/src/424select.js
+++ b/src/424select.js
@@ -10,94 +10,117 @@
// return sources;
// };
-function compileSelectStar(query, alias, joinstar) {
- // console.log(query.aliases[alias]);
- // console.log(query,alias);
- // console.log(query.aliases[alias].tableid);
- // console.log(42,631,alias);
- // console.log(query.aliases);
+function compileSelectStar(query, aliases, joinstar) {
var sp = '',
- ss = [];
- // if(!alias) {
- // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
- // } else {
-
- // TODO move this out of this function
- query.ixsources = {};
- query.sources.forEach(function(source) {
- query.ixsources[source.alias] = source;
- });
+ ss = [],
+ columnIds = {};
+
+ for (var alias in aliases) {
+ // console.log(query.aliases[alias]);
+ // console.log(query,alias);
+ // console.log(query.aliases[alias].tableid);
+ // console.log(42,631,alias);
+ // console.log(query.aliases);
+ // if(!alias) {
+ // sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
+ // } else {
+
+ // TODO move this out of this function
+ query.ixsources = {};
+ query.sources.forEach(function(source) {
+ query.ixsources[source.alias] = source;
+ });
- // Fixed
- var columns;
- if (query.ixsources[alias]) {
- var columns = query.ixsources[alias].columns;
- }
+ // Fixed
+ var columns;
+ if (query.ixsources[alias]) {
+ var columns = query.ixsources[alias].columns;
+ }
- // if(columns.length == 0 && query.aliases[alias].tableid) {
- // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
- // };
+ // if(columns.length == 0 && query.aliases[alias].tableid) {
+ // var columns = alasql.databases[query.aliases[alias].databaseid].tables[query.aliases[alias].tableid].columns;
+ // };
- // Check if this is a Table or other
- if (joinstar && alasql.options.joinstar == 'json') {
- sp += "r['" + alias + "']={};";
- }
+ // Check if this is a Table or other
+ if (joinstar && alasql.options.joinstar == 'json') {
+ sp += "r['" + alias + "']={};";
+ }
- if (columns && columns.length > 0) {
- columns.forEach(function(tcol) {
- if (joinstar && alasql.options.joinstar == 'underscore') {
- ss.push(
- "'" +
+ if (columns && columns.length > 0) {
+ columns.forEach(function(tcol) {
+ if (joinstar && alasql.options.joinstar == 'underscore') {
+ ss.push(
+ "'" +
+ alias +
+ '_' +
+ tcol.columnid +
+ "':p['" +
+ alias +
+ "']['" +
+ tcol.columnid +
+ "']"
+ );
+ } else if (joinstar && alasql.options.joinstar == 'json') {
+ // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
+ sp +=
+ "r['" +
alias +
- '_' +
+ "']['" +
tcol.columnid +
- "':p['" +
+ "']=p['" +
alias +
"']['" +
tcol.columnid +
- "']"
- );
- } else if (joinstar && alasql.options.joinstar == 'json') {
- // ss.push('\''+alias+'_'+tcol.columnid+'\':p[\''+alias+'\'][\''+tcol.columnid+'\']');
- sp +=
- "r['" +
- alias +
- "']['" +
- tcol.columnid +
- "']=p['" +
- alias +
- "']['" +
- tcol.columnid +
- "'];";
- } else {
- ss.push("'" + tcol.columnid + "':p['" + alias + "']['" + tcol.columnid + "']");
- }
+ "'];";
+ } else {
+ var value = "p['" + alias + "']['" + tcol.columnid + "']";
+ if (!columnIds[tcol.columnid]) {
+ var key = "'" + tcol.columnid + "':";
+ ss.push(key + value);
+ columnIds[tcol.columnid] = {
+ id: ss.length - 1,
+ value: value,
+ key: key,
+ };
+ } else {
+ var newValue =
+ value +
+ ' !== undefined ? ' +
+ value +
+ ' : ' +
+ columnIds[tcol.columnid].value;
+ ss[columnIds[tcol.columnid].id] = columnIds[tcol.columnid].key + newValue;
+ columnIds[tcol.columnid].value = newValue;
+ }
+ }
- query.selectColumns[escapeq(tcol.columnid)] = true;
+ query.selectColumns[escapeq(tcol.columnid)] = true;
- // console.log('ok',tcol);
+ // console.log('ok',tcol);
- var coldef = {
- columnid: tcol.columnid,
- dbtypeid: tcol.dbtypeid,
- dbsize: tcol.dbsize,
- dbprecision: tcol.dbprecision,
- dbenum: tcol.dbenum,
- };
- query.columns.push(coldef);
- query.xcolumns[coldef.columnid] = coldef;
- });
- //console.log(999,columns);
- } else {
- // console.log(60,alias,columns);
-
- // if column not exist, then copy all
- sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
- //console.log(777, sp);
- query.dirtyColumns = true;
+ var coldef = {
+ columnid: tcol.columnid,
+ dbtypeid: tcol.dbtypeid,
+ dbsize: tcol.dbsize,
+ dbprecision: tcol.dbprecision,
+ dbenum: tcol.dbenum,
+ };
+ query.columns.push(coldef);
+ query.xcolumns[coldef.columnid] = coldef;
+ });
+ //console.log(999,columns);
+ } else {
+ // console.log(60,alias,columns);
+
+ // if column not exist, then copy all
+ sp += 'var w=p["' + alias + '"];for(var k in w){r[k]=w[k]};';
+ //console.log(777, sp);
+ query.dirtyColumns = true;
+ }
+ // }
+ //console.log(87,{s:ss.join(','),sp:sp});
}
- // }
- //console.log(87,{s:ss.join(','),sp:sp});
+ console.log(ss.join(','));
return {s: ss.join(','), sp: sp};
}
@@ -126,20 +149,21 @@ yy.Select.prototype.compileSelect1 = function(query, params) {
"'],p,params,alasql);";
} else if (col.tableid) {
//Copy all
- var ret = compileSelectStar(query, col.tableid, false);
+ var aliases = [];
+ aliases[col.tableid] = col.tableid;
+ var ret = compileSelectStar(query, aliases, false);
if (ret.s) {
ss = ss.concat(ret.s);
}
sp += ret.sp;
} else {
// console.log('aliases', query.aliases);
- for (var alias in query.aliases) {
- var ret = compileSelectStar(query, alias, true); //query.aliases[alias].tableid);
- if (ret.s) {
- ss = ss.concat(ret.s);
- }
- sp += ret.sp;
+ var ret = compileSelectStar(query, query.aliases, true); //query.aliases[alias].tableid);
+ if (ret.s) {
+ ss = ss.concat(ret.s);
}
+ sp += ret.sp;
+
// TODO Remove these lines
// In case of no information
// sp += 'for(var k1 in p){var w=p[k1];'+
diff --git a/test/test800.js b/test/test800.js
index bdc355d604..b48cb52821 100644
--- a/test/test800.js
+++ b/test/test800.js
@@ -33,7 +33,7 @@ describe('Test 800 - OUTER JOIN missing ids', function() {
{id: '3', a: undefined, b: 'C'},
];
- assert.deepEqual(expected, res);
+ assert.deepEqual(res, expected);
done();
});
});
From df603f27075414462cfb04b1bbfcae40d2e7d4fc Mon Sep 17 00:00:00 2001
From: Andrey Khaneev
Date: Wed, 17 Apr 2019 18:58:56 +0300
Subject: [PATCH 3/4] Refactored a little bit
---
dist/alasql-worker.js | 4 ++--
dist/alasql-worker.min.js | 2 +-
dist/alasql.fs.js | 18 ++++++++----------
dist/alasql.js | 18 ++++++++----------
dist/alasql.min.js | 12 ++++++------
src/424select.js | 12 +++++-------
6 files changed, 30 insertions(+), 36 deletions(-)
diff --git a/dist/alasql-worker.js b/dist/alasql-worker.js
index 9bf7dad0c0..4737febb2c 100755
--- a/dist/alasql-worker.js
+++ b/dist/alasql-worker.js
@@ -1,7 +1,7 @@
-//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
/*
@module alasql
-@version 0.4.11-develop-7d0ef547undefined
+@version 0.4.11-develop-d00d3b02undefined
AlaSQL - JavaScript SQL database
© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
diff --git a/dist/alasql-worker.min.js b/dist/alasql-worker.min.js
index 017b27d10d..ab6048961d 100755
--- a/dist/alasql-worker.min.js
+++ b/dist/alasql-worker.min.js
@@ -1,2 +1,2 @@
-//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
!function(r,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():r.alasql=e()}(this,function(){function r(e,t,o){t=t||[],"function"==typeof t&&(scope=o,o=t,t=[]),"object"!=typeof t&&(t=[t]);var n=r.lastid++;r.buffer[n]=o,r.webworker.postMessage({id:n,sql:e,params:t})}if(r.options={},r.options.progress=function(){},isArray=function(r){return"[object Array]"===Object.prototype.toString.call(r)},r.promise=function(){throw new Error("Please include a Promise/A+ library")},"undefined"!=typeof Promise){var e=function(e,t,o,n){return new Promise(function(s,i){r(e,t,function(e,t){t?i(t):(o&&n&&!1!==r.options.progress&&r.options.progress(o,n),s(e))})})},t=function(r){if(!(r.length<1)){for(var t,o,n,s=[],i=0;i1){r("REQUIRE "+t.map(function(r){return'"'+r+'"'}).join(","),[],o)}}else if(!1===e)return void delete r.webworker}),r.lastid=0,r.buffer={},r.worker(),r});
\ No newline at end of file
diff --git a/dist/alasql.fs.js b/dist/alasql.fs.js
index 60b6ba543a..c6d3016d65 100755
--- a/dist/alasql.fs.js
+++ b/dist/alasql.fs.js
@@ -1,7 +1,7 @@
-//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
/*
@module alasql
-@version 0.4.11-develop-7d0ef547undefined
+@version 0.4.11-develop-d00d3b02undefined
AlaSQL - JavaScript SQL database
© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
@@ -142,7 +142,7 @@ var alasql = function(sql, params, cb, scope) {
Current version of alasql
@constant {string}
*/
-alasql.version = '0.4.11-develop-7d0ef547undefined';
+alasql.version = '0.4.11-develop-d00d3b02undefined';
/**
Debug flag
@@ -9391,7 +9391,7 @@ function compileSelectStar(query, aliases, joinstar) {
ss = [],
columnIds = {};
- for (var alias in aliases) {
+ aliases.forEach(function(alias) {
// if(!alias) {
// sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
@@ -9488,8 +9488,8 @@ function compileSelectStar(query, aliases, joinstar) {
}
// }
- }
- console.log(ss.join(','));
+ });
+
return {s: ss.join(','), sp: sp};
}
@@ -9516,16 +9516,14 @@ yy.Select.prototype.compileSelect1 = function(query, params) {
"'],p,params,alasql);";
} else if (col.tableid) {
//Copy all
- var aliases = [];
- aliases[col.tableid] = col.tableid;
- var ret = compileSelectStar(query, aliases, false);
+ var ret = compileSelectStar(query, [col.tableid], false);
if (ret.s) {
ss = ss.concat(ret.s);
}
sp += ret.sp;
} else {
- var ret = compileSelectStar(query, query.aliases, true); //query.aliases[alias].tableid);
+ var ret = compileSelectStar(query, Object.keys(query.aliases), true); //query.aliases[alias].tableid);
if (ret.s) {
ss = ss.concat(ret.s);
}
diff --git a/dist/alasql.js b/dist/alasql.js
index 5c1c586e8c..6ecedb60f4 100755
--- a/dist/alasql.js
+++ b/dist/alasql.js
@@ -1,7 +1,7 @@
-//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
/*
@module alasql
-@version 0.4.11-develop-7d0ef547undefined
+@version 0.4.11-develop-d00d3b02undefined
AlaSQL - JavaScript SQL database
© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
@@ -142,7 +142,7 @@ var alasql = function(sql, params, cb, scope) {
Current version of alasql
@constant {string}
*/
-alasql.version = '0.4.11-develop-7d0ef547undefined';
+alasql.version = '0.4.11-develop-d00d3b02undefined';
/**
Debug flag
@@ -9386,7 +9386,7 @@ function compileSelectStar(query, aliases, joinstar) {
ss = [],
columnIds = {};
- for (var alias in aliases) {
+ aliases.forEach(function(alias) {
// if(!alias) {
// sp += 'for(var k1 in p) var w=p[k1];for(var k2 in w){r[k2]=w[k2]};';
@@ -9483,8 +9483,8 @@ function compileSelectStar(query, aliases, joinstar) {
}
// }
- }
- console.log(ss.join(','));
+ });
+
return {s: ss.join(','), sp: sp};
}
@@ -9511,16 +9511,14 @@ yy.Select.prototype.compileSelect1 = function(query, params) {
"'],p,params,alasql);";
} else if (col.tableid) {
//Copy all
- var aliases = [];
- aliases[col.tableid] = col.tableid;
- var ret = compileSelectStar(query, aliases, false);
+ var ret = compileSelectStar(query, [col.tableid], false);
if (ret.s) {
ss = ss.concat(ret.s);
}
sp += ret.sp;
} else {
- var ret = compileSelectStar(query, query.aliases, true); //query.aliases[alias].tableid);
+ var ret = compileSelectStar(query, Object.keys(query.aliases), true); //query.aliases[alias].tableid);
if (ret.s) {
ss = ss.concat(ret.s);
}
diff --git a/dist/alasql.min.js b/dist/alasql.min.js
index 9702528978..cced5a035a 100755
--- a/dist/alasql.min.js
+++ b/dist/alasql.min.js
@@ -1,5 +1,5 @@
-//! AlaSQL v0.4.11-develop-7d0ef547undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
-"use strict";!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.alasql=t()}(this,function(){function e(e){return"(y="+e+",y===y?y:undefined)"}function t(e,t){return"(y="+e+',typeof y=="undefined"?undefined:'+t+")"}function r(){return!0}function n(){}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")&&parseInt(e.split("msie")[1])}function s(e,t,r){function n(e,r,a){var o,u,c,l=e[r];if(l.selid){if("PATH"===l.selid){for(var h=[{node:a,stack:[]}],d={},f=T.databases[T.useid].objects;h.length>0;){var p=h.shift(),b=p.node,E=p.stack,c=n(l.args,0,b);if(c.length>0){if(r+1+1>e.length)return E;var g=[];return E&&E.length>0&&E.forEach(function(t){g=g.concat(n(e,r+1,t))}),g}void 0===d[b.$id]&&(d[b.$id]=!0,b.$out&&b.$out.length>0&&b.$out.forEach(function(e){var t=f[e],r=E.concat(t);r.push(f[t.$out[0]]),h.push({node:f[t.$out[0]],stack:r})}))}return[]}if("NOT"===l.selid){var u=n(l.args,0,a);return u.length>0?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("DISTINCT"===l.selid){var u;if(u=void 0===l.args||0===l.args.length?P(a):n(l.args,0,a),0===u.length)return[];var m=P(u);return r+1+1>e.length?m:n(e,r+1,m)}if("AND"===l.selid){var m=!0;return l.args.forEach(function(e){m=m&&n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("OR"===l.selid){var m=!1;return l.args.forEach(function(e){m=m||n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("ALL"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("ANY"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?[u[0]]:n(e,r+1,[u[0]])}if("UNIONALL"===l.selid){var u=[];return l.args.forEach(function(e){u=u.concat(n(e,0,a))}),0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("UNION"===l.selid){var u=[];l.args.forEach(function(e){u=u.concat(n(e,0,a))});var u=P(u);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("IF"===l.selid){var u=n(l.args,0,a);return 0===u.length?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("REPEAT"===l.selid){var v,S,A=l.args[0].value;S=l.args[1]?l.args[1].value:A,l.args[2]&&(v=l.args[2].variable);var y=[];if(0===A&&(r+1+1>e.length?y=[a]:(v&&(T.vars[v]=0),y=y.concat(n(e,r+1,a)))),S>0)for(var N=[{value:a,lvl:1}],C=0;N.length>0;){var u=N[0];if(N.shift(),u.lvl<=S){v&&(T.vars[v]=u.lvl);var R=n(l.sels,0,u.value);R.forEach(function(e){N.push({value:e,lvl:u.lvl+1})}),u.lvl>=A&&(r+1+1>e.length?y=y.concat(R):R.forEach(function(t){y=y.concat(n(e,r+1,t))}))}if(++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("OF"===l.selid){if(r+1+1>e.length)return[a];var O=[];return Object.keys(a).forEach(function(t){T.vars[l.args[0].variable]=t,O=O.concat(n(e,r+1,a[t]))}),O}if("TO"===l.selid){var w=T.vars[l.args[0]],I=[];if(I=void 0!==w?w.slice(0):[],I.push(a),r+1+1>e.length)return[a];T.vars[l.args[0]]=I;var O=n(e,r+1,a);return T.vars[l.args[0]]=w,O}if("ARRAY"===l.selid){var u=n(l.args,0,a);return u.length>0?(o=u,r+1+1>e.length?[o]:n(e,r+1,o)):[]}if("SUM"===l.selid){var u=n(l.args,0,a);if(!(u.length>0))return[];var o=u.reduce(function(e,t){return e+t},0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("AVG"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.reduce(function(e,t){return e+t},0)/u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("COUNT"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("FIRST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[0],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("LAST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[u.length-1],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("MIN"===l.selid){if(u=n(l.args,0,a),0===u.length)return[];var o=u.reduce(function(e,t){return Math.min(e,t)},1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("MAX"===l.selid){var u=n(l.args,0,a);if(0===u.length)return[];var o=u.reduce(function(e,t){return Math.max(e,t)},-1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("PLUS"===l.selid){var y=[],N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N.shift();if(u=n(l.args,0,u),N=N.concat(u),r+1+1>e.length?y=y.concat(u):u.forEach(function(t){var a=n(e,r+1,t);y=y.concat(a)}),++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("STAR"===l.selid){var y=[];y=n(e,r+1,a);var N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N[0];if(N.shift(),u=n(l.args,0,u),N=N.concat(u),r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),++C>1e5)throw new Error("Loop brake. Number of iterations = "+C)}return y}if("QUESTION"===l.selid){var y=[];y=y.concat(n(e,r+1,a));var u=n(l.args,0,a);return r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),y}if("WITH"!==l.selid){if("ROOT"===l.selid)return r+1+1>e.length?[a]:n(e,r+1,s);throw new Error("Wrong selector "+l.selid)}var u=n(l.args,0,a);if(0===u.length)return[];var c={status:1,values:u}}else{if(!l.srchid)throw new Error("Selector not found");var c=T.srch[l.srchid.toUpperCase()](a,l.args,i,t)}void 0===c&&(c={status:1,values:[a]});var m=[];if(1===c.status){var x=c.values;if(r+1+1>e.length)m=x;else for(var C=0;C0&&(o&&o[0]&&"PROP"===o[0].srchid&&o[0].args&&o[0].args[0]&&("XML"===o[0].args[0].toUpperCase()?(i.mode="XML",o.shift()):"HTML"===o[0].args[0].toUpperCase()?(i.mode="HTML",o.shift()):"JSON"===o[0].args[0].toUpperCase()&&(i.mode="JSON",o.shift())),o.length>0&&"VALUE"===o[0].srchid&&(i.value=!0,o.shift())),this.from instanceof X.Column){var u=this.from.databaseid||e;s=T.databases[u].tables[this.from.columnid].data}else if(this.from instanceof X.FuncValue&&T.from[this.from.funcid.toUpperCase()]){var c=this.from.args.map(function(e){var r=e.toJS();return new Function("params,alasql","var y;return "+r).bind(this)(t,T)});s=T.from[this.from.funcid.toUpperCase()].apply(this,c)}else if(void 0===this.from)s=T.databases[e].objects;else{var l=new Function("params,alasql","var y;return "+this.from.toJS());s=l(t,T),"object"==typeof Mongo&&"object"!=typeof Mongo.Collection&&s instanceof Mongo.Collection&&(s=s.find().fetch())}if(a=void 0!==o&&o.length>0?n(o,0,s):s,this.into){var h,d;void 0!==this.into.args[0]&&(h=new Function("params,alasql","var y;return "+this.into.args[0].toJS())(t,T)),void 0!==this.into.args[1]&&(d=new Function("params,alasql","var y;return "+this.into.args[1].toJS())(t,T)),a=T.into[this.into.funcid.toUpperCase()](h,d,a,[],r)}else i.value&&a.length>0&&(a=a[0]),r&&(a=r(a));return a}function i(e,t,r,n,a){e.sources.length;e.sourceslen=e.sources.length;var s=e.sourceslen;e.query=e,e.A=n,e.B=a,e.cb=r,e.oldscope=t,e.queriesfn&&(e.sourceslen+=e.queriesfn.length,s+=e.queriesfn.length,e.queriesdata=[],e.queriesfn.forEach(function(t,r){t.query.params=e.params,o([],-r-1,e)}));var i;i=t?_(t):{},e.scope=i;var c;return e.sources.forEach(function(t,r){t.query=e;var n=t.datafn(e,e.params,o,r,T);void 0!==n&&((e.intofn||e.intoallfn)&&Array.isArray(n)&&(n=n.length),c=n),t.queriesdata=e.queriesdata}),0!=e.sources.length&&0!==s||(c=u(e)),c}function o(e,t,r){if(t>=0){var n=r.sources[t];n.data=e,"function"==typeof n.data&&(n.getfn=n.data,n.dontcache=n.getfn.dontcache,"OUTER"!=n.joinmode&&"RIGHT"!=n.joinmode&&"ANTI"!=n.joinmode||(n.dontcache=!1),n.data={})}else r.queriesdata[-t-1]=G(e);if(!(--r.sourceslen>0))return u(r)}function u(e){var t,r=e.scope;z(e),e.data=[],e.xgroups={},e.groups=[];if(h(e,r,0),e.groupfn){if(e.data=[],0===e.groups.length){var n={};e.selectGroup.length>0&&e.selectGroup.forEach(function(e){"COUNT"==e.aggregatorid||"SUM"==e.aggregatorid?n[e.nick]=0:n[e.nick]=void 0}),e.groups=[n]}if(e.aggrKeys.length>0){var a="";e.aggrKeys.forEach(function(e){a+="g['"+e.nick+"']=alasql.aggr['"+e.funcid+"'](undefined,g['"+e.nick+"'],3);"});var s=new Function("g,params,alasql","var y;"+a)}for(var i=0,o=e.groups.length;i0){var g=e.removeKeys;if((t=g.length)>0)for(o=e.data.length,i=0;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return g.forEach(function(r){e.columnid==r&&(t=!0)}),!t}))}if(void 0!==e.removeLikeKeys&&e.removeLikeKeys.length>0){for(var m=e.removeLikeKeys,i=0,o=e.data.length;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return m.forEach(function(r){T.utils.like(r,e.columnid)&&(t=!0)}),!t}))}if(e.pivotfn&&e.pivotfn(),e.unpivotfn&&e.unpivotfn(),e.intoallfn){var S=e.intoallfn(e.columns,e.cb,e.params,e.alasql);return S}if(e.intofn){for(o=e.data.length,i=0;i=e.sources.length)e.wherefn(t,e.params,T)&&(e.groupfn?e.groupfn(t,e.params,T):e.data.push(e.selectfn(t,e.params,T)));else if(e.sources[r].applyselect){var n=e.sources[r];n.applyselect(e.params,function(a){if(a.length>0)for(var s=0;s0){for(var a={},s=Math.min(t.length,T.options.columnlookup||10)-1;0<=s;s--)for(var i in t[s])a[i]=!0;n=Object.keys(a).map(function(e){return{columnid:e}})}else n=[];if("VALUE"===r)if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0],t=t[0][i]}else t=void 0;else if("ROW"===r)if(t.length>0){var i,o=[];for(var i in t[0])o.push(t[0][i]);t=o}else t=void 0;else if("COLUMN"===r){var u=[];if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0)i=n[0].columnid,d=n[1].columnid;else{var f=Object.keys(t[0]);i=f[0],d=f[1]}for(var s=0,c=t.length;s0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0?o.forEach(function(t){if(r&&"underscore"==T.options.joinstar)a.push("'"+i+"_"+t.columnid+"':p['"+i+"']['"+t.columnid+"']");else if(r&&"json"==T.options.joinstar)n+="r['"+i+"']['"+t.columnid+"']=p['"+i+"']['"+t.columnid+"'];";else{var o="p['"+i+"']['"+t.columnid+"']";if(s[t.columnid]){var u=o+" !== undefined ? "+o+" : "+s[t.columnid].value;a[s[t.columnid].id]=s[t.columnid].key+u,s[t.columnid].value=u}else{var c="'"+t.columnid+"':";a.push(c+o),s[t.columnid]={id:a.length-1,value:o,key:c}}}e.selectColumns[C(t.columnid)]=!0;var l={columnid:t.columnid,dbtypeid:t.dbtypeid,dbsize:t.dbsize,dbprecision:t.dbprecision,dbenum:t.dbenum};e.columns.push(l),e.xcolumns[l.columnid]=l}):(n+='var w=p["'+i+'"];for(var k in w){r[k]=w[k]};',e.dirtyColumns=!0)}return console.log(a.join(",")),{s:a.join(","),sp:n}}function p(e,t){if(Array.isArray(e)){for(var r=[[]],n=0;n",t+="table {border:1px black solid; border-collapse: collapse; border-spacing: 0px;}",t+="td,th {border:1px black solid; padding-left:5px; padding-right:5px}",t+="th {background-color: #EEE}",t+="",t+="";var r=[];for(var n in e[0])r.push(n);t+="#",r.forEach(function(e){t+=" "+e});for(var a=0,s=e.length;a"+(a+1),r.forEach(function(r){t+=" ",e[a][r]==+e[a][r]?(t+='',void 0===e[a][r]?t+="NULL":t+=e[a][r],t+="
"):void 0===e[a][r]?t+="NULL":"string"==typeof e[a][r]?t+=e[a][r]:t+=oe(e[a][r])});t+="
"}else t+=""+oe(e)+"
";return t}function g(e,t,r){if(!(r<=0)){var n=t-e.scrollTop,a=n/r*10;setTimeout(function(){e.scrollTop!==t&&(e.scrollTop=e.scrollTop+a,g(e,t,r-10))},10)}}function m(e,t,r,n,a,s){function i(e){for(var t="",r=0,n=10240;r0&&d[d.length-1]&&0==Object.keys(d[d.length-1]).length&&d.pop(),n&&(d=n(d,a,s))},function(e){throw e})}function S(e){function t(){if(i(/^<\?xml\s*/)){for(var e={attributes:{}};!o()&&!u("?>");){var t=a();if(!t)return e;e.attributes[t.name]=t.value}return i(/\?>\s*/),e}}function r(){var e=i(/^<([\w-:.]+)\s*/);if(e){for(var t={name:e[1],attributes:{},children:[]};!(o()||u(">")||u("?>")||u("/>"));){var s=a();if(!s)return t;t.attributes[s.name]=s.value}if(i(/^\s*\/>\s*/))return t;i(/\??>\s*/),t.content=n();for(var c;c=r();)t.children.push(c);return i(/^<\/[\w-:.]+>\s*/),t}}function n(){var e=i(/^([^<]*)/);return e?e[1]:""}function a(){var e=i(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(e)return{name:e[1],value:s(e[2])}}function s(e){return e.replace(/^['"]|['"]$/g,"")}function i(t){var r=e.match(t);if(r)return e=e.slice(r[0].length),r}function o(){return 0==e.length}function u(t){return 0==e.indexOf(t)}return e=e.trim(),e=e.replace(//g,""),function(){return{declaration:t(),root:r()}}()}var T=function(e,t,r,n){if(t=t||[],"function"!=typeof importScripts&&T.webworker){var a=T.lastid++;return T.buffer[a]=r,void T.webworker.postMessage({id:a,sql:e,params:t})}return 0===arguments.length?new X.Select({columns:[new X.Column({columnid:"*"})],from:[new X.ParamValue({param:0})]}):1===arguments.length&&e.constructor===Array?T.promise(e):("function"==typeof t&&(n=r,r=t,t=[]),"object"!=typeof t&&(t=[t]),"string"==typeof e&&"#"===e[0]&&"object"==typeof document?e=document.querySelector(e).textContent:"object"==typeof e&&e instanceof HTMLElement?e=e.textContent:"function"==typeof e&&(e=e.toString(),e=(/\/\*([\S\s]+)\*\//m.exec(e)||["","Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function."])[1]),T.exec(e,t,r,n))};T.version="0.4.11-develop-7d0ef547undefined",T.debug=void 0;var A=function(){return null},y=function(){function e(){this.yy={}}var t=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r
+//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+"use strict";!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.alasql=t()}(this,function(){function e(e){return"(y="+e+",y===y?y:undefined)"}function t(e,t){return"(y="+e+',typeof y=="undefined"?undefined:'+t+")"}function r(){return!0}function n(){}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")&&parseInt(e.split("msie")[1])}function s(e,t,r){function n(e,r,a){var o,u,c,l=e[r];if(l.selid){if("PATH"===l.selid){for(var h=[{node:a,stack:[]}],d={},f=T.databases[T.useid].objects;h.length>0;){var p=h.shift(),b=p.node,E=p.stack,c=n(l.args,0,b);if(c.length>0){if(r+1+1>e.length)return E;var g=[];return E&&E.length>0&&E.forEach(function(t){g=g.concat(n(e,r+1,t))}),g}void 0===d[b.$id]&&(d[b.$id]=!0,b.$out&&b.$out.length>0&&b.$out.forEach(function(e){var t=f[e],r=E.concat(t);r.push(f[t.$out[0]]),h.push({node:f[t.$out[0]],stack:r})}))}return[]}if("NOT"===l.selid){var u=n(l.args,0,a);return u.length>0?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("DISTINCT"===l.selid){var u;if(u=void 0===l.args||0===l.args.length?P(a):n(l.args,0,a),0===u.length)return[];var m=P(u);return r+1+1>e.length?m:n(e,r+1,m)}if("AND"===l.selid){var m=!0;return l.args.forEach(function(e){m=m&&n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("OR"===l.selid){var m=!1;return l.args.forEach(function(e){m=m||n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("ALL"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("ANY"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?[u[0]]:n(e,r+1,[u[0]])}if("UNIONALL"===l.selid){var u=[];return l.args.forEach(function(e){u=u.concat(n(e,0,a))}),0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("UNION"===l.selid){var u=[];l.args.forEach(function(e){u=u.concat(n(e,0,a))});var u=P(u);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("IF"===l.selid){var u=n(l.args,0,a);return 0===u.length?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("REPEAT"===l.selid){var v,S,A=l.args[0].value;S=l.args[1]?l.args[1].value:A,l.args[2]&&(v=l.args[2].variable);var y=[];if(0===A&&(r+1+1>e.length?y=[a]:(v&&(T.vars[v]=0),y=y.concat(n(e,r+1,a)))),S>0)for(var N=[{value:a,lvl:1}],C=0;N.length>0;){var u=N[0];if(N.shift(),u.lvl<=S){v&&(T.vars[v]=u.lvl);var R=n(l.sels,0,u.value);R.forEach(function(e){N.push({value:e,lvl:u.lvl+1})}),u.lvl>=A&&(r+1+1>e.length?y=y.concat(R):R.forEach(function(t){y=y.concat(n(e,r+1,t))}))}if(++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("OF"===l.selid){if(r+1+1>e.length)return[a];var O=[];return Object.keys(a).forEach(function(t){T.vars[l.args[0].variable]=t,O=O.concat(n(e,r+1,a[t]))}),O}if("TO"===l.selid){var w=T.vars[l.args[0]],I=[];if(I=void 0!==w?w.slice(0):[],I.push(a),r+1+1>e.length)return[a];T.vars[l.args[0]]=I;var O=n(e,r+1,a);return T.vars[l.args[0]]=w,O}if("ARRAY"===l.selid){var u=n(l.args,0,a);return u.length>0?(o=u,r+1+1>e.length?[o]:n(e,r+1,o)):[]}if("SUM"===l.selid){var u=n(l.args,0,a);if(!(u.length>0))return[];var o=u.reduce(function(e,t){return e+t},0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("AVG"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.reduce(function(e,t){return e+t},0)/u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("COUNT"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("FIRST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[0],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("LAST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[u.length-1],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("MIN"===l.selid){if(u=n(l.args,0,a),0===u.length)return[];var o=u.reduce(function(e,t){return Math.min(e,t)},1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("MAX"===l.selid){var u=n(l.args,0,a);if(0===u.length)return[];var o=u.reduce(function(e,t){return Math.max(e,t)},-1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("PLUS"===l.selid){var y=[],N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N.shift();if(u=n(l.args,0,u),N=N.concat(u),r+1+1>e.length?y=y.concat(u):u.forEach(function(t){var a=n(e,r+1,t);y=y.concat(a)}),++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("STAR"===l.selid){var y=[];y=n(e,r+1,a);var N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N[0];if(N.shift(),u=n(l.args,0,u),N=N.concat(u),r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),++C>1e5)throw new Error("Loop brake. Number of iterations = "+C)}return y}if("QUESTION"===l.selid){var y=[];y=y.concat(n(e,r+1,a));var u=n(l.args,0,a);return r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),y}if("WITH"!==l.selid){if("ROOT"===l.selid)return r+1+1>e.length?[a]:n(e,r+1,s);throw new Error("Wrong selector "+l.selid)}var u=n(l.args,0,a);if(0===u.length)return[];var c={status:1,values:u}}else{if(!l.srchid)throw new Error("Selector not found");var c=T.srch[l.srchid.toUpperCase()](a,l.args,i,t)}void 0===c&&(c={status:1,values:[a]});var m=[];if(1===c.status){var x=c.values;if(r+1+1>e.length)m=x;else for(var C=0;C0&&(o&&o[0]&&"PROP"===o[0].srchid&&o[0].args&&o[0].args[0]&&("XML"===o[0].args[0].toUpperCase()?(i.mode="XML",o.shift()):"HTML"===o[0].args[0].toUpperCase()?(i.mode="HTML",o.shift()):"JSON"===o[0].args[0].toUpperCase()&&(i.mode="JSON",o.shift())),o.length>0&&"VALUE"===o[0].srchid&&(i.value=!0,o.shift())),this.from instanceof X.Column){var u=this.from.databaseid||e;s=T.databases[u].tables[this.from.columnid].data}else if(this.from instanceof X.FuncValue&&T.from[this.from.funcid.toUpperCase()]){var c=this.from.args.map(function(e){var r=e.toJS();return new Function("params,alasql","var y;return "+r).bind(this)(t,T)});s=T.from[this.from.funcid.toUpperCase()].apply(this,c)}else if(void 0===this.from)s=T.databases[e].objects;else{var l=new Function("params,alasql","var y;return "+this.from.toJS());s=l(t,T),"object"==typeof Mongo&&"object"!=typeof Mongo.Collection&&s instanceof Mongo.Collection&&(s=s.find().fetch())}if(a=void 0!==o&&o.length>0?n(o,0,s):s,this.into){var h,d;void 0!==this.into.args[0]&&(h=new Function("params,alasql","var y;return "+this.into.args[0].toJS())(t,T)),void 0!==this.into.args[1]&&(d=new Function("params,alasql","var y;return "+this.into.args[1].toJS())(t,T)),a=T.into[this.into.funcid.toUpperCase()](h,d,a,[],r)}else i.value&&a.length>0&&(a=a[0]),r&&(a=r(a));return a}function i(e,t,r,n,a){e.sources.length;e.sourceslen=e.sources.length;var s=e.sourceslen;e.query=e,e.A=n,e.B=a,e.cb=r,e.oldscope=t,e.queriesfn&&(e.sourceslen+=e.queriesfn.length,s+=e.queriesfn.length,e.queriesdata=[],e.queriesfn.forEach(function(t,r){t.query.params=e.params,o([],-r-1,e)}));var i;i=t?_(t):{},e.scope=i;var c;return e.sources.forEach(function(t,r){t.query=e;var n=t.datafn(e,e.params,o,r,T);void 0!==n&&((e.intofn||e.intoallfn)&&Array.isArray(n)&&(n=n.length),c=n),t.queriesdata=e.queriesdata}),0!=e.sources.length&&0!==s||(c=u(e)),c}function o(e,t,r){if(t>=0){var n=r.sources[t];n.data=e,"function"==typeof n.data&&(n.getfn=n.data,n.dontcache=n.getfn.dontcache,"OUTER"!=n.joinmode&&"RIGHT"!=n.joinmode&&"ANTI"!=n.joinmode||(n.dontcache=!1),n.data={})}else r.queriesdata[-t-1]=G(e);if(!(--r.sourceslen>0))return u(r)}function u(e){var t,r=e.scope;z(e),e.data=[],e.xgroups={},e.groups=[];if(h(e,r,0),e.groupfn){if(e.data=[],0===e.groups.length){var n={};e.selectGroup.length>0&&e.selectGroup.forEach(function(e){"COUNT"==e.aggregatorid||"SUM"==e.aggregatorid?n[e.nick]=0:n[e.nick]=void 0}),e.groups=[n]}if(e.aggrKeys.length>0){var a="";e.aggrKeys.forEach(function(e){a+="g['"+e.nick+"']=alasql.aggr['"+e.funcid+"'](undefined,g['"+e.nick+"'],3);"});var s=new Function("g,params,alasql","var y;"+a)}for(var i=0,o=e.groups.length;i0){var g=e.removeKeys;if((t=g.length)>0)for(o=e.data.length,i=0;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return g.forEach(function(r){e.columnid==r&&(t=!0)}),!t}))}if(void 0!==e.removeLikeKeys&&e.removeLikeKeys.length>0){for(var m=e.removeLikeKeys,i=0,o=e.data.length;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return m.forEach(function(r){T.utils.like(r,e.columnid)&&(t=!0)}),!t}))}if(e.pivotfn&&e.pivotfn(),e.unpivotfn&&e.unpivotfn(),e.intoallfn){var S=e.intoallfn(e.columns,e.cb,e.params,e.alasql);return S}if(e.intofn){for(o=e.data.length,i=0;i=e.sources.length)e.wherefn(t,e.params,T)&&(e.groupfn?e.groupfn(t,e.params,T):e.data.push(e.selectfn(t,e.params,T)));else if(e.sources[r].applyselect){var n=e.sources[r];n.applyselect(e.params,function(a){if(a.length>0)for(var s=0;s0){for(var a={},s=Math.min(t.length,T.options.columnlookup||10)-1;0<=s;s--)for(var i in t[s])a[i]=!0;n=Object.keys(a).map(function(e){return{columnid:e}})}else n=[];if("VALUE"===r)if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0],t=t[0][i]}else t=void 0;else if("ROW"===r)if(t.length>0){var i,o=[];for(var i in t[0])o.push(t[0][i]);t=o}else t=void 0;else if("COLUMN"===r){var u=[];if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0)i=n[0].columnid,d=n[1].columnid;else{var f=Object.keys(t[0]);i=f[0],d=f[1]}for(var s=0,c=t.length;s0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0?i.forEach(function(i){if(r&&"underscore"==T.options.joinstar)a.push("'"+t+"_"+i.columnid+"':p['"+t+"']['"+i.columnid+"']");else if(r&&"json"==T.options.joinstar)n+="r['"+t+"']['"+i.columnid+"']=p['"+t+"']['"+i.columnid+"'];";else{var o="p['"+t+"']['"+i.columnid+"']";if(s[i.columnid]){var u=o+" !== undefined ? "+o+" : "+s[i.columnid].value;a[s[i.columnid].id]=s[i.columnid].key+u,s[i.columnid].value=u}else{var c="'"+i.columnid+"':";a.push(c+o),s[i.columnid]={id:a.length-1,value:o,key:c}}}e.selectColumns[C(i.columnid)]=!0;var l={columnid:i.columnid,dbtypeid:i.dbtypeid,dbsize:i.dbsize,dbprecision:i.dbprecision,dbenum:i.dbenum};e.columns.push(l),e.xcolumns[l.columnid]=l}):(n+='var w=p["'+t+'"];for(var k in w){r[k]=w[k]};',e.dirtyColumns=!0)}),{s:a.join(","),sp:n}}function p(e,t){if(Array.isArray(e)){for(var r=[[]],n=0;n",t+="table {border:1px black solid; border-collapse: collapse; border-spacing: 0px;}",t+="td,th {border:1px black solid; padding-left:5px; padding-right:5px}",t+="th {background-color: #EEE}",t+="",t+="";var r=[];for(var n in e[0])r.push(n);t+="#",r.forEach(function(e){t+=" "+e});for(var a=0,s=e.length;a"+(a+1),r.forEach(function(r){t+=" ",e[a][r]==+e[a][r]?(t+='',void 0===e[a][r]?t+="NULL":t+=e[a][r],t+="
"):void 0===e[a][r]?t+="NULL":"string"==typeof e[a][r]?t+=e[a][r]:t+=oe(e[a][r])});t+="
"}else t+=""+oe(e)+"
";return t}function g(e,t,r){if(!(r<=0)){var n=t-e.scrollTop,a=n/r*10;setTimeout(function(){e.scrollTop!==t&&(e.scrollTop=e.scrollTop+a,g(e,t,r-10))},10)}}function m(e,t,r,n,a,s){function i(e){for(var t="",r=0,n=10240;r0&&d[d.length-1]&&0==Object.keys(d[d.length-1]).length&&d.pop(),n&&(d=n(d,a,s))},function(e){throw e})}function S(e){function t(){if(i(/^<\?xml\s*/)){for(var e={attributes:{}};!o()&&!u("?>");){var t=a();if(!t)return e;e.attributes[t.name]=t.value}return i(/\?>\s*/),e}}function r(){var e=i(/^<([\w-:.]+)\s*/);if(e){for(var t={name:e[1],attributes:{},children:[]};!(o()||u(">")||u("?>")||u("/>"));){var s=a();if(!s)return t;t.attributes[s.name]=s.value}if(i(/^\s*\/>\s*/))return t;i(/\??>\s*/),t.content=n();for(var c;c=r();)t.children.push(c);return i(/^<\/[\w-:.]+>\s*/),t}}function n(){var e=i(/^([^<]*)/);return e?e[1]:""}function a(){var e=i(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(e)return{name:e[1],value:s(e[2])}}function s(e){return e.replace(/^['"]|['"]$/g,"")}function i(t){var r=e.match(t);if(r)return e=e.slice(r[0].length),r}function o(){return 0==e.length}function u(t){return 0==e.indexOf(t)}return e=e.trim(),e=e.replace(//g,""),function(){return{declaration:t(),root:r()}}()}var T=function(e,t,r,n){if(t=t||[],"function"!=typeof importScripts&&T.webworker){var a=T.lastid++;return T.buffer[a]=r,void T.webworker.postMessage({id:a,sql:e,params:t})}return 0===arguments.length?new X.Select({columns:[new X.Column({columnid:"*"})],from:[new X.ParamValue({param:0})]}):1===arguments.length&&e.constructor===Array?T.promise(e):("function"==typeof t&&(n=r,r=t,t=[]),"object"!=typeof t&&(t=[t]),"string"==typeof e&&"#"===e[0]&&"object"==typeof document?e=document.querySelector(e).textContent:"object"==typeof e&&e instanceof HTMLElement?e=e.textContent:"function"==typeof e&&(e=e.toString(),e=(/\/\*([\S\s]+)\*\//m.exec(e)||["","Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function."])[1]),T.exec(e,t,r,n))};T.version="0.4.11-develop-d00d3b02undefined",T.debug=void 0;var A=function(){return null},y=function(){function e(){this.yy={}}var t=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r
},r=[2,13],n=[1,104],a=[1,102],s=[1,103],i=[1,6],o=[1,42],u=[1,79],c=[1,76],l=[1,94],h=[1,93],d=[1,69],f=[1,101],p=[1,85],b=[1,64],E=[1,71],g=[1,84],m=[1,66],v=[1,70],S=[1,68],A=[1,61],y=[1,74],N=[1,62],C=[1,67],R=[1,83],w=[1,77],I=[1,86],x=[1,87],D=[1,81],k=[1,82],L=[1,80],$=[1,88],M=[1,89],U=[1,90],_=[1,91],F=[1,92],P=[1,98],q=[1,65],G=[1,78],V=[1,72],B=[1,96],j=[1,97],H=[1,63],J=[1,73],Y=[1,108],W=[1,107],X=[10,306,602,764],K=[10,306,310,602,764],Q=[1,115],z=[1,116],Z=[1,117],ee=[1,118],te=[1,119],re=[130,353,410],ne=[1,127],ae=[1,126],se=[1,134],ie=[1,164],oe=[1,175],ue=[1,178],ce=[1,173],le=[1,181],he=[1,185],de=[1,160],fe=[1,182],pe=[1,169],be=[1,171],Ee=[1,174],ge=[1,183],me=[1,166],ve=[1,193],Se=[1,188],Te=[1,189],Ae=[1,194],ye=[1,195],Ne=[1,196],Ce=[1,197],Re=[1,198],Oe=[1,199],we=[1,200],Ie=[1,201],xe=[1,202],De=[1,176],ke=[1,177],Le=[1,179],$e=[1,180],Me=[1,186],Ue=[1,192],_e=[1,184],Fe=[1,187],Pe=[1,172],qe=[1,170],Ge=[1,191],Ve=[1,203],Be=[2,4,5],je=[2,471],He=[1,206],Je=[1,211],Ye=[1,220],We=[1,216],Xe=[10,72,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],Ke=[2,4,5,10,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],Qe=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ze=[1,249],Ze=[1,256],et=[1,265],tt=[1,270],rt=[1,269],nt=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,168,169,179,180,181,183,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],at=[2,162],st=[1,281],it=[10,74,78,306,310,505,602,764],ot=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,193,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,302,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,344,356,368,369,370,373,374,386,389,396,400,401,402,403,404,405,406,408,409,417,418,420,424,426,433,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,514,515,516,517,602,764],ut=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],ct=[1,562],lt=[1,564],ht=[2,503],dt=[1,569],ft=[1,580],pt=[1,583],bt=[1,584],Et=[10,78,89,132,137,146,189,296,306,310,470,602,764],gt=[10,74,306,310,602,764],mt=[2,567],vt=[1,602],St=[2,4,5,156],Tt=[1,640],At=[1,612],yt=[1,646],Nt=[1,647],Ct=[1,620],Rt=[1,631],Ot=[1,618],wt=[1,626],It=[1,619],xt=[1,627],Dt=[1,629],kt=[1,621],Lt=[1,622],$t=[1,641],Mt=[1,638],Ut=[1,639],_t=[1,615],Ft=[1,617],Pt=[1,609],qt=[1,610],Gt=[1,611],Vt=[1,613],Bt=[1,614],jt=[1,616],Ht=[1,623],Jt=[1,624],Yt=[1,628],Wt=[1,630],Xt=[1,632],Kt=[1,633],Qt=[1,634],zt=[1,635],Zt=[1,636],er=[1,642],tr=[1,643],rr=[1,644],nr=[1,645],ar=[2,287],sr=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ir=[2,359],or=[1,668],ur=[1,678],cr=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],lr=[1,694],hr=[1,703],dr=[1,702],fr=[2,4,5,10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],pr=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],br=[2,202],Er=[1,725],gr=[10,72,78,93,98,118,128,162,168,169,183,232,245,247,306,310,602,764],mr=[2,163],vr=[1,728],Sr=[2,4,5,112],Tr=[1,741],Ar=[1,760],yr=[1,740],Nr=[1,739],Cr=[1,734],Rr=[1,735],Or=[1,737],wr=[1,738],Ir=[1,742],xr=[1,743],Dr=[1,744],kr=[1,745],Lr=[1,746],$r=[1,747],Mr=[1,748],Ur=[1,749],_r=[1,750],Fr=[1,751],Pr=[1,752],qr=[1,753],Gr=[1,754],Vr=[1,755],Br=[1,756],jr=[1,757],Hr=[1,759],Jr=[1,761],Yr=[1,762],Wr=[1,763],Xr=[1,764],Kr=[1,765],Qr=[1,766],zr=[1,767],Zr=[1,770],en=[1,771],tn=[1,772],rn=[1,773],nn=[1,774],an=[1,775],sn=[1,776],on=[1,777],un=[1,778],cn=[1,779],ln=[1,780],hn=[1,781],dn=[74,89,189],fn=[10,74,78,154,187,230,297,306,310,343,356,368,369,373,374,602,764],pn=[1,798],bn=[10,74,78,300,306,310,602,764],En=[1,799],gn=[1,805],mn=[1,806],vn=[1,810],Sn=[10,74,78,306,310,602,764],Tn=[2,4,5,77,131,132,137,143,145,149,152,154,156,179,180,181,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,312,317,420,424],An=[10,72,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],yn=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],Nn=[2,4,5,132,296],Cn=[1,844],Rn=[10,74,76,78,306,310,602,764],On=[2,738],wn=[10,74,76,78,132,139,141,145,152,306,310,420,424,602,764],In=[2,1161],xn=[10,74,76,78,139,141,145,152,306,310,420,424,602,764],Dn=[10,74,76,78,139,141,145,306,310,420,424,602,764],kn=[10,74,78,139,141,306,310,602,764],Ln=[10,78,89,132,146,189,296,306,310,470,602,764],$n=[335,338,339],Mn=[2,764],Un=[1,869],_n=[1,870],Fn=[1,871],Pn=[1,872],qn=[1,881],Gn=[1,880],Vn=[164,166,334],Bn=[2,444],jn=[1,936],Hn=[2,4,5,77,131,156,290,291,292,293],Jn=[1,951],Yn=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Wn=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Xn=[2,375],Kn=[1,958],Qn=[306,308,310],zn=[74,300],Zn=[74,300,426],ea=[1,965],ta=[2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ra=[74,426],na=[1,978],aa=[1,977],sa=[1,984],ia=[10,72,78,93,98,118,128,162,168,169,232,245,247,306,310,602,764],oa=[1,1010],ua=[10,72,78,306,310,602,764],ca=[1,1016],la=[1,1017],ha=[1,1018],da=[2,4,5,10,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],fa=[1,1068],pa=[1,1067],ba=[1,1081],Ea=[1,1080],ga=[1,1088],ma=[10,72,74,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],va=[1,1119],Sa=[10,78,89,146,189,306,310,470,602,764],Ta=[1,1139],Aa=[1,1138],ya=[1,1137],Na=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ca=[1,1153],Ra=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Oa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],wa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ia=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],xa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Da=[2,406],ka=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],La=[2,285],$a=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ma=[10,78,306,310,602,764],Ua=[1,1189],_a=[10,77,78,143,145,152,181,302,306,310,420,424,602,764],Fa=[10,74,78,306,308,310,464,602,764],Pa=[1,1200],qa=[10,72,78,118,128,162,168,169,232,245,247,306,310,602,764],Ga=[10,72,74,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],Va=[2,4,5,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],Ba=[2,4,5,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],ja=[2,1085],Ha=[2,4,5,72,74,76,77,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],Ja=[1,1252],Ya=[10,74,78,128,306,308,310,464,602,764],Wa=[115,116,124],Xa=[2,584],Ka=[1,1280],Qa=[76,139],za=[2,724],Za=[1,1297],es=[1,1298],ts=[2,4,5,10,53,72,76,89,124,146,156,189,230,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],rs=[2,330],ns=[1,1322],as=[1,1336],ss=[1,1338],is=[2,487],os=[74,78],us=[10,306,308,310,464,602,764],cs=[10,72,78,118,162,168,169,232,245,247,306,310,602,764],ls=[1,1354],hs=[1,1358],ds=[1,1359],fs=[1,1361],ps=[1,1362],bs=[1,1363],Es=[1,1364],gs=[1,1365],ms=[1,1366],vs=[1,1367],Ss=[1,1368],Ts=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],As=[1,1393],ys=[10,72,78,118,162,168,169,245,247,306,310,602,764],Ns=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],Cs=[1,1490],Rs=[1,1492],Os=[2,4,5,77,143,145,152,156,181,290,291,292,293,302,420,424],ws=[1,1506],Is=[10,72,74,78,162,168,169,245,247,306,310,602,764],xs=[1,1524],Ds=[1,1526],ks=[1,1527],Ls=[1,1523],$s=[1,1522],Ms=[1,1521],Us=[1,1528],_s=[1,1518],Fs=[1,1519],Ps=[1,1520],qs=[1,1545],Gs=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],Vs=[1,1556],Bs=[1,1564],js=[1,1563],Hs=[10,72,78,162,168,169,245,247,306,310,602,764],Js=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],Ys=[2,4,5,10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],Ws=[1,1621],Xs=[1,1623],Ks=[1,1620],Qs=[1,1622],zs=[187,193,368,369,370,373],Zs=[2,515],ei=[1,1628],ti=[1,1647],ri=[10,72,78,162,168,169,306,310,602,764],ni=[1,1657],ai=[1,1658],si=[1,1659],ii=[1,1678],oi=[4,10,243,306,310,343,356,602,764],ui=[1,1726],ci=[10,72,74,78,118,162,168,169,239,245,247,306,310,602,764],li=[2,4,5,77],hi=[1,1820],di=[1,1832],fi=[1,1851],pi=[10,72,78,162,168,169,306,310,415,602,764],bi=[10,74,78,230,306,310,602,764],Ei={trace:function(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,NonReserved:6,LiteralWithSpaces:7,main:8,Statements:9,EOF:10,Statements_group0:11,AStatement:12,ExplainStatement:13,EXPLAIN:14,QUERY:15,PLAN:16,Statement:17,AlterTable:18,AttachDatabase:19,Call:20,CreateDatabase:21,CreateIndex:22,CreateGraph:23,CreateTable:24,CreateView:25,CreateEdge:26,CreateVertex:27,Declare:28,Delete:29,DetachDatabase:30,DropDatabase:31,DropIndex:32,DropTable:33,DropView:34,If:35,Insert:36,Merge:37,Reindex:38,RenameTable:39,Select:40,ShowCreateTable:41,ShowColumns:42,ShowDatabases:43,ShowIndex:44,ShowTables:45,TruncateTable:46,WithSelect:47,CreateTrigger:48,DropTrigger:49,BeginTransaction:50,CommitTransaction:51,RollbackTransaction:52,EndTransaction:53,UseDatabase:54,Update:55,JavaScript:56,Source:57,Assert:58,While:59,Continue:60,Break:61,BeginEnd:62,Print:63,Require:64,SetVariable:65,ExpressionStatement:66,AddRule:67,Query:68,Echo:69,CreateFunction:70,CreateAggregate:71,WITH:72,WithTablesList:73,COMMA:74,WithTable:75,AS:76,LPAR:77,RPAR:78,SelectClause:79,Select_option0:80,IntoClause:81,FromClause:82,Select_option1:83,WhereClause:84,GroupClause:85,OrderClause:86,LimitClause:87,UnionClause:88,SEARCH:89,Select_repetition0:90,Select_option2:91,PivotClause:92,PIVOT:93,Expression:94,FOR:95,PivotClause_option0:96,PivotClause_option1:97,UNPIVOT:98,IN:99,ColumnsList:100,PivotClause_option2:101,PivotClause2:102,AsList:103,AsLiteral:104,AsPart:105,RemoveClause:106,REMOVE:107,RemoveClause_option0:108,RemoveColumnsList:109,RemoveColumn:110,Column:111,LIKE:112,StringValue:113,ArrowDot:114,ARROW:115,DOT:116,SearchSelector:117,ORDER:118,BY:119,OrderExpressionsList:120,SearchSelector_option0:121,DOTDOT:122,CARET:123,EQ:124,SearchSelector_repetition_plus0:125,SearchSelector_repetition_plus1:126,SearchSelector_option1:127,WHERE:128,OF:129,CLASS:130,NUMBER:131,STRING:132,SLASH:133,VERTEX:134,EDGE:135,EXCLAMATION:136,SHARP:137,MODULO:138,GT:139,LT:140,GTGT:141,LTLT:142,DOLLAR:143,Json:144,AT:145,SET:146,SetColumnsList:147,TO:148,VALUE:149,ROW:150,ExprList:151,COLON:152,PlusStar:153,NOT:154,SearchSelector_repetition2:155,IF:156,SearchSelector_repetition3:157,Aggregator:158,SearchSelector_repetition4:159,SearchSelector_group0:160,SearchSelector_repetition5:161,UNION:162,SearchSelectorList:163,ALL:164,SearchSelector_repetition6:165,ANY:166,SearchSelector_repetition7:167,INTERSECT:168,EXCEPT:169,AND:170,OR:171,PATH:172,RETURN:173,ResultColumns:174,REPEAT:175,SearchSelector_repetition8:176,SearchSelectorList_repetition0:177,SearchSelectorList_repetition1:178,PLUS:179,STAR:180,QUESTION:181,SearchFrom:182,FROM:183,SelectModifier:184,DISTINCT:185,TopClause:186,UNIQUE:187,SelectClause_option0:188,SELECT:189,COLUMN:190,MATRIX:191,TEXTSTRING:192,INDEX:193,RECORDSET:194,TOP:195,NumValue:196,TopClause_option0:197,INTO:198,Table:199,FuncValue:200,ParamValue:201,VarValue:202,FromTablesList:203,JoinTablesList:204,ApplyClause:205,CROSS:206,APPLY:207,OUTER:208,FromTable:209,FromTable_option0:210,FromTable_option1:211,INDEXED:212,INSERTED:213,FromString:214,JoinTable:215,JoinMode:216,JoinTableAs:217,OnClause:218,JoinTableAs_option0:219,JoinTableAs_option1:220,JoinModeMode:221,NATURAL:222,JOIN:223,INNER:224,LEFT:225,RIGHT:226,FULL:227,SEMI:228,ANTI:229,ON:230,USING:231,GROUP:232,GroupExpressionsList:233,HavingClause:234,GroupExpression:235,GROUPING:236,ROLLUP:237,CUBE:238,HAVING:239,CORRESPONDING:240,OrderExpression:241,DIRECTION:242,COLLATE:243,NOCASE:244,LIMIT:245,OffsetClause:246,OFFSET:247,LimitClause_option0:248,FETCH:249,LimitClause_option1:250,LimitClause_option2:251,LimitClause_option3:252,ResultColumn:253,Star:254,AggrValue:255,Op:256,LogicValue:257,NullValue:258,ExistsValue:259,CaseValue:260,CastClause:261,ArrayValue:262,NewClause:263,Expression_group0:264,CURRENT_TIMESTAMP:265,JAVASCRIPT:266,CREATE:267,FUNCTION:268,AGGREGATE:269,NEW:270,CAST:271,ColumnType:272,CONVERT:273,PrimitiveValue:274,OverClause:275,OVER:276,OverPartitionClause:277,OverOrderByClause:278,PARTITION:279,SUM:280,COUNT:281,MIN:282,MAX:283,AVG:284,FIRST:285,LAST:286,AGGR:287,ARRAY:288,FuncValue_option0:289,REPLACE:290,DATEADD:291,DATEDIFF:292,INTERVAL:293,TRUE:294,FALSE:295,NSTRING:296,NULL:297,EXISTS:298,ARRAYLBRA:299,RBRA:300,ParamValue_group0:301,BRAQUESTION:302,CASE:303,WhensList:304,ElseClause:305,END:306,When:307,WHEN:308,THEN:309,ELSE:310,REGEXP:311,TILDA:312,GLOB:313,ESCAPE:314,NOT_LIKE:315,BARBAR:316,MINUS:317,AMPERSAND:318,BAR:319,GE:320,LE:321,EQEQ:322,EQEQEQ:323,NE:324,NEEQEQ:325,NEEQEQEQ:326,CondOp:327,AllSome:328,ColFunc:329,BETWEEN:330,NOT_BETWEEN:331,IS:332,DOUBLECOLON:333,SOME:334,UPDATE:335,SetColumn:336,SetColumn_group0:337,DELETE:338,INSERT:339,Into:340,Values:341,ValuesListsList:342,DEFAULT:343,VALUES:344,ValuesList:345,Value:346,DateValue:347,TemporaryClause:348,TableClass:349,IfNotExists:350,CreateTableDefClause:351,CreateTableOptionsClause:352,TABLE:353,CreateTableOptions:354,CreateTableOption:355,IDENTITY:356,TEMP:357,ColumnDefsList:358,ConstraintsList:359,Constraint:360,ConstraintName:361,PrimaryKey:362,ForeignKey:363,UniqueKey:364,IndexKey:365,Check:366,CONSTRAINT:367,CHECK:368,PRIMARY:369,KEY:370,PrimaryKey_option0:371,ColsList:372,FOREIGN:373,REFERENCES:374,ForeignKey_option0:375,OnForeignKeyClause:376,ParColsList:377,OnDeleteClause:378,OnUpdateClause:379,NO:380,ACTION:381,UniqueKey_option0:382,UniqueKey_option1:383,ColumnDef:384,ColumnConstraintsClause:385,ColumnConstraints:386,SingularColumnType:387,NumberMax:388,ENUM:389,MAXNUM:390,ColumnConstraintsList:391,ColumnConstraint:392,ParLiteral:393,ColumnConstraint_option0:394,ColumnConstraint_option1:395,DROP:396,DropTable_group0:397,IfExists:398,TablesList:399,ALTER:400,RENAME:401,ADD:402,MODIFY:403,ATTACH:404,DATABASE:405,DETACH:406,AsClause:407,USE:408,SHOW:409,VIEW:410,CreateView_option0:411,CreateView_option1:412,SubqueryRestriction:413,READ:414,ONLY:415,OPTION:416,SOURCE:417,ASSERT:418,JsonObject:419,ATLBRA:420,JsonArray:421,JsonValue:422,JsonPrimitiveValue:423,LCUR:424,JsonPropertiesList:425,RCUR:426,JsonElementsList:427,JsonProperty:428,OnOff:429,SetPropsList:430,AtDollar:431,SetProp:432,OFF:433,COMMIT:434,TRANSACTION:435,ROLLBACK:436,BEGIN:437,ElseStatement:438,WHILE:439,CONTINUE:440,BREAK:441,PRINT:442,REQUIRE:443,StringValuesList:444,PluginsList:445,Plugin:446,ECHO:447,DECLARE:448,DeclaresList:449,DeclareItem:450,TRUNCATE:451,MERGE:452,MergeInto:453,MergeUsing:454,MergeOn:455,MergeMatchedList:456,OutputClause:457,MergeMatched:458,MergeNotMatched:459,MATCHED:460,MergeMatchedAction:461,MergeNotMatchedAction:462,TARGET:463,OUTPUT:464,CreateVertex_option0:465,CreateVertex_option1:466,CreateVertex_option2:467,CreateVertexSet:468,SharpValue:469,CONTENT:470,CreateEdge_option0:471,GRAPH:472,GraphList:473,GraphVertexEdge:474,GraphElement:475,GraphVertexEdge_option0:476,GraphVertexEdge_option1:477,GraphElementVar:478,GraphVertexEdge_option2:479,GraphVertexEdge_option3:480,GraphVertexEdge_option4:481,GraphVar:482,GraphAsClause:483,GraphAtClause:484,GraphElement2:485,GraphElement2_option0:486,GraphElement2_option1:487,GraphElement2_option2:488,GraphElement2_option3:489,GraphElement_option0:490,GraphElement_option1:491,GraphElement_option2:492,SharpLiteral:493,GraphElement_option3:494,GraphElement_option4:495,GraphElement_option5:496,ColonLiteral:497,DeleteVertex:498,DeleteVertex_option0:499,DeleteEdge:500,DeleteEdge_option0:501,DeleteEdge_option1:502,DeleteEdge_option2:503,Term:504,COLONDASH:505,TermsList:506,QUESTIONDASH:507,CALL:508,TRIGGER:509,BeforeAfter:510,InsertDeleteUpdate:511,CreateTrigger_option0:512,CreateTrigger_option1:513,BEFORE:514,AFTER:515,INSTEAD:516,REINDEX:517,A:518,ABSENT:519,ABSOLUTE:520,ACCORDING:521,ADA:522,ADMIN:523,ALWAYS:524,ASC:525,ASSERTION:526,ASSIGNMENT:527,ATTRIBUTE:528,ATTRIBUTES:529,BASE64:530,BERNOULLI:531,BLOCKED:532,BOM:533,BREADTH:534,C:535,CASCADE:536,CATALOG:537,CATALOG_NAME:538,CHAIN:539,CHARACTERISTICS:540,CHARACTERS:541,CHARACTER_SET_CATALOG:542,CHARACTER_SET_NAME:543,CHARACTER_SET_SCHEMA:544,CLASS_ORIGIN:545,COBOL:546,COLLATION:547,COLLATION_CATALOG:548,COLLATION_NAME:549,COLLATION_SCHEMA:550,COLUMNS:551,COLUMN_NAME:552,COMMAND_FUNCTION:553,COMMAND_FUNCTION_CODE:554,COMMITTED:555,CONDITION_NUMBER:556,CONNECTION:557,CONNECTION_NAME:558,CONSTRAINTS:559,CONSTRAINT_CATALOG:560,CONSTRAINT_NAME:561,CONSTRAINT_SCHEMA:562,CONSTRUCTOR:563,CONTROL:564,CURSOR_NAME:565,DATA:566,DATETIME_INTERVAL_CODE:567,DATETIME_INTERVAL_PRECISION:568,DB:569,DEFAULTS:570,DEFERRABLE:571,DEFERRED:572,DEFINED:573,DEFINER:574,DEGREE:575,DEPTH:576,DERIVED:577,DESC:578,DESCRIPTOR:579,DIAGNOSTICS:580,DISPATCH:581,DOCUMENT:582,DOMAIN:583,DYNAMIC_FUNCTION:584,DYNAMIC_FUNCTION_CODE:585,EMPTY:586,ENCODING:587,ENFORCED:588,EXCLUDE:589,EXCLUDING:590,EXPRESSION:591,FILE:592,FINAL:593,FLAG:594,FOLLOWING:595,FORTRAN:596,FOUND:597,FS:598,G:599,GENERAL:600,GENERATED:601,GO:602,GOTO:603,GRANTED:604,HEX:605,HIERARCHY:606,ID:607,IGNORE:608,IMMEDIATE:609,IMMEDIATELY:610,IMPLEMENTATION:611,INCLUDING:612,INCREMENT:613,INDENT:614,INITIALLY:615,INPUT:616,INSTANCE:617,INSTANTIABLE:618,INTEGRITY:619,INVOKER:620,ISOLATION:621,K:622,KEY_MEMBER:623,KEY_TYPE:624,LENGTH:625,LEVEL:626,LIBRARY:627,LINK:628,LOCATION:629,LOCATOR:630,M:631,MAP:632,MAPPING:633,MAXVALUE:634,MESSAGE_LENGTH:635,MESSAGE_OCTET_LENGTH:636,MESSAGE_TEXT:637,MINVALUE:638,MORE:639,MUMPS:640,NAME:641,NAMES:642,NAMESPACE:643,NESTING:644,NEXT:645,NFC:646,NFD:647,NFKC:648,NFKD:649,NIL:650,NORMALIZED:651,NULLABLE:652,NULLS:653,OBJECT:654,OCTETS:655,OPTIONS:656,ORDERING:657,ORDINALITY:658,OTHERS:659,OVERRIDING:660,P:661,PAD:662,PARAMETER_MODE:663,PARAMETER_NAME:664,PARAMETER_ORDINAL_POSITION:665,PARAMETER_SPECIFIC_CATALOG:666,PARAMETER_SPECIFIC_NAME:667,PARAMETER_SPECIFIC_SCHEMA:668,PARTIAL:669,PASCAL:670,PASSING:671,PASSTHROUGH:672,PERMISSION:673,PLACING:674,PLI:675,PRECEDING:676,PRESERVE:677,PRIOR:678,PRIVILEGES:679,PUBLIC:680,RECOVERY:681,RELATIVE:682,REPEATABLE:683,REQUIRING:684,RESPECT:685,RESTART:686,RESTORE:687,RESTRICT:688,RETURNED_CARDINALITY:689,RETURNED_LENGTH:690,RETURNED_OCTET_LENGTH:691,RETURNED_SQLSTATE:692,RETURNING:693,ROLE:694,ROUTINE:695,ROUTINE_CATALOG:696,ROUTINE_NAME:697,ROUTINE_SCHEMA:698,ROW_COUNT:699,SCALE:700,SCHEMA:701,SCHEMA_NAME:702,SCOPE_CATALOG:703,SCOPE_NAME:704,SCOPE_SCHEMA:705,SECTION:706,SECURITY:707,SELECTIVE:708,SELF:709,SEQUENCE:710,SERIALIZABLE:711,SERVER:712,SERVER_NAME:713,SESSION:714,SETS:715,SIMPLE:716,SIZE:717,SPACE:718,SPECIFIC_NAME:719,STANDALONE:720,STATE:721,STATEMENT:722,STRIP:723,STRUCTURE:724,STYLE:725,SUBCLASS_ORIGIN:726,T:727,TABLE_NAME:728,TEMPORARY:729,TIES:730,TOKEN:731,TOP_LEVEL_COUNT:732,TRANSACTIONS_COMMITTED:733,TRANSACTIONS_ROLLED_BACK:734,TRANSACTION_ACTIVE:735,TRANSFORM:736,TRANSFORMS:737,TRIGGER_CATALOG:738,TRIGGER_NAME:739,TRIGGER_SCHEMA:740,TYPE:741,UNBOUNDED:742,UNCOMMITTED:743,UNDER:744,UNLINK:745,UNNAMED:746,UNTYPED:747,URI:748,USAGE:749,USER_DEFINED_TYPE_CATALOG:750,USER_DEFINED_TYPE_CODE:751,USER_DEFINED_TYPE_NAME:752,USER_DEFINED_TYPE_SCHEMA:753,VALID:754,VERSION:755,WHITESPACE:756,WORK:757,WRAPPER:758,WRITE:759,XMLDECLARATION:760,XMLSCHEMA:761,YES:762,ZONE:763,SEMICOLON:764,PERCENT:765,ROWS:766,FuncValue_option0_group0:767,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",10:"EOF",14:"EXPLAIN",15:"QUERY",16:"PLAN",53:"EndTransaction",72:"WITH",74:"COMMA",76:"AS",77:"LPAR",78:"RPAR",89:"SEARCH",93:"PIVOT",95:"FOR",98:"UNPIVOT",99:"IN",107:"REMOVE",112:"LIKE",115:"ARROW",116:"DOT",118:"ORDER",119:"BY",122:"DOTDOT",123:"CARET",124:"EQ",128:"WHERE",129:"OF",130:"CLASS",131:"NUMBER",132:"STRING",133:"SLASH",134:"VERTEX",135:"EDGE",136:"EXCLAMATION",137:"SHARP",138:"MODULO",139:"GT",140:"LT",141:"GTGT",142:"LTLT",143:"DOLLAR",145:"AT",146:"SET",148:"TO",149:"VALUE",150:"ROW",152:"COLON",154:"NOT",156:"IF",162:"UNION",164:"ALL",166:"ANY",168:"INTERSECT",169:"EXCEPT",170:"AND",171:"OR",172:"PATH",173:"RETURN",175:"REPEAT",179:"PLUS",180:"STAR",181:"QUESTION",183:"FROM",185:"DISTINCT",187:"UNIQUE",189:"SELECT",190:"COLUMN",191:"MATRIX",192:"TEXTSTRING",193:"INDEX",194:"RECORDSET",195:"TOP",198:"INTO",206:"CROSS",207:"APPLY",208:"OUTER",212:"INDEXED",213:"INSERTED",222:"NATURAL",223:"JOIN",224:"INNER",225:"LEFT",226:"RIGHT",227:"FULL",228:"SEMI",229:"ANTI",230:"ON",231:"USING",232:"GROUP",236:"GROUPING",237:"ROLLUP",238:"CUBE",239:"HAVING",240:"CORRESPONDING",242:"DIRECTION",243:"COLLATE",244:"NOCASE",245:"LIMIT",247:"OFFSET",249:"FETCH",265:"CURRENT_TIMESTAMP",266:"JAVASCRIPT",267:"CREATE",268:"FUNCTION",269:"AGGREGATE",270:"NEW",271:"CAST",273:"CONVERT",276:"OVER",279:"PARTITION",280:"SUM",281:"COUNT",282:"MIN",283:"MAX",284:"AVG",285:"FIRST",286:"LAST",287:"AGGR",288:"ARRAY",290:"REPLACE",291:"DATEADD",292:"DATEDIFF",293:"INTERVAL",294:"TRUE",295:"FALSE",296:"NSTRING",297:"NULL",298:"EXISTS",299:"ARRAYLBRA",300:"RBRA",302:"BRAQUESTION",303:"CASE",306:"END",308:"WHEN",309:"THEN",310:"ELSE",311:"REGEXP",312:"TILDA",313:"GLOB",314:"ESCAPE",315:"NOT_LIKE",316:"BARBAR",317:"MINUS",318:"AMPERSAND",319:"BAR",320:"GE",321:"LE",322:"EQEQ",323:"EQEQEQ",324:"NE",325:"NEEQEQ",326:"NEEQEQEQ",330:"BETWEEN",331:"NOT_BETWEEN",332:"IS",333:"DOUBLECOLON",334:"SOME",335:"UPDATE",338:"DELETE",339:"INSERT",343:"DEFAULT",344:"VALUES",347:"DateValue",353:"TABLE",356:"IDENTITY",357:"TEMP",367:"CONSTRAINT",368:"CHECK",369:"PRIMARY",370:"KEY",373:"FOREIGN",374:"REFERENCES",380:"NO",381:"ACTION",386:"ColumnConstraints",389:"ENUM",390:"MAXNUM",396:"DROP",400:"ALTER",401:"RENAME",402:"ADD",403:"MODIFY",404:"ATTACH",405:"DATABASE",406:"DETACH",408:"USE",409:"SHOW",410:"VIEW",414:"READ",415:"ONLY",416:"OPTION",417:"SOURCE",418:"ASSERT",420:"ATLBRA",424:"LCUR",426:"RCUR",433:"OFF",434:"COMMIT",435:"TRANSACTION",436:"ROLLBACK",437:"BEGIN",439:"WHILE",440:"CONTINUE",441:"BREAK",442:"PRINT",443:"REQUIRE",447:"ECHO",448:"DECLARE",451:"TRUNCATE",452:"MERGE",460:"MATCHED",463:"TARGET",464:"OUTPUT",470:"CONTENT",472:"GRAPH",505:"COLONDASH",507:"QUESTIONDASH",508:"CALL",509:"TRIGGER",514:"BEFORE",515:"AFTER",516:"INSTEAD",517:"REINDEX",518:"A",519:"ABSENT",520:"ABSOLUTE",521:"ACCORDING",522:"ADA",523:"ADMIN",524:"ALWAYS",525:"ASC",526:"ASSERTION",527:"ASSIGNMENT",528:"ATTRIBUTE",529:"ATTRIBUTES",530:"BASE64",531:"BERNOULLI",532:"BLOCKED",533:"BOM",534:"BREADTH",535:"C",536:"CASCADE",537:"CATALOG",538:"CATALOG_NAME",539:"CHAIN",540:"CHARACTERISTICS",541:"CHARACTERS",542:"CHARACTER_SET_CATALOG",543:"CHARACTER_SET_NAME",544:"CHARACTER_SET_SCHEMA",545:"CLASS_ORIGIN",546:"COBOL",547:"COLLATION",548:"COLLATION_CATALOG",549:"COLLATION_NAME",550:"COLLATION_SCHEMA",551:"COLUMNS",552:"COLUMN_NAME",
553:"COMMAND_FUNCTION",554:"COMMAND_FUNCTION_CODE",555:"COMMITTED",556:"CONDITION_NUMBER",557:"CONNECTION",558:"CONNECTION_NAME",559:"CONSTRAINTS",560:"CONSTRAINT_CATALOG",561:"CONSTRAINT_NAME",562:"CONSTRAINT_SCHEMA",563:"CONSTRUCTOR",564:"CONTROL",565:"CURSOR_NAME",566:"DATA",567:"DATETIME_INTERVAL_CODE",568:"DATETIME_INTERVAL_PRECISION",569:"DB",570:"DEFAULTS",571:"DEFERRABLE",572:"DEFERRED",573:"DEFINED",574:"DEFINER",575:"DEGREE",576:"DEPTH",577:"DERIVED",578:"DESC",579:"DESCRIPTOR",580:"DIAGNOSTICS",581:"DISPATCH",582:"DOCUMENT",583:"DOMAIN",584:"DYNAMIC_FUNCTION",585:"DYNAMIC_FUNCTION_CODE",586:"EMPTY",587:"ENCODING",588:"ENFORCED",589:"EXCLUDE",590:"EXCLUDING",591:"EXPRESSION",592:"FILE",593:"FINAL",594:"FLAG",595:"FOLLOWING",596:"FORTRAN",597:"FOUND",598:"FS",599:"G",600:"GENERAL",601:"GENERATED",602:"GO",603:"GOTO",604:"GRANTED",605:"HEX",606:"HIERARCHY",607:"ID",608:"IGNORE",609:"IMMEDIATE",610:"IMMEDIATELY",611:"IMPLEMENTATION",612:"INCLUDING",613:"INCREMENT",614:"INDENT",615:"INITIALLY",616:"INPUT",617:"INSTANCE",618:"INSTANTIABLE",619:"INTEGRITY",620:"INVOKER",621:"ISOLATION",622:"K",623:"KEY_MEMBER",624:"KEY_TYPE",625:"LENGTH",626:"LEVEL",627:"LIBRARY",628:"LINK",629:"LOCATION",630:"LOCATOR",631:"M",632:"MAP",633:"MAPPING",634:"MAXVALUE",635:"MESSAGE_LENGTH",636:"MESSAGE_OCTET_LENGTH",637:"MESSAGE_TEXT",638:"MINVALUE",639:"MORE",640:"MUMPS",641:"NAME",642:"NAMES",643:"NAMESPACE",644:"NESTING",645:"NEXT",646:"NFC",647:"NFD",648:"NFKC",649:"NFKD",650:"NIL",651:"NORMALIZED",652:"NULLABLE",653:"NULLS",654:"OBJECT",655:"OCTETS",656:"OPTIONS",657:"ORDERING",658:"ORDINALITY",659:"OTHERS",660:"OVERRIDING",661:"P",662:"PAD",663:"PARAMETER_MODE",664:"PARAMETER_NAME",665:"PARAMETER_ORDINAL_POSITION",666:"PARAMETER_SPECIFIC_CATALOG",667:"PARAMETER_SPECIFIC_NAME",668:"PARAMETER_SPECIFIC_SCHEMA",669:"PARTIAL",670:"PASCAL",671:"PASSING",672:"PASSTHROUGH",673:"PERMISSION",674:"PLACING",675:"PLI",676:"PRECEDING",677:"PRESERVE",678:"PRIOR",679:"PRIVILEGES",680:"PUBLIC",681:"RECOVERY",682:"RELATIVE",683:"REPEATABLE",684:"REQUIRING",685:"RESPECT",686:"RESTART",687:"RESTORE",688:"RESTRICT",689:"RETURNED_CARDINALITY",690:"RETURNED_LENGTH",691:"RETURNED_OCTET_LENGTH",692:"RETURNED_SQLSTATE",693:"RETURNING",694:"ROLE",695:"ROUTINE",696:"ROUTINE_CATALOG",697:"ROUTINE_NAME",698:"ROUTINE_SCHEMA",699:"ROW_COUNT",700:"SCALE",701:"SCHEMA",702:"SCHEMA_NAME",703:"SCOPE_CATALOG",704:"SCOPE_NAME",705:"SCOPE_SCHEMA",706:"SECTION",707:"SECURITY",708:"SELECTIVE",709:"SELF",710:"SEQUENCE",711:"SERIALIZABLE",712:"SERVER",713:"SERVER_NAME",714:"SESSION",715:"SETS",716:"SIMPLE",717:"SIZE",718:"SPACE",719:"SPECIFIC_NAME",720:"STANDALONE",721:"STATE",722:"STATEMENT",723:"STRIP",724:"STRUCTURE",725:"STYLE",726:"SUBCLASS_ORIGIN",727:"T",728:"TABLE_NAME",729:"TEMPORARY",730:"TIES",731:"TOKEN",732:"TOP_LEVEL_COUNT",733:"TRANSACTIONS_COMMITTED",734:"TRANSACTIONS_ROLLED_BACK",735:"TRANSACTION_ACTIVE",736:"TRANSFORM",737:"TRANSFORMS",738:"TRIGGER_CATALOG",739:"TRIGGER_NAME",740:"TRIGGER_SCHEMA",741:"TYPE",742:"UNBOUNDED",743:"UNCOMMITTED",744:"UNDER",745:"UNLINK",746:"UNNAMED",747:"UNTYPED",748:"URI",749:"USAGE",750:"USER_DEFINED_TYPE_CATALOG",751:"USER_DEFINED_TYPE_CODE",752:"USER_DEFINED_TYPE_NAME",753:"USER_DEFINED_TYPE_SCHEMA",754:"VALID",755:"VERSION",756:"WHITESPACE",757:"WORK",758:"WRAPPER",759:"WRITE",760:"XMLDECLARATION",761:"XMLSCHEMA",762:"YES",763:"ZONE",764:"SEMICOLON",765:"PERCENT",766:"ROWS"},productions_:[0,[3,1],[3,1],[3,2],[7,1],[7,2],[8,2],[9,3],[9,1],[9,1],[13,2],[13,4],[12,1],[17,0],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[47,3],[73,3],[73,1],[75,5],[40,10],[40,4],[92,8],[92,11],[102,4],[104,2],[104,1],[103,3],[103,1],[105,1],[105,3],[106,3],[109,3],[109,1],[110,1],[110,2],[114,1],[114,1],[117,1],[117,5],[117,5],[117,1],[117,2],[117,1],[117,2],[117,2],[117,3],[117,4],[117,4],[117,4],[117,4],[117,4],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,2],[117,2],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,3],[117,4],[117,3],[117,1],[117,4],[117,2],[117,2],[117,4],[117,4],[117,4],[117,4],[117,4],[117,5],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,6],[163,3],[163,1],[153,1],[153,1],[153,1],[182,2],[79,4],[79,4],[79,4],[79,3],[184,1],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[186,3],[186,4],[186,0],[81,0],[81,2],[81,2],[81,2],[81,2],[81,2],[82,2],[82,3],[82,5],[82,0],[205,6],[205,7],[205,6],[205,7],[203,1],[203,3],[209,4],[209,5],[209,3],[209,3],[209,2],[209,3],[209,1],[209,3],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,2],[209,3],[214,1],[199,3],[199,1],[204,2],[204,2],[204,1],[204,1],[215,3],[217,1],[217,2],[217,3],[217,3],[217,2],[217,3],[217,4],[217,5],[217,1],[217,2],[217,3],[217,1],[217,2],[217,3],[216,1],[216,2],[221,1],[221,2],[221,2],[221,3],[221,2],[221,3],[221,2],[221,3],[221,2],[221,2],[221,2],[218,2],[218,2],[218,0],[84,0],[84,2],[85,0],[85,4],[233,1],[233,3],[235,5],[235,4],[235,4],[235,1],[234,0],[234,2],[88,0],[88,2],[88,3],[88,2],[88,2],[88,3],[88,4],[88,3],[88,3],[86,0],[86,3],[120,1],[120,3],[241,1],[241,2],[241,3],[241,4],[87,0],[87,3],[87,8],[246,0],[246,2],[174,3],[174,1],[253,3],[253,2],[253,3],[253,2],[253,3],[253,2],[253,1],[254,5],[254,3],[254,1],[111,5],[111,3],[111,3],[111,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,3],[94,3],[94,3],[94,1],[94,1],[56,1],[70,5],[71,5],[263,2],[263,2],[261,6],[261,8],[261,6],[261,8],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[255,5],[255,6],[255,6],[275,0],[275,4],[275,4],[275,5],[277,3],[278,3],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[200,5],[200,3],[200,4],[200,4],[200,8],[200,8],[200,8],[200,8],[200,3],[151,1],[151,3],[196,1],[257,1],[257,1],[113,1],[113,1],[258,1],[202,2],[259,4],[262,3],[201,2],[201,2],[201,1],[201,1],[260,5],[260,4],[304,2],[304,1],[307,4],[305,2],[305,0],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,6],[256,6],[256,3],[256,3],[256,2],[256,2],[256,2],[256,2],[256,2],[256,3],[256,5],[256,6],[256,5],[256,6],[256,4],[256,5],[256,3],[256,4],[256,3],[256,4],[256,3],[256,3],[256,3],[256,3],[256,3],[329,1],[329,1],[329,4],[327,1],[327,1],[327,1],[327,1],[327,1],[327,1],[328,1],[328,1],[328,1],[55,6],[55,4],[147,1],[147,3],[336,3],[336,4],[29,5],[29,3],[36,5],[36,4],[36,7],[36,6],[36,5],[36,4],[36,5],[36,8],[36,7],[36,4],[36,6],[36,7],[341,1],[341,1],[340,0],[340,1],[342,3],[342,1],[342,1],[342,5],[342,3],[342,3],[345,1],[345,3],[346,1],[346,1],[346,1],[346,1],[346,1],[346,1],[100,1],[100,3],[24,9],[24,5],[349,1],[349,1],[352,0],[352,1],[354,2],[354,1],[355,1],[355,3],[355,3],[355,3],[348,0],[348,1],[350,0],[350,3],[351,3],[351,1],[351,2],[359,1],[359,3],[360,2],[360,2],[360,2],[360,2],[360,2],[361,0],[361,2],[366,4],[362,6],[363,9],[377,3],[376,0],[376,2],[378,4],[379,4],[364,6],[365,5],[365,5],[372,1],[372,1],[372,3],[372,3],[358,1],[358,3],[384,3],[384,2],[384,1],[387,6],[387,4],[387,1],[387,4],[272,2],[272,1],[388,1],[388,1],[385,0],[385,1],[391,2],[391,1],[393,3],[392,2],[392,5],[392,3],[392,6],[392,1],[392,2],[392,4],[392,2],[392,1],[392,2],[392,1],[392,1],[392,3],[392,5],[33,4],[399,3],[399,1],[398,0],[398,2],[18,6],[18,6],[18,6],[18,8],[18,6],[39,5],[19,4],[19,7],[19,6],[19,9],[30,3],[21,4],[21,6],[21,9],[21,6],[407,0],[407,2],[54,3],[54,2],[31,4],[31,5],[31,5],[22,8],[22,9],[32,3],[43,2],[43,4],[43,3],[43,5],[45,2],[45,4],[45,4],[45,6],[42,4],[42,6],[44,4],[44,6],[41,4],[41,6],[25,11],[25,8],[413,3],[413,3],[413,5],[34,4],[66,2],[57,2],[58,2],[58,2],[58,4],[144,4],[144,2],[144,2],[144,2],[144,2],[144,1],[144,2],[144,2],[422,1],[422,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,3],[419,3],[419,4],[419,2],[421,2],[421,3],[421,1],[425,3],[425,1],[428,3],[428,3],[428,3],[427,3],[427,1],[65,4],[65,3],[65,4],[65,5],[65,5],[65,6],[431,1],[431,1],[430,3],[430,2],[432,1],[432,1],[432,3],[429,1],[429,1],[51,2],[52,2],[50,2],[35,4],[35,3],[438,2],[59,3],[60,1],[61,1],[62,3],[63,2],[63,2],[64,2],[64,2],[446,1],[446,1],[69,2],[444,3],[444,1],[445,3],[445,1],[28,2],[449,1],[449,3],[450,3],[450,4],[450,5],[450,6],[46,3],[37,6],[453,1],[453,2],[454,2],[455,2],[456,2],[456,2],[456,1],[456,1],[458,4],[458,6],[461,1],[461,3],[459,5],[459,7],[459,7],[459,9],[459,7],[459,9],[462,3],[462,6],[462,3],[462,6],[457,0],[457,2],[457,5],[457,4],[457,7],[27,6],[469,2],[468,0],[468,2],[468,2],[468,1],[26,8],[23,3],[23,4],[473,3],[473,1],[474,3],[474,7],[474,6],[474,3],[474,4],[478,1],[478,1],[482,2],[483,3],[484,2],[485,4],[475,4],[475,3],[475,2],[475,1],[497,2],[493,2],[493,2],[498,4],[500,6],[67,3],[67,2],[506,3],[506,1],[504,1],[504,4],[68,2],[20,2],[48,9],[48,8],[48,9],[510,0],[510,1],[510,1],[510,1],[510,2],[511,1],[511,1],[511,1],[49,3],[38,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[11,1],[11,1],[80,0],[80,1],[83,0],[83,1],[90,0],[90,2],[91,0],[91,1],[96,0],[96,1],[97,0],[97,1],[101,0],[101,1],[108,0],[108,1],[121,0],[121,1],[125,1],[125,2],[126,1],[126,2],[127,0],[127,1],[155,0],[155,2],[157,0],[157,2],[159,0],[159,2],[160,1],[160,1],[161,0],[161,2],[165,0],[165,2],[167,0],[167,2],[176,0],[176,2],[177,0],[177,2],[178,0],[178,2],[188,0],[188,1],[197,0],[197,1],[210,0],[210,1],[211,0],[211,1],[219,0],[219,1],[220,0],[220,1],[248,0],[248,1],[250,0],[250,1],[251,0],[251,1],[252,0],[252,1],[264,1],[264,1],[767,1],[767,1],[289,0],[289,1],[301,1],[301,1],[337,1],[337,1],[371,0],[371,1],[375,0],[375,1],[382,0],[382,1],[383,0],[383,1],[394,0],[394,1],[395,0],[395,1],[397,1],[397,1],[411,0],[411,1],[412,0],[412,1],[465,0],[465,1],[466,0],[466,1],[467,0],[467,1],[471,0],[471,1],[476,0],[476,1],[477,0],[477,1],[479,0],[479,1],[480,0],[480,1],[481,0],[481,1],[486,0],[486,1],[487,0],[487,1],[488,0],[488,1],[489,0],[489,1],[490,0],[490,1],[491,0],[491,1],[492,0],[492,1],[494,0],[494,1],[495,0],[495,1],[496,0],[496,1],[499,0],[499,2],[501,0],[501,2],[502,0],[502,2],[503,0],[503,2],[512,0],[512,1],[513,0],[513,1]],performAction:function(e,t,r,n,a,s,i){var o=s.length-1;switch(a){case 1:T.options.casesensitive?this.$=s[o]:this.$=s[o].toLowerCase();break;case 2:this.$=O(s[o].substr(1,s[o].length-2));break;case 3:this.$=s[o].toLowerCase();break;case 4:this.$=s[o];break;case 5:this.$=s[o]?s[o-1]+" "+s[o]:s[o-1];break;case 6:return new n.Statements({statements:s[o-1]});case 7:this.$=s[o-2],s[o]&&s[o-2].push(s[o]);break;case 8:case 9:case 70:case 80:case 85:case 143:case 177:case 205:case 206:case 242:case 261:case 273:case 354:case 372:case 451:case 474:case 475:case 479:case 487:case 528:case 529:case 566:case 649:case 659:case 683:case 685:case 687:case 701:case 702:case 732:case 756:this.$=[s[o]];break;case 10:case 11:this.$=s[o],s[o].explain=!0;break;case 12:this.$=s[o],n.exists&&(this.$.exists=n.exists),delete n.exists,n.queries&&(this.$.queries=n.queries),delete n.queries;break;case 13:case 162:case 172:case 237:case 238:case 240:case 248:case 250:case 259:case 267:case 270:case 375:case 491:case 501:case 503:case 515:case 521:case 522:case 567:this.$=void 0;break;case 68:this.$=new n.WithSelect({withs:s[o-1],select:s[o]});break;case 69:case 565:s[o-2].push(s[o]),this.$=s[o-2];break;case 71:this.$={name:s[o-4],select:s[o-1]};break;case 72:n.extend(this.$,s[o-9]),n.extend(this.$,s[o-8]),n.extend(this.$,s[o-7]),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-5]),n.extend(this.$,s[o-4]),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]),this.$=s[o-9];break;case 73:this.$=new n.Search({selectors:s[o-2],from:s[o]}),n.extend(this.$,s[o-1]);break;case 74:this.$={pivot:{expr:s[o-5],columnid:s[o-3],inlist:s[o-2],as:s[o]}};break;case 75:this.$={unpivot:{tocolumnid:s[o-8],forcolumnid:s[o-6],inlist:s[o-3],as:s[o]}};break;case 76:case 520:case 549:case 585:case 619:case 636:case 637:case 640:case 662:this.$=s[o-1];break;case 77:case 78:case 86:case 147:case 185:case 247:case 280:case 288:case 289:case 290:case 291:case 292:case 293:case 294:case 295:case 296:case 297:case 298:case 299:case 300:case 301:case 304:case 305:case 320:case 321:case 322:case 323:case 324:case 325:case 374:case 440:case 441:case 442:case 443:case 444:case 445:case 516:case 542:case 546:case 548:case 623:case 624:case 625:case 626:case 627:case 628:case 632:case 634:case 635:case 644:case 660:case 661:case 723:case 738:case 739:case 741:case 742:case 748:case 749:this.$=s[o];break;case 79:case 84:case 731:case 755:this.$=s[o-2],this.$.push(s[o]);break;case 81:this.$={expr:s[o]};break;case 82:this.$={expr:s[o-2],as:s[o]};break;case 83:this.$={removecolumns:s[o]};break;case 87:this.$={like:s[o]};break;case 90:case 104:this.$={srchid:"PROP",args:[s[o]]};break;case 91:this.$={srchid:"ORDERBY",args:s[o-1]};break;case 92:var u=s[o-1];u||(u="ASC"),this.$={srchid:"ORDERBY",args:[{expression:new n.Column({columnid:"_"}),direction:u}]};break;case 93:this.$={srchid:"PARENT"};break;case 94:this.$={srchid:"APROP",args:[s[o]]};break;case 95:this.$={selid:"ROOT"};break;case 96:this.$={srchid:"EQ",args:[s[o]]};break;case 97:this.$={srchid:"LIKE",args:[s[o]]};break;case 98:case 99:this.$={selid:"WITH",args:s[o-1]};break;case 100:this.$={srchid:s[o-3].toUpperCase(),args:s[o-1]};break;case 101:this.$={srchid:"WHERE",args:[s[o-1]]};break;case 102:this.$={selid:"OF",args:[s[o-1]]};break;case 103:this.$={srchid:"CLASS",args:[s[o-1]]};break;case 105:this.$={srchid:"NAME",args:[s[o].substr(1,s[o].length-2)]};break;case 106:this.$={srchid:"CHILD"};break;case 107:this.$={srchid:"VERTEX"};break;case 108:this.$={srchid:"EDGE"};break;case 109:this.$={srchid:"REF"};break;case 110:this.$={srchid:"SHARP",args:[s[o]]};break;case 111:this.$={srchid:"ATTR",args:void 0===s[o]?void 0:[s[o]]};break;case 112:this.$={srchid:"ATTR"};break;case 113:this.$={srchid:"OUT"};break;case 114:this.$={srchid:"IN"};break;case 115:this.$={srchid:"OUTOUT"};break;case 116:this.$={srchid:"ININ"};break;case 117:this.$={srchid:"CONTENT"};break;case 118:this.$={srchid:"EX",args:[new n.Json({value:s[o]})]};break;case 119:this.$={srchid:"AT",args:[s[o]]};break;case 120:this.$={srchid:"AS",args:[s[o]]};break;case 121:this.$={srchid:"SET",args:s[o-1]};break;case 122:this.$={selid:"TO",args:[s[o]]};break;case 123:this.$={srchid:"VALUE"};break;case 124:this.$={srchid:"ROW",args:s[o-1]};break;case 125:this.$={srchid:"CLASS",args:[s[o]]};break;case 126:this.$={selid:s[o],args:[s[o-1]]};break;case 127:this.$={selid:"NOT",args:s[o-1]};break;case 128:this.$={selid:"IF",args:s[o-1]};break;case 129:this.$={selid:s[o-3],args:s[o-1]};break;case 130:this.$={selid:"DISTINCT",args:s[o-1]};break;case 131:this.$={selid:"UNION",args:s[o-1]};break;case 132:this.$={selid:"UNIONALL",args:s[o-1]};break;case 133:this.$={selid:"ALL",args:[s[o-1]]};break;case 134:this.$={selid:"ANY",args:[s[o-1]]};break;case 135:this.$={selid:"INTERSECT",args:s[o-1]};break;case 136:this.$={selid:"EXCEPT",args:s[o-1]};break;case 137:this.$={selid:"AND",args:s[o-1]};break;case 138:this.$={selid:"OR",args:s[o-1]};break;case 139:this.$={selid:"PATH",args:[s[o-1]]};break;case 140:this.$={srchid:"RETURN",args:s[o-1]};break;case 141:this.$={selid:"REPEAT",sels:s[o-3],args:s[o-1]};break;case 142:this.$=s[o-2],this.$.push(s[o]);break;case 144:this.$="PLUS";break;case 145:this.$="STAR";break;case 146:this.$="QUESTION";break;case 148:case 149:this.$=new n.Select({columns:s[o],distinct:!0}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-1]);break;case 150:this.$=new n.Select({columns:s[o],all:!0}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-1]);break;case 151:s[o]?(this.$=new n.Select({columns:s[o]}),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1])):this.$=new n.Select({columns:[new n.Column({columnid:"_"})],modifier:"COLUMN"});break;case 152:"SELECT"==s[o]?this.$=void 0:this.$={modifier:s[o]};break;case 153:this.$={modifier:"VALUE"};break;case 154:this.$={modifier:"ROW"};break;case 155:this.$={modifier:"COLUMN"};break;case 156:this.$={modifier:"MATRIX"};break;case 157:this.$={modifier:"TEXTSTRING"};break;case 158:this.$={modifier:"INDEX"};break;case 159:this.$={modifier:"RECORDSET"};break;case 160:this.$={top:s[o-1],percent:void 0!==s[o]||void 0};break;case 161:this.$={top:s[o-1]};break;case 163:case 330:case 523:case 524:case 724:this.$=void 0;break;case 164:case 165:case 166:case 167:this.$={into:s[o]};break;case 168:var c=s[o];c=c.substr(1,c.length-2);var l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();"#"==c[0]?this.$={into:new n.FuncValue({funcid:"HTML",args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}:"XLS"==l||"CSV"==l||"TAB"==l?this.$={into:new n.FuncValue({funcid:l,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}:"XLSX"!=h&&"JSON"!=h||(this.$={into:new n.FuncValue({funcid:h,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})});break;case 169:this.$={from:s[o]};break;case 170:this.$={from:s[o-1],joins:s[o]};break;case 171:this.$={from:s[o-2],joins:s[o-1]};break;case 173:this.$=new n.Apply({select:s[o-2],applymode:"CROSS",as:s[o]});break;case 174:this.$=new n.Apply({select:s[o-3],applymode:"CROSS",as:s[o]});break;case 175:this.$=new n.Apply({select:s[o-2],applymode:"OUTER",as:s[o]});break;case 176:this.$=new n.Apply({select:s[o-3],applymode:"OUTER",as:s[o]});break;case 178:case 243:case 452:case 530:case 531:this.$=s[o-2],s[o-2].push(s[o]);break;case 179:this.$=s[o-2],this.$.as=s[o];break;case 180:this.$=s[o-3],this.$.as=s[o];break;case 181:this.$=s[o-1],this.$.as="default";break;case 182:this.$=new n.Json({value:s[o-2]}),s[o-2].as=s[o];break;case 183:this.$=s[o-1],s[o-1].as=s[o];break;case 184:this.$=s[o-2],s[o-2].as=s[o];break;case 186:case 638:case 641:this.$=s[o-2];break;case 187:case 191:case 195:case 198:this.$=s[o-1],s[o-1].as=s[o];break;case 188:case 192:case 196:case 199:this.$=s[o-2],s[o-2].as=s[o];break;case 189:case 190:case 194:case 197:this.$=s[o],s[o].as="default";break;case 193:this.$={inserted:!0};break;case 200:var c=s[o];c=c.substr(1,c.length-2);var d,l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();if("#"==c[0])d=new n.FuncValue({funcid:"HTML",args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]});else if("XLS"==l||"CSV"==l||"TAB"==l)d=new n.FuncValue({funcid:l,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]});else{if("XLSX"!=h&&"JSON"!=h)throw new Error("Unknown string in FROM clause");d=new n.FuncValue({funcid:h,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}this.$=d;break;case 201:"INFORMATION_SCHEMA"==s[o-2]?this.$=new n.FuncValue({funcid:s[o-2],args:[new n.StringValue({value:s[o]})]}):this.$=new n.Table({databaseid:s[o-2],tableid:s[o]});break;case 202:this.$=new n.Table({tableid:s[o]});break;case 203:case 204:this.$=s[o-1],s[o-1].push(s[o]);break;case 207:this.$=new n.Join(s[o-2]),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]);break;case 208:this.$={table:s[o]};break;case 209:this.$={table:s[o-1],as:s[o]};break;case 210:this.$={table:s[o-2],as:s[o]};break;case 211:this.$={json:new n.Json({value:s[o-2],as:s[o]})};break;case 212:this.$={param:s[o-1],as:s[o]};break;case 213:this.$={param:s[o-2],as:s[o]};break;case 214:this.$={select:s[o-2],as:s[o]};break;case 215:this.$={select:s[o-3],as:s[o]};break;case 216:this.$={func:s[o],as:"default"};break;case 217:this.$={func:s[o-1],as:s[o]};break;case 218:this.$={func:s[o-2],as:s[o]};break;case 219:this.$={variable:s[o],as:"default"};break;case 220:this.$={variable:s[o-1],as:s[o]};break;case 221:this.$={variable:s[o-2],as:s[o]};break;case 222:this.$={joinmode:s[o]};break;case 223:this.$={joinmode:s[o-1],natural:!0};break;case 224:case 225:this.$="INNER";break;case 226:case 227:this.$="LEFT";break;case 228:case 229:this.$="RIGHT";break;case 230:case 231:this.$="OUTER";break;case 232:this.$="SEMI";break;case 233:this.$="ANTI";break;case 234:this.$="CROSS";break;case 235:this.$={on:s[o]};break;case 236:case 697:this.$={using:s[o]};break;case 239:this.$={where:new n.Expression({expression:s[o]})};break;case 241:this.$={group:s[o-1]},n.extend(this.$,s[o]);break;case 244:this.$=new n.GroupExpression({type:"GROUPING SETS",group:s[o-1]});break;case 245:this.$=new n.GroupExpression({type:"ROLLUP",group:s[o-1]});break;case 246:this.$=new n.GroupExpression({type:"CUBE",group:s[o-1]});break;case 249:this.$={having:s[o]};break;case 251:this.$={union:s[o]};break;case 252:this.$={unionall:s[o]};break;case 253:this.$={except:s[o]};break;case 254:this.$={intersect:s[o]};break;case 255:this.$={union:s[o],corresponding:!0};break;case 256:this.$={unionall:s[o],corresponding:!0};break;case 257:this.$={except:s[o],corresponding:!0};break;case 258:this.$={intersect:s[o],corresponding:!0};break;case 260:this.$={order:s[o]};break;case 262:this.$=s[o-2],s[o-2].push(s[o]);break;case 263:this.$=new n.Expression({expression:s[o],direction:"ASC"});break;case 264:this.$=new n.Expression({expression:s[o-1],direction:s[o].toUpperCase()});break;case 265:this.$=new n.Expression({expression:s[o-2],direction:"ASC",nocase:!0});break;case 266:this.$=new n.Expression({expression:s[o-3],direction:s[o].toUpperCase(),nocase:!0});break;case 268:this.$={limit:s[o-1]},n.extend(this.$,s[o]);break;case 269:this.$={limit:s[o-2],offset:s[o-6]};break;case 271:this.$={offset:s[o]};break;case 272:case 509:case 533:case 648:case 658:case 682:case 684:case 688:s[o-2].push(s[o]),this.$=s[o-2];break;case 274:case 276:case 278:s[o-2].as=s[o],this.$=s[o-2];break;case 275:case 277:case 279:s[o-1].as=s[o],this.$=s[o-1];break;case 281:this.$=new n.Column({columid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 282:this.$=new n.Column({columnid:s[o],tableid:s[o-2]});break;case 283:this.$=new n.Column({columnid:s[o]});break;case 284:this.$=new n.Column({columnid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 285:case 286:this.$=new n.Column({columnid:s[o],tableid:s[o-2]});break;case 287:this.$=new n.Column({columnid:s[o]});break;case 302:this.$=new n.DomainValueValue;break;case 303:this.$=new n.Json({value:s[o]});break;case 306:case 307:case 308:n.queries||(n.queries=[]),n.queries.push(s[o-1]),s[o-1].queriesidx=n.queries.length,this.$=s[o-1];break;case 309:this.$=s[o];break;case 310:this.$=new n.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 311:this.$=new n.JavaScript({value:s[o].substr(2,s[o].length-4)});break;case 312:this.$=new n.JavaScript({value:'alasql.fn["'+s[o-2]+'"] = '+s[o].substr(2,s[o].length-4)});break;case 313:this.$=new n.JavaScript({value:'alasql.aggr["'+s[o-2]+'"] = '+s[o].substr(2,s[o].length-4)});break;case 314:this.$=new n.FuncValue({funcid:s[o],newid:!0});break;case 315:this.$=s[o],n.extend(this.$,{newid:!0});break;case 316:this.$=new n.Convert({expression:s[o-3]}),n.extend(this.$,s[o-1]);break;case 317:this.$=new n.Convert({expression:s[o-5],style:s[o-1]}),n.extend(this.$,s[o-3]);break;case 318:this.$=new n.Convert({expression:s[o-1]}),n.extend(this.$,s[o-3]);break;case 319:this.$=new n.Convert({expression:s[o-3],style:s[o-1]}),n.extend(this.$,s[o-5]);break;case 326:this.$=new n.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 327:s[o-2].length>1&&("MAX"==s[o-4].toUpperCase()||"MIN"==s[o-4].toUpperCase())?this.$=new n.FuncValue({funcid:s[o-4],args:s[o-2]}):this.$=new n.AggrValue({aggregatorid:s[o-4].toUpperCase(),expression:s[o-2].pop(),over:s[o]});break;case 328:this.$=new n.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],distinct:!0,over:s[o]});break;case 329:this.$=new n.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],over:s[o]});break;case 331:case 332:this.$=new n.Over,n.extend(this.$,s[o-1]);break;case 333:this.$=new n.Over,n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]);break;case 334:this.$={partition:s[o]};break;case 335:this.$={order:s[o]};break;case 336:this.$="SUM";break;case 337:this.$="COUNT";break;case 338:this.$="MIN";break;case 339:case 544:this.$="MAX";break;case 340:this.$="AVG";break;case 341:this.$="FIRST";break;case 342:this.$="LAST";break;case 343:this.$="AGGR";break;case 344:this.$="ARRAY";break;case 345:var f=s[o-4],p=s[o-1];p.length>1&&("MIN"==f.toUpperCase()||"MAX"==f.toUpperCase())?this.$=new n.FuncValue({funcid:f,args:p}):T.aggr[s[o-4]]?this.$=new n.AggrValue({aggregatorid:"REDUCE",funcid:f,expression:p.pop(),distinct:"DISTINCT"==s[o-2]}):this.$=new n.FuncValue({funcid:f,args:p});break;case 346:this.$=new n.FuncValue({funcid:s[o-2]});break;case 347:this.$=new n.FuncValue({funcid:"IIF",args:s[o-1]});break;case 348:this.$=new n.FuncValue({funcid:"REPLACE",args:s[o-1]});break;case 349:this.$=new n.FuncValue({funcid:"DATEADD",args:[new n.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 350:this.$=new n.FuncValue({funcid:"DATEADD",args:[s[o-5],s[o-3],s[o-1]]});break;case 351:this.$=new n.FuncValue({funcid:"DATEDIFF",args:[new n.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 352:this.$=new n.FuncValue({funcid:"DATEDIFF",args:[s[o-5],s[o-3],s[o-1]]});break;case 353:this.$=new n.FuncValue({funcid:"INTERVAL",args:[s[o-1],new n.StringValue({value:s[o].toLowerCase()})]});break;case 355:s[o-2].push(s[o]),this.$=s[o-2];break;case 356:this.$=new n.NumValue({value:+s[o]});break;case 357:this.$=new n.LogicValue({value:!0});break;case 358:this.$=new n.LogicValue({value:!1});break;case 359:this.$=new n.StringValue({value:s[o].substr(1,s[o].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 360:this.$=new n.StringValue({value:s[o].substr(2,s[o].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 361:this.$=new n.NullValue({value:void 0});break;case 362:this.$=new n.VarValue({variable:s[o]});break;case 363:n.exists||(n.exists=[]),this.$=new n.ExistsValue({value:s[o-1],existsidx:n.exists.length}),n.exists.push(s[o-1]);break;case 364:this.$=new n.ArrayValue({value:s[o-1]});break;case 365:case 366:this.$=new n.ParamValue({param:s[o]});break;case 367:void 0===n.question&&(n.question=0),this.$=new n.ParamValue({param:n.question++});break;case 368:void 0===n.question&&(n.question=0),this.$=new n.ParamValue({param:n.question++,array:!0});break;case 369:this.$=new n.CaseValue({expression:s[o-3],whens:s[o-2],elses:s[o-1]});break;case 370:this.$=new n.CaseValue({whens:s[o-2],elses:s[o-1]});break;case 371:case 699:case 700:this.$=s[o-1],this.$.push(s[o]);break;case 373:this.$={when:s[o-2],then:s[o]};break;case 376:case 377:this.$=new n.Op({left:s[o-2],op:"REGEXP",right:s[o]});break;case 378:this.$=new n.Op({left:s[o-2],op:"GLOB",right:s[o]});break;case 379:this.$=new n.Op({left:s[o-2],op:"LIKE",right:s[o]});break;case 380:this.$=new n.Op({left:s[o-4],op:"LIKE",right:s[o-2],escape:s[o]});break;case 381:this.$=new n.Op({left:s[o-2],op:"NOT LIKE",right:s[o]});break;case 382:this.$=new n.Op({left:s[o-4],op:"NOT LIKE",right:s[o-2],escape:s[o]});break;case 383:this.$=new n.Op({left:s[o-2],op:"||",right:s[o]});break;case 384:this.$=new n.Op({left:s[o-2],op:"+",right:s[o]});break;case 385:this.$=new n.Op({left:s[o-2],op:"-",right:s[o]});break;case 386:this.$=new n.Op({left:s[o-2],op:"*",right:s[o]});break;case 387:this.$=new n.Op({left:s[o-2],op:"/",right:s[o]});break;case 388:this.$=new n.Op({left:s[o-2],op:"%",right:s[o]});break;case 389:this.$=new n.Op({left:s[o-2],op:"^",right:s[o]});break;case 390:this.$=new n.Op({left:s[o-2],op:">>",right:s[o]});break;case 391:this.$=new n.Op({left:s[o-2],op:"<<",right:s[o]});break;case 392:this.$=new n.Op({left:s[o-2],op:"&",right:s[o]});break;case 393:this.$=new n.Op({left:s[o-2],op:"|",right:s[o]});break;case 394:case 395:case 397:this.$=new n.Op({left:s[o-2],op:"->",right:s[o]});break;case 396:this.$=new n.Op({left:s[o-4],op:"->",right:s[o-1]});break;case 398:case 399:case 401:this.$=new n.Op({left:s[o-2],op:"!",right:s[o]});break;case 400:this.$=new n.Op({left:s[o-4],op:"!",right:s[o-1]});break;case 402:this.$=new n.Op({left:s[o-2],op:">",right:s[o]});break;case 403:this.$=new n.Op({left:s[o-2],op:">=",right:s[o]});break;case 404:this.$=new n.Op({left:s[o-2],op:"<",right:s[o]});break;case 405:this.$=new n.Op({left:s[o-2],op:"<=",right:s[o]});break;case 406:this.$=new n.Op({left:s[o-2],op:"=",right:s[o]});break;case 407:this.$=new n.Op({left:s[o-2],op:"==",right:s[o]});break;case 408:this.$=new n.Op({left:s[o-2],op:"===",right:s[o]});break;case 409:this.$=new n.Op({left:s[o-2],op:"!=",right:s[o]});break;case 410:this.$=new n.Op({left:s[o-2],op:"!==",right:s[o]});break;case 411:this.$=new n.Op({left:s[o-2],op:"!===",right:s[o]});break;case 412:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1],queriesidx:n.queries.length}),n.queries.push(s[o-1]);break;case 413:this.$=new n.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1]});break;case 414:"BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new n.Op({left:s[o-2].left.left,op:"AND",right:new n.Op({left:s[o-2].left.right,op:"BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new n.Op({left:s[o-2].left,op:"BETWEEN",right1:s[o-2].right,right2:s[o]}):"NOT BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new n.Op({left:s[o-2].left.left,op:"AND",right:new n.Op({left:s[o-2].left.right,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new n.Op({left:s[o-2].left,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]}):this.$=new n.Op({left:s[o-2],op:"AND",right:s[o]});break;case 415:this.$=new n.Op({left:s[o-2],op:"OR",right:s[o]});break;case 416:this.$=new n.UniOp({op:"NOT",right:s[o]});break;case 417:this.$=new n.UniOp({op:"-",right:s[o]});break;case 418:this.$=new n.UniOp({op:"+",right:s[o]});break;case 419:this.$=new n.UniOp({op:"~",right:s[o]});break;case 420:this.$=new n.UniOp({op:"#",right:s[o]});break;case 421:this.$=new n.UniOp({right:s[o-1]});break;case 422:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-4],op:"IN",right:s[o-1],queriesidx:n.queries.length}),n.queries.push(s[o-1]);break;case 423:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-5],op:"NOT IN",right:s[o-1],queriesidx:n.queries.length}),
n.queries.push(s[o-1]);break;case 424:this.$=new n.Op({left:s[o-4],op:"IN",right:s[o-1]});break;case 425:this.$=new n.Op({left:s[o-5],op:"NOT IN",right:s[o-1]});break;case 426:this.$=new n.Op({left:s[o-3],op:"IN",right:[]});break;case 427:this.$=new n.Op({left:s[o-4],op:"NOT IN",right:[]});break;case 428:case 430:this.$=new n.Op({left:s[o-2],op:"IN",right:s[o]});break;case 429:case 431:this.$=new n.Op({left:s[o-3],op:"NOT IN",right:s[o]});break;case 432:this.$=new n.Op({left:s[o-2],op:"BETWEEN1",right:s[o]});break;case 433:this.$=new n.Op({left:s[o-2],op:"NOT BETWEEN1",right:s[o]});break;case 434:this.$=new n.Op({op:"IS",left:s[o-2],right:s[o]});break;case 435:this.$=new n.Op({op:"IS",left:s[o-2],right:new n.UniOp({op:"NOT",right:new n.NullValue({value:void 0})})});break;case 436:this.$=new n.Convert({expression:s[o-2]}),n.extend(this.$,s[o]);break;case 437:case 438:this.$=s[o];break;case 439:this.$=s[o-1];break;case 446:this.$="ALL";break;case 447:this.$="SOME";break;case 448:this.$="ANY";break;case 449:this.$=new n.Update({table:s[o-4],columns:s[o-2],where:s[o]});break;case 450:this.$=new n.Update({table:s[o-2],columns:s[o]});break;case 453:this.$=new n.SetColumn({column:s[o-2],expression:s[o]});break;case 454:this.$=new n.SetColumn({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 455:this.$=new n.Delete({table:s[o-2],where:s[o]});break;case 456:this.$=new n.Delete({table:s[o]});break;case 457:this.$=new n.Insert({into:s[o-2],values:s[o]});break;case 458:this.$=new n.Insert({into:s[o-1],values:s[o]});break;case 459:case 461:this.$=new n.Insert({into:s[o-2],values:s[o],orreplace:!0});break;case 460:case 462:this.$=new n.Insert({into:s[o-1],values:s[o],orreplace:!0});break;case 463:this.$=new n.Insert({into:s[o-2],default:!0});break;case 464:this.$=new n.Insert({into:s[o-5],columns:s[o-3],values:s[o]});break;case 465:this.$=new n.Insert({into:s[o-4],columns:s[o-2],values:s[o]});break;case 466:this.$=new n.Insert({into:s[o-1],select:s[o]});break;case 467:this.$=new n.Insert({into:s[o-1],select:s[o],orreplace:!0});break;case 468:this.$=new n.Insert({into:s[o-4],columns:s[o-2],select:s[o]});break;case 473:this.$=[s[o-1]];break;case 476:this.$=s[o-4],s[o-4].push(s[o-1]);break;case 477:case 478:case 480:case 488:this.$=s[o-2],s[o-2].push(s[o]);break;case 489:this.$=new n.CreateTable({table:s[o-4]}),n.extend(this.$,s[o-7]),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-5]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o]);break;case 490:this.$=new n.CreateTable({table:s[o]}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]);break;case 492:this.$={class:!0};break;case 502:this.$={temporary:!0};break;case 504:this.$={ifnotexists:!0};break;case 505:this.$={columns:s[o-2],constraints:s[o]};break;case 506:this.$={columns:s[o]};break;case 507:this.$={as:s[o]};break;case 508:case 532:this.$=[s[o]];break;case 510:case 511:case 512:case 513:case 514:s[o].constraintid=s[o-1],this.$=s[o];break;case 517:this.$={type:"CHECK",expression:s[o-1]};break;case 518:this.$={type:"PRIMARY KEY",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 519:this.$={type:"FOREIGN KEY",columns:s[o-5],fktable:s[o-2],fkcolumns:s[o-1]};break;case 525:this.$={type:"UNIQUE",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 534:this.$=new n.ColumnDef({columnid:s[o-2]}),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]);break;case 535:this.$=new n.ColumnDef({columnid:s[o-1]}),n.extend(this.$,s[o]);break;case 536:this.$=new n.ColumnDef({columnid:s[o],dbtypeid:""});break;case 537:this.$={dbtypeid:s[o-5],dbsize:s[o-3],dbprecision:+s[o-1]};break;case 538:this.$={dbtypeid:s[o-3],dbsize:s[o-1]};break;case 539:this.$={dbtypeid:s[o]};break;case 540:this.$={dbtypeid:"ENUM",enumvalues:s[o-1]};break;case 541:this.$=s[o-1],s[o-1].dbtypeid+="["+s[o]+"]";break;case 543:case 750:this.$=+s[o];break;case 545:this.$=void 0;break;case 547:n.extend(s[o-1],s[o]),this.$=s[o-1];break;case 550:this.$={primarykey:!0};break;case 551:case 552:this.$={foreignkey:{table:s[o-1],columnid:s[o]}};break;case 553:this.$={identity:{value:s[o-3],step:s[o-1]}};break;case 554:this.$={identity:{value:1,step:1}};break;case 555:case 557:this.$={default:s[o]};break;case 556:this.$={default:s[o-1]};break;case 558:this.$={null:!0};break;case 559:this.$={notnull:!0};break;case 560:this.$={check:s[o]};break;case 561:this.$={unique:!0};break;case 562:this.$={onupdate:s[o]};break;case 563:this.$={onupdate:s[o-1]};break;case 564:this.$=new n.DropTable({tables:s[o],type:s[o-2]}),n.extend(this.$,s[o-1]);break;case 568:this.$={ifexists:!0};break;case 569:this.$=new n.AlterTable({table:s[o-3],renameto:s[o]});break;case 570:this.$=new n.AlterTable({table:s[o-3],addcolumn:s[o]});break;case 571:this.$=new n.AlterTable({table:s[o-3],modifycolumn:s[o]});break;case 572:this.$=new n.AlterTable({table:s[o-5],renamecolumn:s[o-2],to:s[o]});break;case 573:this.$=new n.AlterTable({table:s[o-3],dropcolumn:s[o]});break;case 574:this.$=new n.AlterTable({table:s[o-2],renameto:s[o]});break;case 575:this.$=new n.AttachDatabase({databaseid:s[o],engineid:s[o-2].toUpperCase()});break;case 576:this.$=new n.AttachDatabase({databaseid:s[o-3],engineid:s[o-5].toUpperCase(),args:s[o-1]});break;case 577:this.$=new n.AttachDatabase({databaseid:s[o-2],engineid:s[o-4].toUpperCase(),as:s[o]});break;case 578:this.$=new n.AttachDatabase({databaseid:s[o-5],engineid:s[o-7].toUpperCase(),as:s[o],args:s[o-3]});break;case 579:this.$=new n.DetachDatabase({databaseid:s[o]});break;case 580:this.$=new n.CreateDatabase({databaseid:s[o]}),n.extend(this.$,s[o]);break;case 581:this.$=new n.CreateDatabase({engineid:s[o-4].toUpperCase(),databaseid:s[o-1],as:s[o]}),n.extend(this.$,s[o-2]);break;case 582:this.$=new n.CreateDatabase({engineid:s[o-7].toUpperCase(),databaseid:s[o-4],args:s[o-2],as:s[o]}),n.extend(this.$,s[o-5]);break;case 583:this.$=new n.CreateDatabase({engineid:s[o-4].toUpperCase(),as:s[o],args:[s[o-1]]}),n.extend(this.$,s[o-2]);break;case 584:this.$=void 0;break;case 586:case 587:this.$=new n.UseDatabase({databaseid:s[o]});break;case 588:this.$=new n.DropDatabase({databaseid:s[o]}),n.extend(this.$,s[o-1]);break;case 589:case 590:this.$=new n.DropDatabase({databaseid:s[o],engineid:s[o-3].toUpperCase()}),n.extend(this.$,s[o-1]);break;case 591:this.$=new n.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1]});break;case 592:this.$=new n.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1],unique:!0});break;case 593:this.$=new n.DropIndex({indexid:s[o]});break;case 594:this.$=new n.ShowDatabases;break;case 595:this.$=new n.ShowDatabases({like:s[o]});break;case 596:this.$=new n.ShowDatabases({engineid:s[o-1].toUpperCase()});break;case 597:this.$=new n.ShowDatabases({engineid:s[o-3].toUpperCase(),like:s[o]});break;case 598:this.$=new n.ShowTables;break;case 599:this.$=new n.ShowTables({like:s[o]});break;case 600:this.$=new n.ShowTables({databaseid:s[o]});break;case 601:this.$=new n.ShowTables({like:s[o],databaseid:s[o-2]});break;case 602:this.$=new n.ShowColumns({table:s[o]});break;case 603:this.$=new n.ShowColumns({table:s[o-2],databaseid:s[o]});break;case 604:this.$=new n.ShowIndex({table:s[o]});break;case 605:this.$=new n.ShowIndex({table:s[o-2],databaseid:s[o]});break;case 606:this.$=new n.ShowCreateTable({table:s[o]});break;case 607:this.$=new n.ShowCreateTable({table:s[o-2],databaseid:s[o]});break;case 608:this.$=new n.CreateTable({table:s[o-6],view:!0,select:s[o-1],viewcolumns:s[o-4]}),n.extend(this.$,s[o-9]),n.extend(this.$,s[o-7]);break;case 609:this.$=new n.CreateTable({table:s[o-3],view:!0,select:s[o-1]}),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-4]);break;case 613:this.$=new n.DropTable({tables:s[o],view:!0}),n.extend(this.$,s[o-1]);break;case 614:case 760:this.$=new n.ExpressionStatement({expression:s[o]});break;case 615:this.$=new n.Source({url:s[o].value});break;case 616:this.$=new n.Assert({value:s[o]});break;case 617:this.$=new n.Assert({value:s[o].value});break;case 618:this.$=new n.Assert({value:s[o],message:s[o-2]});break;case 620:case 631:case 633:this.$=s[o].value;break;case 621:case 629:this.$=+s[o].value;break;case 622:this.$=!!s[o].value;break;case 630:this.$=""+s[o].value;break;case 639:this.$={};break;case 642:this.$=[];break;case 643:n.extend(s[o-2],s[o]),this.$=s[o-2];break;case 645:this.$={},this.$[s[o-2].substr(1,s[o-2].length-2)]=s[o];break;case 646:case 647:this.$={},this.$[s[o-2]]=s[o];break;case 650:this.$=new n.SetVariable({variable:s[o-2].toLowerCase(),value:s[o]});break;case 651:this.$=new n.SetVariable({variable:s[o-1].toLowerCase(),value:s[o]});break;case 652:this.$=new n.SetVariable({variable:s[o-2],expression:s[o]});break;case 653:this.$=new n.SetVariable({variable:s[o-3],props:s[o-2],expression:s[o]});break;case 654:this.$=new n.SetVariable({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 655:this.$=new n.SetVariable({variable:s[o-3],props:s[o-2],expression:s[o],method:s[o-4]});break;case 656:this.$="@";break;case 657:this.$="$";break;case 663:this.$=!0;break;case 664:this.$=!1;break;case 665:this.$=new n.CommitTransaction;break;case 666:this.$=new n.RollbackTransaction;break;case 667:this.$=new n.BeginTransaction;break;case 668:this.$=new n.If({expression:s[o-2],thenstat:s[o-1],elsestat:s[o]}),s[o-1].exists&&(this.$.exists=s[o-1].exists),s[o-1].queries&&(this.$.queries=s[o-1].queries);break;case 669:this.$=new n.If({expression:s[o-1],thenstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 670:this.$=s[o];break;case 671:this.$=new n.While({expression:s[o-1],loopstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 672:this.$=new n.Continue;break;case 673:this.$=new n.Break;break;case 674:this.$=new n.BeginEnd({statements:s[o-1]});break;case 675:this.$=new n.Print({exprs:s[o]});break;case 676:this.$=new n.Print({select:s[o]});break;case 677:this.$=new n.Require({paths:s[o]});break;case 678:this.$=new n.Require({plugins:s[o]});break;case 679:case 680:this.$=s[o].toUpperCase();break;case 681:this.$=new n.Echo({expr:s[o]});break;case 686:this.$=new n.Declare({declares:s[o]});break;case 689:this.$={variable:s[o-1]},n.extend(this.$,s[o]);break;case 690:this.$={variable:s[o-2]},n.extend(this.$,s[o]);break;case 691:this.$={variable:s[o-3],expression:s[o]},n.extend(this.$,s[o-2]);break;case 692:this.$={variable:s[o-4],expression:s[o]},n.extend(this.$,s[o-2]);break;case 693:this.$=new n.TruncateTable({table:s[o]});break;case 694:this.$=new n.Merge,n.extend(this.$,s[o-4]),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,{matches:s[o-1]}),n.extend(this.$,s[o]);break;case 695:case 696:this.$={into:s[o]};break;case 698:this.$={on:s[o]};break;case 703:this.$={matched:!0,action:s[o]};break;case 704:this.$={matched:!0,expr:s[o-2],action:s[o]};break;case 705:this.$={delete:!0};break;case 706:this.$={update:s[o]};break;case 707:case 708:this.$={matched:!1,bytarget:!0,action:s[o]};break;case 709:case 710:this.$={matched:!1,bytarget:!0,expr:s[o-2],action:s[o]};break;case 711:this.$={matched:!1,bysource:!0,action:s[o]};break;case 712:this.$={matched:!1,bysource:!0,expr:s[o-2],action:s[o]};break;case 713:this.$={insert:!0,values:s[o]};break;case 714:this.$={insert:!0,values:s[o],columns:s[o-3]};break;case 715:this.$={insert:!0,defaultvalues:!0};break;case 716:this.$={insert:!0,defaultvalues:!0,columns:s[o-3]};break;case 718:this.$={output:{columns:s[o]}};break;case 719:this.$={output:{columns:s[o-3],intovar:s[o],method:s[o-1]}};break;case 720:this.$={output:{columns:s[o-2],intotable:s[o]}};break;case 721:this.$={output:{columns:s[o-5],intotable:s[o-3],intocolumns:s[o-1]}};break;case 722:this.$=new n.CreateVertex({class:s[o-3],sharp:s[o-2],name:s[o-1]}),n.extend(this.$,s[o]);break;case 725:this.$={sets:s[o]};break;case 726:this.$={content:s[o]};break;case 727:this.$={select:s[o]};break;case 728:this.$=new n.CreateEdge({from:s[o-3],to:s[o-1],name:s[o-5]}),n.extend(this.$,s[o]);break;case 729:this.$=new n.CreateGraph({graph:s[o]});break;case 730:this.$=new n.CreateGraph({from:s[o]});break;case 733:this.$=s[o-2],s[o-1]&&(this.$.json=new n.Json({value:s[o-1]})),s[o]&&(this.$.as=s[o]);break;case 734:this.$={source:s[o-6],target:s[o]},s[o-3]&&(this.$.json=new n.Json({value:s[o-3]})),s[o-2]&&(this.$.as=s[o-2]),n.extend(this.$,s[o-4]);break;case 735:this.$={source:s[o-5],target:s[o]},s[o-2]&&(this.$.json=new n.Json({value:s[o-3]})),s[o-1]&&(this.$.as=s[o-2]);break;case 736:this.$={source:s[o-2],target:s[o]};break;case 740:this.$={vars:s[o],method:s[o-1]};break;case 743:case 744:var b=s[o-1];this.$={prop:s[o-3],sharp:s[o-2],name:void 0===b?void 0:b.substr(1,b.length-2),class:s[o]};break;case 745:var E=s[o-1];this.$={sharp:s[o-2],name:void 0===E?void 0:E.substr(1,E.length-2),class:s[o]};break;case 746:var g=s[o-1];this.$={name:void 0===g?void 0:g.substr(1,g.length-2),class:s[o]};break;case 747:this.$={class:s[o]};break;case 753:this.$=new n.AddRule({left:s[o-2],right:s[o]});break;case 754:this.$=new n.AddRule({right:s[o]});break;case 757:this.$=new n.Term({termid:s[o]});break;case 758:this.$=new n.Term({termid:s[o-3],args:s[o-1]});break;case 761:this.$=new n.CreateTrigger({trigger:s[o-6],when:s[o-5],action:s[o-4],table:s[o-2],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 762:this.$=new n.CreateTrigger({trigger:s[o-5],when:s[o-4],action:s[o-3],table:s[o-1],funcid:s[o]});break;case 763:this.$=new n.CreateTrigger({trigger:s[o-6],when:s[o-4],action:s[o-3],table:s[o-5],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 764:case 765:case 767:this.$="AFTER";break;case 766:this.$="BEFORE";break;case 768:this.$="INSTEADOF";break;case 769:this.$="INSERT";break;case 770:this.$="DELETE";break;case 771:this.$="UPDATE";break;case 772:this.$=new n.DropTrigger({trigger:s[o]});break;case 773:this.$=new n.Reindex({indexid:s[o]});break;case 1047:case 1067:case 1069:case 1071:case 1075:case 1077:case 1079:case 1081:case 1083:case 1085:this.$=[];break;case 1048:case 1062:case 1064:case 1068:case 1070:case 1072:case 1076:case 1078:case 1080:case 1082:case 1084:case 1086:s[o-1].push(s[o]);break;case 1061:case 1063:this.$=[s[o]]}},table:[t([10,602,764],r,{8:1,9:2,12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,2:n,4:a,5:s,14:i,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),{1:[3]},{10:[1,105],11:106,602:Y,764:W},t(X,[2,8]),t(X,[2,9]),t(K,[2,12]),t(X,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:109,2:n,4:a,5:s,15:[1,110],53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(K,[2,14]),t(K,[2,15]),t(K,[2,16]),t(K,[2,17]),t(K,[2,18]),t(K,[2,19]),t(K,[2,20]),t(K,[2,21]),t(K,[2,22]),t(K,[2,23]),t(K,[2,24]),t(K,[2,25]),t(K,[2,26]),t(K,[2,27]),t(K,[2,28]),t(K,[2,29]),t(K,[2,30]),t(K,[2,31]),t(K,[2,32]),t(K,[2,33]),t(K,[2,34]),t(K,[2,35]),t(K,[2,36]),t(K,[2,37]),t(K,[2,38]),t(K,[2,39]),t(K,[2,40]),t(K,[2,41]),t(K,[2,42]),t(K,[2,43]),t(K,[2,44]),t(K,[2,45]),t(K,[2,46]),t(K,[2,47]),t(K,[2,48]),t(K,[2,49]),t(K,[2,50]),t(K,[2,51]),t(K,[2,52]),t(K,[2,53]),t(K,[2,54]),t(K,[2,55]),t(K,[2,56]),t(K,[2,57]),t(K,[2,58]),t(K,[2,59]),t(K,[2,60]),t(K,[2,61]),t(K,[2,62]),t(K,[2,63]),t(K,[2,64]),t(K,[2,65]),t(K,[2,66]),t(K,[2,67]),{353:[1,111]},{2:n,3:112,4:a,5:s},{2:n,3:114,4:a,5:s,156:Q,200:113,290:z,291:Z,292:ee,293:te},t(re,[2,501],{3:121,348:125,2:n,4:a,5:s,134:ne,135:ae,187:[1,123],193:[1,122],268:[1,129],269:[1,130],357:[1,131],405:[1,120],472:[1,124],509:[1,128]}),{145:se,449:132,450:133},{183:[1,135]},{405:[1,136]},{2:n,3:138,4:a,5:s,130:[1,144],193:[1,139],353:[1,143],397:140,405:[1,137],410:[1,141],509:[1,142]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:145,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Be,je,{340:204,171:[1,205],198:He}),t(Be,je,{340:207,198:He}),{2:n,3:219,4:a,5:s,77:Je,132:Ye,143:le,144:212,145:he,152:fe,156:Q,181:ge,198:[1,210],199:213,200:215,201:214,202:217,209:209,213:We,214:218,290:z,291:Z,292:ee,293:te,302:_e,419:190,420:Ge,424:Ve,453:208},{2:n,3:221,4:a,5:s},{353:[1,222]},t(Xe,[2,1043],{80:223,106:224,107:[1,225]}),t(Ke,[2,1047],{90:226}),{2:n,3:230,4:a,5:s,190:[1,228],193:[1,231],267:[1,227],353:[1,232],405:[1,229]},{353:[1,233]},{2:n,3:236,4:a,5:s,73:234,75:235},t([306,602,764],r,{12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,9:238,2:n,4:a,5:s,14:i,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,435:[1,237],436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),{435:[1,239]},{435:[1,240]},{2:n,3:242,4:a,5:s,405:[1,241]},{2:n,3:244,4:a,5:s,199:243},t(Qe,[2,311]),{113:245,132:ue,296:Le},{2:n,3:114,4:a,5:s,113:251,131:oe,132:[1,248],143:le,144:246,145:ze,152:fe,156:Q,181:ge,196:250,200:255,201:254,257:252,258:253,265:Ze,274:247,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,302:_e,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:257,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(K,[2,672]),t(K,[2,673]),{2:n,3:168,4:a,5:s,40:259,56:165,77:ie,79:75,89:c,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:258,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,184:99,189:f,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:266,4:a,5:s,113:263,132:ue,296:Le,444:261,445:262,446:264,447:et},{2:n,3:267,4:a,5:s,143:tt,145:rt,431:268},{2:n,3:168,4:a,5:s,56:165,77:ie,94:271,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{505:[1,272]},{2:n,3:100,4:a,5:s,504:274,506:273},{2:n,3:114,4:a,5:s,156:Q,200:275,290:z,291:Z,292:ee,293:te},{2:n,3:168,4:a,5:s,56:165,77:ie,94:276,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(nt,at,{186:280,164:[1,279],185:[1,277],187:[1,278],195:st}),t(it,[2,757],{77:[1,282]}),t([2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],[2,152],{149:[1,283],150:[1,284],190:[1,285],191:[1,286],192:[1,287],193:[1,288],194:[1,289]}),t(ot,[2,1]),t(ot,[2,2]),{6:290,131:[1,439],172:[1,462],245:[1,411],285:[1,373],286:[1,407],370:[1,404],381:[1,295],402:[1,297],410:[1,549],414:[1,471],416:[1,443],417:[1,509],433:[1,442],435:[1,525],440:[1,342],460:[1,418],464:[1,448],470:[1,341],514:[1,307],515:[1,299],516:[1,399],518:[1,291],519:[1,292],520:[1,293],521:[1,294],522:[1,296],523:[1,298],524:[1,300],525:[1,301],526:[1,302],527:[1,303],528:[1,304],529:[1,305],530:[1,306],531:[1,308],532:[1,309],533:[1,310],534:[1,311],535:[1,312],536:[1,313],537:[1,314],538:[1,315],539:[1,316],540:[1,317],541:[1,318],542:[1,319],543:[1,320],544:[1,321],545:[1,322],546:[1,323],547:[1,324],548:[1,325],549:[1,326],550:[1,327],551:[1,328],552:[1,329],553:[1,330],554:[1,331],555:[1,332],556:[1,333],557:[1,334],558:[1,335],559:[1,336],560:[1,337],561:[1,338],562:[1,339],563:[1,340],564:[1,343],565:[1,344],566:[1,345],567:[1,346],568:[1,347],569:[1,348],570:[1,349],571:[1,350],572:[1,351],573:[1,352],574:[1,353],575:[1,354],576:[1,355],577:[1,356],578:[1,357],579:[1,358],580:[1,359],581:[1,360],582:[1,361],583:[1,362],584:[1,363],585:[1,364],586:[1,365],587:[1,366],588:[1,367],589:[1,368],590:[1,369],591:[1,370],592:[1,371],593:[1,372],594:[1,374],595:[1,375],596:[1,376],597:[1,377],598:[1,378],599:[1,379],600:[1,380],601:[1,381],602:[1,382],603:[1,383],604:[1,384],605:[1,385],606:[1,386],607:[1,387],608:[1,388],609:[1,389],610:[1,390],611:[1,391],612:[1,392],613:[1,393],614:[1,394],615:[1,395],616:[1,396],617:[1,397],618:[1,398],619:[1,400],620:[1,401],621:[1,402],622:[1,403],623:[1,405],624:[1,406],625:[1,408],626:[1,409],627:[1,410],628:[1,412],629:[1,413],630:[1,414],631:[1,415],632:[1,416],633:[1,417],634:[1,419],635:[1,420],636:[1,421],637:[1,422],638:[1,423],639:[1,424],640:[1,425],641:[1,426],642:[1,427],643:[1,428],644:[1,429],645:[1,430],646:[1,431],647:[1,432],648:[1,433],649:[1,434],650:[1,435],651:[1,436],652:[1,437],653:[1,438],654:[1,440],655:[1,441],656:[1,444],657:[1,445],658:[1,446],659:[1,447],660:[1,449],661:[1,450],662:[1,451],663:[1,452],664:[1,453],665:[1,454],666:[1,455],667:[1,456],668:[1,457],669:[1,458],670:[1,459],671:[1,460],672:[1,461],673:[1,463],674:[1,464],675:[1,465],676:[1,466],677:[1,467],678:[1,468],679:[1,469],680:[1,470],681:[1,472],682:[1,473],683:[1,474],684:[1,475],685:[1,476],686:[1,477],687:[1,478],688:[1,479],689:[1,480],690:[1,481],691:[1,482],692:[1,483],693:[1,484],694:[1,485],695:[1,486],696:[1,487],697:[1,488],698:[1,489],699:[1,490],700:[1,491],701:[1,492],702:[1,493],703:[1,494],704:[1,495],705:[1,496],706:[1,497],707:[1,498],708:[1,499],709:[1,500],710:[1,501],711:[1,502],712:[1,503],713:[1,504],714:[1,505],715:[1,506],716:[1,507],717:[1,508],718:[1,510],719:[1,511],720:[1,512],721:[1,513],722:[1,514],723:[1,515],724:[1,516],725:[1,517],726:[1,518],727:[1,519],728:[1,520],729:[1,521],730:[1,522],731:[1,523],732:[1,524],733:[1,526],734:[1,527],735:[1,528],736:[1,529],737:[1,530],738:[1,531],739:[1,532],740:[1,533],741:[1,534],742:[1,535],743:[1,536],744:[1,537],745:[1,538],746:[1,539],747:[1,540],748:[1,541],749:[1,542],750:[1,543],751:[1,544],752:[1,545],753:[1,546],754:[1,547],755:[1,548],756:[1,550],757:[1,551],758:[1,552],759:[1,553],760:[1,554],761:[1,555],762:[1,556],763:[1,557]},{1:[2,6]},t(X,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:558,2:n,4:a,5:s,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(ut,[2,1041]),t(ut,[2,1042]),t(X,[2,10]),{16:[1,559]},{2:n,3:244,4:a,5:s,199:560},{405:[1,561]},t(K,[2,760]),{77:ct},{77:[1,563]},{77:lt},{77:[1,565]},{77:[1,566]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:567,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Be,ht,{350:568,156:dt}),{405:[1,570]},{2:n,3:571,4:a,5:s},{193:[1,572]},{2:n,3:578,4:a,5:s,132:ft,137:pt,143:tt,145:rt,152:bt,183:[1,574],431:585,473:573,474:575,475:576,478:577,482:582,493:579,497:581},{130:[1,589],349:586,353:[1,588],410:[1,587]},{113:591,132:ue,183:[2,1141],296:Le,471:590},t(Et,[2,1135],{465:592,3:593,2:n,4:a,5:s}),{2:n,3:594,4:a,5:s},{4:[1,595]},{4:[1,596]},t(re,[2,502]),t(K,[2,686],{74:[1,597]}),t(gt,[2,687]),{2:n,3:598,4:a,5:s},{2:n,3:244,4:a,5:s,199:599},{2:n,3:600,4:a,5:s},t(Be,mt,{398:601,156:vt}),{405:[1,603]},{2:n,3:604,4:a,5:s},t(Be,mt,{398:605,156:vt}),t(Be,mt,{398:606,156:vt}),{2:n,3:607,4:a,5:s},t(St,[2,1129]),t(St,[2,1130]),t(K,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:608,114:625,327:637,2:n,4:a,5:s,53:o,72:u,89:c,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:Rt,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,146:h,154:$t,156:d,170:Mt,171:Ut,179:_t,180:Ft,189:f,266:p,267:b,290:E,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(Qe,[2,288]),t(Qe,[2,289]),t(Qe,[2,290]),t(Qe,[2,291]),t(Qe,[2,292]),t(Qe,[2,293]),t(Qe,[2,294]),t(Qe,[2,295]),t(Qe,[2,296]),t(Qe,[2,297]),t(Qe,[2,298]),t(Qe,[2,299]),t(Qe,[2,300]),t(Qe,[2,301]),t(Qe,[2,302]),t(Qe,[2,303]),t(Qe,[2,304]),t(Qe,[2,305]),{2:n,3:168,4:a,5:s,26:654,27:653,36:649,40:648,56:165,77:ie,79:75,89:c,94:651,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,184:99,189:f,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,264:650,265:me,266:p,267:[1,655],270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:[1,652],291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,339:v,419:190,420:Ge,424:Ve},t(Qe,[2,309]),t(Qe,[2,310]),{77:[1,656]},t([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ar,{77:ct,116:[1,657]}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:658,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:659,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:661,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:662,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve
@@ -9,8 +9,8 @@ n.queries.push(s[o-1]);break;case 424:this.$=new n.Op({left:s[o-4],op:"IN",right
124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{74:[1,1424],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{74:[1,1425],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{74:[1,1426],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(K,[2,581]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:1427,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1428,4:a,5:s},t(K,[2,583]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,120:1429,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{77:[1,1430]},{2:n,3:1431,4:a,5:s},{76:va,139:[2,1149],480:1432,483:1433},t(Qa,[2,1148]),{139:[1,1434]},{139:[2,1152]},t(Sn,[2,737]),t(Dn,[2,744]),t(Dn,[2,1166]),{2:n,3:1268,4:a,5:s,76:[1,1437],351:1435,358:1436,384:1438},{2:n,3:1011,4:a,5:s,100:1439,111:1440},{40:1441,79:75,89:c,184:99,189:f},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1442,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Ma,[2,722]),{2:n,3:1011,4:a,5:s,111:1065,143:fa,145:pa,147:1443,336:1064,337:1066},{2:n,3:168,4:a,5:s,56:165,77:ie,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:1444,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Ma,[2,727]),{2:n,3:244,4:a,5:s,199:1445},{335:Ta,338:Aa,339:ya,511:1446},t(gt,[2,691],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1447,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{74:[1,1448],78:[1,1449]},t(os,[2,543]),t(os,[2,544]),{74:ss,78:[1,1450]},t(gt,[2,565]),t(Ra,[2,380],{114:625,327:637,115:yt,116:Nt,123:Ct,133:Ot,136:wt,138:It,141:kt,142:Lt,179:_t,180:Ft,312:qt,316:Bt,317:jt,318:Ht,319:Jt}),t(Ra,[2,382],{114:625,327:637,115:yt,116:Nt,123:Ct,133:Ot,136:wt,138:It,141:kt,142:Lt,179:_t,180:Ft,312:qt,316:Bt,317:jt,318:Ht,319:Jt}),t(Qe,[2,396]),t(Qe,[2,400]),{78:[1,1451]},{74:pn,78:[1,1452]},t(Qe,[2,422]),t(Qe,[2,424]),{78:[1,1453],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{78:[1,1454]},{74:pn,78:[1,1455]},t(Qe,[2,427]),t(Qe,[2,327]),{77:[1,1456]},t(Qe,rs,{275:1457,276:ns}),t(Qe,rs,{275:1458,276:ns}),t($a,[2,284]),t(Qe,[2,281]),t(Qe,[2,369]),t(Qn,[2,373],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{74:[1,1460],78:[1,1459]},{74:[1,1462],78:[1,1461],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{2:n,3:1325,4:a,5:s},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1194,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,345:1463,419:190,420:Ge,424:Ve},t(Fa,[2,477]),t(Fa,[2,478]),{40:1466,77:sa,79:75,89:c,143:le,144:979,145:ze,149:na,152:fe,181:ge,184:99,189:f,201:980,302:_e,341:1464,342:1465,344:aa,419:190,420:Ge,424:Ve},{2:n,3:1011,4:a,5:s,111:1467},t(Fa,[2,473]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1468,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{77:sa,143:le,144:979,145:ze,152:fe,181:ge,201:980,302:_e,342:1469,419:190,420:Ge,424:Ve},t(Ma,[2,460],{74:Ua}),t(Ma,[2,467]),t(K,[2,694]),t(us,[2,699]),t(us,[2,700]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:817,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,174:1470,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,253:816,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{170:[1,1472],309:[1,1471]},{460:[1,1473]},t(pr,[2,180]),t(ys,[2,240],{85:1474,232:[1,1475]}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1476,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1477,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1478,4:a,5:s},t(ia,[2,170],{216:1357,221:1360,215:1479,205:1480,206:hs,208:ds,222:fs,223:ps,224:bs,225:Es,226:gs,227:ms,228:vs,229:Ss}),{2:n,3:219,4:a,5:s,77:Je,132:Ye,143:le,144:212,145:he,152:fe,156:Q,181:ge,199:213,200:215,201:214,202:217,209:1481,213:We,214:218,290:z,291:Z,292:ee,293:te,302:_e,419:190,420:Ge,424:Ve},t(Ns,[2,205]),t(Ns,[2,206]),{2:n,3:219,4:a,5:s,77:[1,1486],143:le,144:1484,145:he,152:fe,156:Q,181:ge,199:1483,200:1487,201:1485,202:1488,217:1482,290:z,291:Z,292:ee,293:te,302:_e,419:190,420:Ge,424:Ve},{207:[1,1489],223:Cs},{207:[1,1491],223:Rs},t(Os,[2,222]),{206:[1,1495],208:[1,1494],221:1493,223:ps,224:bs,225:Es,226:gs,227:ms,228:vs,229:Ss},t(Os,[2,224]),{223:[1,1496]},{208:[1,1498],223:[1,1497]},{208:[1,1500],223:[1,1499]},{208:[1,1501]},{223:[1,1502]},{223:[1,1503]},{74:ls,204:1504,205:1356,206:hs,208:ds,215:1355,216:1357,221:1360,222:fs,223:ps,224:bs,225:Es,226:gs,227:ms,228:vs,229:Ss},t(Ga,[2,84]),t(da,[2,100]),{74:ws,78:[1,1505]},{78:[1,1507]},t(Is,[2,261]),{78:[2,1060]},t(Is,[2,263],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,242:[1,1508],243:[1,1509],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(da,[2,99]),t(Va,[2,1064],{153:1015,179:ca,180:la,181:ha}),t(da,[2,101]),t(da,[2,102]),t(da,[2,103]),t(da,[2,121]),t(da,[2,124]),t(da,[2,127]),t(Va,[2,1068],{153:1015,179:ca,180:la,181:ha}),t(da,[2,128]),t(Va,[2,1070],{153:1015,179:ca,180:la,181:ha}),t(da,[2,129]),t(Va,[2,1072],{153:1015,179:ca,180:la,181:ha}),t(da,[2,130]),t(Va,[2,1076],{153:1015,179:ca,180:la,181:ha}),t(da,[2,131]),t(Ba,[2,1083],{177:1510}),t(Ba,[2,1086],{153:1015,179:ca,180:la,181:ha}),{74:As,78:[1,1511]},t(da,[2,133]),t(Va,[2,1078],{153:1015,179:ca,180:la,181:ha}),t(da,[2,134]),t(Va,[2,1080],{153:1015,179:ca,180:la,181:ha}),t(da,[2,135]),t(da,[2,136]),t(da,[2,137]),t(da,[2,138]),t(da,[2,139]),t(da,[2,140]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:1512,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Ha,[2,1082],{153:1015,179:ca,180:la,181:ha}),t(K,[2,607]),t(K,[2,603]),t(K,[2,605]),t(K,[2,601]),t(dn,[2,71]),t(K,[2,449],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(Ya,[2,452]),t(Ya,[2,453],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1513,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Wa,[2,662]),t(K,[2,655],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{2:n,3:1514,4:a,5:s},t(Sn,[2,545],{385:1515,391:1516,392:1517,366:1525,154:xs,187:Ds,230:ks,297:Ls,343:$s,356:Ms,368:Us,369:_s,373:Fs,374:Ps}),t(Sn,[2,535]),t(K,[2,576],{76:[1,1529]}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1530,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1531,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1532,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1533,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{74:pn,78:[1,1534]},t(K,[2,585]),{74:ws,78:[1,1535]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,120:1536,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t([10,74,78,139,306,310,602,764],[2,741]),{139:[1,1537]},{139:[2,1150]},{2:n,3:1122,4:a,5:s,132:ft,137:pt,143:tt,145:rt,152:bt,431:585,475:1124,478:1538,482:582,493:579,497:581},{78:[1,1539]},{74:[1,1540],78:[2,506]},{40:1541,79:75,89:c,184:99,189:f},t(os,[2,532]),{74:as,78:[1,1542]},t(Ts,is),t(K,[2,1133],{412:1543,413:1544,72:qs}),t(Ma,za,{79:75,184:99,114:625,327:637,40:1299,468:1546,89:c,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,146:Za,154:$t,170:Mt,171:Ut,179:_t,180:Ft,189:f,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr,470:es}),t(Ma,[2,725],{74:Ja}),t(Ma,[2,726],{74:pn}),t([10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],[2,1181],{512:1547,3:1548,2:n,4:a,5:s,76:[1,1549]}),t(Gs,[2,1183],{513:1550,76:[1,1551]}),t(gt,[2,692],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{131:[1,1552]},t(Na,[2,538]),t(Na,[2,540]),t(Qe,[2,412]),t(Qe,[2,413]),t(Qe,[2,439]),t(Qe,[2,423]),t(Qe,[2,425]),{118:Vs,277:1553,278:1554,279:[1,1555]},t(Qe,[2,328]),t(Qe,[2,329]),t(Qe,[2,316]),{131:[1,1557]},t(Qe,[2,318]),{131:[1,1558]},{74:ss,78:[1,1559]},{77:sa,143:le,144:979,145:ze,152:fe,181:ge,201:980,302:_e,342:1560,419:190,420:Ge,424:Ve},t(Ma,[2,465],{74:Ua}),t(Ma,[2,468]),t(Ts,[2,488]),t(os,[2,480],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(Ma,[2,459],{74:Ua}),t(K,[2,718],{74:ga,198:[1,1561]}),{335:Bs,338:js,461:1562},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1565,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{119:[1,1567],170:[1,1568],309:[1,1566]},t(Hs,[2,259],{86:1569,118:[1,1570]}),{119:[1,1571]},t(cs,[2,239],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{95:[1,1572],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{95:[1,1573]},t(Ns,[2,203]),t(Ns,[2,204]),t(Ts,[2,178]),t(Ns,[2,237],{218:1574,230:[1,1575],231:[1,1576]}),t(Js,[2,208],{3:1577,2:n,4:a,5:s,76:[1,1578]}),t(Ys,[2,1095],{219:1579,76:[1,1580]}),{2:n,3:1581,4:a,5:s,76:[1,1582]},{40:1583,79:75,89:c,184:99,189:f},t(Js,[2,216],{3:1584,2:n,4:a,5:s,76:[1,1585]}),t(Js,[2,219],{3:1586,2:n,4:a,5:s,76:[1,1587]}),{77:[1,1588]},t(Os,[2,234]),{77:[1,1589]},t(Os,[2,230]),t(Os,[2,223]),{223:Rs},{223:Cs},t(Os,[2,225]),t(Os,[2,226]),{223:[1,1590]},t(Os,[2,228]),{223:[1,1591]},{223:[1,1592]},t(Os,[2,232]),t(Os,[2,233]),{78:[1,1593],205:1480,206:hs,208:ds,215:1479,216:1357,221:1360,222:fs,223:ps,224:bs,225:Es,226:gs,227:ms,228:vs,229:Ss},t(da,[2,91]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1594,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(da,[2,92]),t(Is,[2,264]),{244:[1,1595]},t(os,[2,142],{419:190,3:733,114:736,144:758,158:768,160:769,117:1596,2:n,4:a,5:s,72:Tr,76:Ar,77:yr,112:Nr,115:yt,116:Nt,118:Cr,122:Rr,123:Or,124:wr,128:Ir,129:xr,130:Dr,131:kr,132:Lr,133:$r,134:Mr,135:Ur,136:_r,137:Fr,138:Pr,139:qr,140:Gr,141:Vr,142:Br,143:jr,145:Hr,146:Jr,148:Yr,149:Wr,150:Xr,152:Kr,154:Qr,156:zr,162:Zr,164:en,166:tn,168:rn,169:nn,170:an,171:sn,172:on,173:un,175:cn,185:ln,187:hn,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,420:Ge,424:Ve}),t(da,[2,132]),{74:pn,78:[1,1597]},t(Ya,[2,454],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(K,[2,572]),t(Sn,[2,534]),t(Sn,[2,546],{366:1525,392:1598,154:xs,187:Ds,230:ks,297:Ls,343:$s,356:Ms,368:Us,369:_s,373:Fs,374:Ps}),t(fn,[2,548]),{370:[1,1599]},{370:[1,1600]},{2:n,3:244,4:a,5:s,199:1601},t(fn,[2,554],{77:[1,1602]}),{2:n,3:114,4:a,5:s,77:[1,1604],113:251,131:oe,132:ue,143:le,152:fe,156:Q,181:ge,196:250,200:1605,201:254,257:252,258:253,265:Ze,274:1603,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,302:_e},t(fn,[2,558]),{297:[1,1606]},t(fn,[2,560]),t(fn,[2,561]),{335:[1,1607]},{77:[1,1608]},{2:n,3:1609,4:a,5:s},{78:[1,1610],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{78:[1,1611],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{78:[1,1612],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{78:[1,1613],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(K,Xa,{407:1614,76:Ka}),t(K,[2,591]),{74:ws,78:[1,1615]},{2:n,3:1122,4:a,5:s,132:ft,137:pt,143:tt,145:rt,152:bt,431:585,475:1124,478:1616,482:582,493:579,497:581},t(Sn,[2,735]),t(K,[2,493],{352:1617,354:1618,355:1619,4:Ws,243:Xs,343:Ks,356:Qs}),t(zs,Zs,{3:1268,359:1624,384:1625,360:1626,361:1627,2:n,4:a,5:s,367:ei}),{78:[2,507]},{76:[1,1629]},t(K,[2,609]),t(K,[2,1134]),{368:[1,1631],414:[1,1630]},t(Ma,[2,728]),t(K,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1632,2:n,4:a,5:s,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(K,[2,762]),t(Gs,[2,1182]),t(K,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:1633,2:n,4:a,5:s,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(Gs,[2,1184]),{78:[1,1634]},{78:[1,1635],118:Vs,278:1636},{78:[1,1637]},{119:[1,1638]},{119:[1,1639]},{78:[1,1640]},{78:[1,1641]},t(Fa,[2,476]),t(Ma,[2,464],{74:Ua}),{2:n,3:244,4:a,5:s,143:tt,145:rt,199:1643,431:1642},t(us,[2,703]),t(us,[2,705]),{146:[1,1644]},{99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,309:[1,1645],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},{339:ti,462:1646},{417:[1,1649],463:[1,1648]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1650,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(ri,[2,267],{87:1651,245:[1,1652],247:[1,1653]}),{119:[1,1654]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1655,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1661,4:a,5:s},{2:n,3:1662,4:a,5:s},t(Ns,[2,207]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1663,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1011,4:a,5:s,100:1664,111:1440},t(Js,[2,209]),{2:n,3:1665,4:a,5:s},t(Js,[2,1097],{220:1666,3:1667,2:n,4:a,5:s}),t(Ys,[2,1096]),t(Js,[2,212]),{2:n,3:1668,4:a,5:s},{78:[1,1669]},t(Js,[2,217]),{2:n,3:1670,4:a,5:s},t(Js,[2,220]),{2:n,3:1671,4:a,5:s},{40:1672,79:75,89:c,184:99,189:f},{40:1673,79:75,89:c,184:99,189:f},t(Os,[2,227]),t(Os,[2,229]),t(Os,[2,231]),t(ia,[2,171]),t(Is,[2,262]),t(Is,[2,265],{242:[1,1674]}),t(Ba,[2,1084],{153:1015,179:ca,180:la,181:ha}),t(da,[2,141]),t(fn,[2,547]),t(fn,[2,550]),{374:[1,1675]},t(fn,[2,1127],{395:1676,393:1677,77:ii}),{131:oe,196:1679},t(fn,[2,555]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1680,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(fn,[2,557]),t(fn,[2,559]),{2:n,3:114,4:a,5:s,77:[1,1682],113:251,131:oe,132:ue,143:le,152:fe,156:Q,181:ge,196:250,200:255,201:254,257:252,258:253,265:Ze,274:1681,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,302:_e},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1683,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(K,[2,578]),t(sr,[2,349]),t(sr,[2,350]),t(sr,[2,351]),t(sr,[2,352]),t(K,[2,582]),t(K,[2,592]),t(Sn,[2,734]),t(K,[2,489]),t(K,[2,494],{355:1684,4:Ws,243:Xs,343:Ks,356:Qs}),t(oi,[2,496]),t(oi,[2,497]),{124:[1,1685]},{124:[1,1686]},{124:[1,1687]},{74:[1,1688],78:[2,505]},t(os,[2,533]),t(os,[2,508]),{187:[1,1696],193:[1,1697],362:1689,363:1690,364:1691,365:1692,366:1693,368:Us,369:[1,1694],370:[1,1698],373:[1,1695]},{2:n,3:1699,4:a,5:s},{40:1700,79:75,89:c,184:99,189:f},{415:[1,1701]},{416:[1,1702]},t(K,[2,761]),t(K,[2,763]),t(Na,[2,537]),t(Qe,[2,331]),{78:[1,1703]},t(Qe,[2,332]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1704,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,120:1705,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Qe,[2,317]),t(Qe,[2,319]),{2:n,3:1706,4:a,5:s},t(K,[2,720],{77:[1,1707]}),{2:n,3:1011,4:a,5:s,111:1065,143:fa,145:pa,147:1708,336:1064,337:1066},{335:Bs,338:js,461:1709},t(us,[2,707]),{77:[1,1711],343:[1,1712],344:[1,1710]},{170:[1,1714],309:[1,1713]},{170:[1,1716],309:[1,1715]},{99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,309:[1,1717],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(ua,[2,250],{88:1718,162:[1,1719],168:[1,1721],169:[1,1720]}),{131:oe,196:1722},{131:oe,196:1723},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1376,111:149,113:153,120:1724,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,241:1374,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(ys,[2,248],{234:1725,74:ui,239:[1,1727]}),t(ci,[2,242]),{146:[1,1728]},{77:[1,1729]},{77:[1,1730]},t(ci,[2,247],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{78:[2,1051],96:1731,99:[1,1733],102:1732},{99:[1,1734]},t(Ns,[2,235],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),t(Ns,[2,236],{74:as}),t(Js,[2,210]),t(Js,[2,211]),t(Js,[2,1098]),t(Js,[2,213]),{2:n,3:1735,4:a,5:s,76:[1,1736]},t(Js,[2,218]),t(Js,[2,221]),{78:[1,1737]},{78:[1,1738]},t(Is,[2,266]),{2:n,3:244,4:a,5:s,199:1739},t(fn,[2,552]),t(fn,[2,1128]),{2:n,3:1740,4:a,5:s},{74:[1,1741]},{78:[1,1742],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,
317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(fn,[2,562]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1743,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{78:[1,1744],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(oi,[2,495]),{2:n,3:1745,4:a,5:s},{131:oe,196:1746},{2:n,3:1747,4:a,5:s},t(zs,Zs,{361:1627,360:1748,367:ei}),t(Sn,[2,510]),t(Sn,[2,511]),t(Sn,[2,512]),t(Sn,[2,513]),t(Sn,[2,514]),{370:[1,1749]},{370:[1,1750]},t(li,[2,1121],{382:1751,370:[1,1752]}),{2:n,3:1753,4:a,5:s},{2:n,3:1754,4:a,5:s},t(zs,[2,516]),t(K,[2,1131],{411:1755,413:1756,72:qs}),t(K,[2,610]),t(K,[2,611],{367:[1,1757]}),t(Qe,[2,333]),t([78,118],[2,334],{74:ui}),{74:ws,78:[2,335]},t(K,[2,719]),{2:n,3:1011,4:a,5:s,100:1758,111:1440},t(us,[2,706],{74:Ja}),t(us,[2,704]),{77:sa,143:le,144:979,145:ze,152:fe,181:ge,201:980,302:_e,342:1759,419:190,420:Ge,424:Ve},{2:n,3:1011,4:a,5:s,100:1760,111:1440},{344:[1,1761]},{339:ti,462:1762},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1763,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{339:ti,462:1764},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1765,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{339:ti,462:1766},t(ua,[2,72]),{40:1767,79:75,89:c,164:[1,1768],184:99,189:f,240:[1,1769]},{40:1770,79:75,89:c,184:99,189:f,240:[1,1771]},{40:1772,79:75,89:c,184:99,189:f,240:[1,1773]},t(ri,[2,270],{246:1774,247:[1,1775]}),{248:1776,249:[2,1099],766:[1,1777]},t(Hs,[2,260],{74:ws}),t(ys,[2,241]),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,235:1778,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1779,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{77:[1,1780]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1781,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1782,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{78:[1,1783]},{78:[2,1052]},{77:[1,1784]},{77:[1,1785]},t(Js,[2,214]),{2:n,3:1786,4:a,5:s},{2:n,3:1787,4:a,5:s,76:[1,1788]},{2:n,3:1789,4:a,5:s,76:[1,1790]},t(fn,[2,1125],{394:1791,393:1792,77:ii}),{78:[1,1793]},{131:oe,196:1794},t(fn,[2,556]),{78:[1,1795],99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(fn,[2,517]),t(oi,[2,498]),t(oi,[2,499]),t(oi,[2,500]),t(os,[2,509]),{2:n,3:1797,4:a,5:s,77:[2,1117],371:1796},{77:[1,1798]},{2:n,3:1800,4:a,5:s,77:[2,1123],383:1799},t(li,[2,1122]),{77:[1,1801]},{77:[1,1802]},t(K,[2,608]),t(K,[2,1132]),t(zs,Zs,{361:1627,360:1803,367:ei}),{74:as,78:[1,1804]},t(us,[2,713],{74:Ua}),{74:as,78:[1,1805]},t(us,[2,715]),t(us,[2,708]),{99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,309:[1,1806],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(us,[2,711]),{99:Tt,112:At,114:625,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,309:[1,1807],311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,327:637,330:er,331:tr,332:rr,333:nr},t(us,[2,709]),t(ua,[2,251]),{40:1808,79:75,89:c,184:99,189:f,240:[1,1809]},{40:1810,79:75,89:c,184:99,189:f},t(ua,[2,253]),{40:1811,79:75,89:c,184:99,189:f},t(ua,[2,254]),{40:1812,79:75,89:c,184:99,189:f},t(ri,[2,268]),{131:oe,196:1813},{249:[1,1814]},{249:[2,1100]},t(ci,[2,243]),t(ys,[2,249],{114:625,327:637,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,233:1815,235:1656,236:ni,237:ai,238:si,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{74:ui,78:[1,1816]},{74:ui,78:[1,1817]},t(qa,[2,1053],{97:1818,104:1819,3:1821,2:n,4:a,5:s,76:hi}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:1824,103:1822,105:1823,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1011,4:a,5:s,100:1825,111:1440},t(Js,[2,215]),t(Ns,[2,173]),{2:n,3:1826,4:a,5:s},t(Ns,[2,175]),{2:n,3:1827,4:a,5:s},t(fn,[2,551]),t(fn,[2,1126]),t(fn,[2,549]),{78:[1,1828]},t(fn,[2,563]),{77:[1,1829]},{77:[2,1118]},{2:n,3:1831,4:a,5:s,132:di,372:1830},{77:[1,1833]},{77:[2,1124]},{2:n,3:1011,4:a,5:s,100:1834,111:1440},{2:n,3:1011,4:a,5:s,100:1835,111:1440},t(K,[2,612]),t(K,[2,721]),{343:[1,1837],344:[1,1836]},{339:ti,462:1838},{335:Bs,338:js,461:1839},t(ua,[2,252]),{40:1840,79:75,89:c,184:99,189:f},t(ua,[2,255]),t(ua,[2,257]),t(ua,[2,258]),t(ri,[2,271]),{131:[2,1101],250:1841,645:[1,1842]},{74:ui,78:[1,1843]},t(ci,[2,245]),t(ci,[2,246]),t(qa,[2,74]),t(qa,[2,1054]),{2:n,3:1844,4:a,5:s},t(qa,[2,78]),{74:[1,1846],78:[1,1845]},t(os,[2,80]),t(os,[2,81],{114:625,327:637,76:[1,1847],99:Tt,112:At,115:yt,116:Nt,123:Ct,124:En,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,154:$t,170:Mt,171:Ut,179:_t,180:Ft,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr}),{74:as,78:[1,1848]},t(Ns,[2,174]),t(Ns,[2,176]),t(fn,[2,553]),{2:n,3:1831,4:a,5:s,132:di,372:1849},{74:fi,78:[1,1850]},t(os,[2,528]),t(os,[2,529]),{2:n,3:1011,4:a,5:s,100:1852,111:1440},{74:as,78:[1,1853]},{74:as,78:[1,1854]},{77:sa,143:le,144:979,145:ze,152:fe,181:ge,201:980,302:_e,342:1855,419:190,420:Ge,424:Ve},{344:[1,1856]},t(us,[2,710]),t(us,[2,712]),t(ua,[2,256]),{131:oe,196:1857},{131:[2,1102]},t(ci,[2,244]),t(qa,[2,77]),{78:[2,76]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:1824,105:1858,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:1859,4:a,5:s},{78:[1,1860]},{74:fi,78:[1,1861]},{374:[1,1862]},{2:n,3:1863,4:a,5:s,132:[1,1864]},{74:as,78:[1,1865]},t(Sn,[2,526]),t(Sn,[2,527]),t(us,[2,714],{74:Ua}),t(us,[2,716]),t(pi,[2,1103],{251:1866,766:[1,1867]}),t(os,[2,79]),t(os,[2,82]),t(qa,[2,1055],{3:1821,101:1868,104:1869,2:n,4:a,5:s,76:hi}),t(Sn,[2,518]),{2:n,3:244,4:a,5:s,199:1870},t(os,[2,530]),t(os,[2,531]),t(Sn,[2,525]),t(ri,[2,1105],{252:1871,415:[1,1872]}),t(pi,[2,1104]),t(qa,[2,75]),t(qa,[2,1056]),t(bi,[2,1119],{375:1873,377:1874,77:[1,1875]}),t(ri,[2,269]),t(ri,[2,1106]),t(Sn,[2,521],{376:1876,378:1877,230:[1,1878]}),t(bi,[2,1120]),{2:n,3:1831,4:a,5:s,132:di,372:1879},t(Sn,[2,519]),{230:[1,1881],379:1880},{338:[1,1882]},{74:fi,78:[1,1883]},t(Sn,[2,522]),{335:[1,1884]},{380:[1,1885]},t(bi,[2,520]),{380:[1,1886]},{381:[1,1887]},{381:[1,1888]},{230:[2,523]},t(Sn,[2,524])],defaultActions:{105:[2,6],194:[2,336],195:[2,337],196:[2,338],197:[2,339],198:[2,340],199:[2,341],200:[2,342],201:[2,343],202:[2,344],209:[2,695],591:[2,1142],653:[2,1107],654:[2,1108],710:[2,696],780:[2,1073],781:[2,1074],926:[2,446],927:[2,447],928:[2,448],987:[2,697],1288:[2,1152],1375:[2,1060],1433:[2,1150],1541:[2,507],1732:[2,1052],1777:[2,1100],1797:[2,1118],1800:[2,1124],1842:[2,1102],1845:[2,76],1887:[2,523]},parseError:function(e,t){if(!t.recoverable){var r=new Error(e);throw r.hash=t,r}this.trace(e)},parse:function(e){function t(e){for(var t=n.length-1,r=0;;){if(h.toString()in i[e])return r;if(0===e||t<2)return!1;t-=2,e=n[t],++r}}var r=this,n=[0],a=[null],s=[],i=this.table,o="",u=0,c=0,l=0,h=2,d=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var b in this.yy)Object.prototype.hasOwnProperty.call(this.yy,b)&&(p.yy[b]=this.yy[b]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var E=f.yylloc;s.push(E);var g=f.options&&f.options.ranges;"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var m,v,S,T,A,y,N,C,R,O=function(){var e;return e=f.lex()||1,"number"!=typeof e&&(e=r.symbols_[e]||e),e},w={};;){if(S=n[n.length-1],this.defaultActions[S]?T=this.defaultActions[S]:(null!==m&&void 0!==m||(m=O()),T=i[S]&&i[S][m]),void 0===T||!T.length||!T[0]){var I,x="";if(l)1!==v&&(I=t(S));else{I=t(S),R=[];for(y in i[S])this.terminals_[y]&&y>h&&R.push("'"+this.terminals_[y]+"'");x=f.showPosition?"Parse error on line "+(u+1)+":\n"+f.showPosition()+"\nExpecting "+R.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(u+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(x,{text:f.match,token:this.terminals_[m]||m,line:f.yylineno,loc:E,expected:R,recoverable:!1!==I})}if(3==l){if(1===m||1===v)throw new Error(x||"Parsing halted while starting to recover from another error.");c=f.yyleng,o=f.yytext,u=f.yylineno,E=f.yylloc,m=O()}if(!1===I)throw new Error(x||"Parsing halted. No suitable error recovery rule available.");!function(e){n.length=n.length-2*e,a.length=a.length-e,s.length=s.length-e}(I),v=m==h?null:m,m=h,S=n[n.length-1],T=i[S]&&i[S][h],l=3}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+m);switch(T[0]){case 1:n.push(m),a.push(f.yytext),s.push(f.yylloc),n.push(T[1]),m=null,v?(m=v,v=null):(c=f.yyleng,o=f.yytext,u=f.yylineno,E=f.yylloc,l>0&&l--);break;case 2:if(N=this.productions_[T[1]][1],w.$=a[a.length-N],w._$={first_line:s[s.length-(N||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(N||1)].first_column,last_column:s[s.length-1].last_column},g&&(w._$.range=[s[s.length-(N||1)].range[0],s[s.length-1].range[1]]),void 0!==(A=this.performAction.apply(w,[o,c,u,p.yy,T[1],a,s].concat(d))))return A;N&&(n=n.slice(0,-1*N*2),a=a.slice(0,-1*N),s=s.slice(0,-1*N)),n.push(this.productions_[T[1]][0]),a.push(w.$),s.push(w._$),C=i[n[n.length-2]][n[n.length-1]],n.push(C);break;case 3:return!0}}return!0}},gi=["A","ABSENT","ABSOLUTE","ACCORDING","ACTION","ADA","ADD","ADMIN","AFTER","ALWAYS","ASC","ASSERTION","ASSIGNMENT","ATTRIBUTE","ATTRIBUTES","BASE64","BEFORE","BERNOULLI","BLOCKED","BOM","BREADTH","C","CASCADE","CATALOG","CATALOG_NAME","CHAIN","CHARACTERISTICS","CHARACTERS","CHARACTER_SET_CATALOG","CHARACTER_SET_NAME","CHARACTER_SET_SCHEMA","CLASS_ORIGIN","COBOL","COLLATION","COLLATION_CATALOG","COLLATION_NAME","COLLATION_SCHEMA","COLUMNS","COLUMN_NAME","COMMAND_FUNCTION","COMMAND_FUNCTION_CODE","COMMITTED","CONDITION_NUMBER","CONNECTION","CONNECTION_NAME","CONSTRAINTS","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONSTRUCTOR","CONTENT","CONTINUE","CONTROL","CURSOR_NAME","DATA","DATETIME_INTERVAL_CODE","DATETIME_INTERVAL_PRECISION","DB","DEFAULTS","DEFERRABLE","DEFERRED","DEFINED","DEFINER","DEGREE","DEPTH","DERIVED","DESC","DESCRIPTOR","DIAGNOSTICS","DISPATCH","DOCUMENT","DOMAIN","DYNAMIC_FUNCTION","DYNAMIC_FUNCTION_CODE","EMPTY","ENCODING","ENFORCED","EXCLUDE","EXCLUDING","EXPRESSION","FILE","FINAL","FIRST","FLAG","FOLLOWING","FORTRAN","FOUND","FS","G","GENERAL","GENERATED","GO","GOTO","GRANTED","HEX","HIERARCHY","ID","IGNORE","IMMEDIATE","IMMEDIATELY","IMPLEMENTATION","INCLUDING","INCREMENT","INDENT","INITIALLY","INPUT","INSTANCE","INSTANTIABLE","INSTEAD","INTEGRITY","INVOKER","ISOLATION","K","KEY","KEY_MEMBER","KEY_TYPE","LAST","LENGTH","LEVEL","LIBRARY","LIMIT","LINK","LOCATION","LOCATOR","M","MAP","MAPPING","MATCHED","MAXVALUE","MESSAGE_LENGTH","MESSAGE_OCTET_LENGTH","MESSAGE_TEXT","MINVALUE","MORE","MUMPS","NAME","NAMES","NAMESPACE","NESTING","NEXT","NFC","NFD","NFKC","NFKD","NIL","NORMALIZED","NULLABLE","NULLS","NUMBER","OBJECT","OCTETS","OFF","OPTION","OPTIONS","ORDERING","ORDINALITY","OTHERS","OUTPUT","OVERRIDING","P","PAD","PARAMETER_MODE","PARAMETER_NAME","PARAMETER_ORDINAL_POSITION","PARAMETER_SPECIFIC_CATALOG","PARAMETER_SPECIFIC_NAME","PARAMETER_SPECIFIC_SCHEMA","PARTIAL","PASCAL","PASSING","PASSTHROUGH","PATH","PERMISSION","PLACING","PLI","PRECEDING","PRESERVE","PRIOR","PRIVILEGES","PUBLIC","READ","RECOVERY","RELATIVE","REPEATABLE","REQUIRING","RESPECT","RESTART","RESTORE","RESTRICT","RETURNED_CARDINALITY","RETURNED_LENGTH","RETURNED_OCTET_LENGTH","RETURNED_SQLSTATE","RETURNING","ROLE","ROUTINE","ROUTINE_CATALOG","ROUTINE_NAME","ROUTINE_SCHEMA","ROW_COUNT","SCALE","SCHEMA","SCHEMA_NAME","SCOPE_CATALOG","SCOPE_NAME","SCOPE_SCHEMA","SECTION","SECURITY","SELECTIVE","SELF","SEQUENCE","SERIALIZABLE","SERVER","SERVER_NAME","SESSION","SETS","SIMPLE","SIZE","SOURCE","SPACE","SPECIFIC_NAME","STANDALONE","STATE","STATEMENT","STRIP","STRUCTURE","STYLE","SUBCLASS_ORIGIN","T","TABLE_NAME","TEMPORARY","TIES","TOKEN","TOP_LEVEL_COUNT","TRANSACTION","TRANSACTIONS_COMMITTED","TRANSACTIONS_ROLLED_BACK","TRANSACTION_ACTIVE","TRANSFORM","TRANSFORMS","TRIGGER_CATALOG","TRIGGER_NAME","TRIGGER_SCHEMA","TYPE","UNBOUNDED","UNCOMMITTED","UNDER","UNLINK","UNNAMED","UNTYPED","URI","USAGE","USER_DEFINED_TYPE_CATALOG","USER_DEFINED_TYPE_CODE","USER_DEFINED_TYPE_NAME","USER_DEFINED_TYPE_SCHEMA","VALID","VERSION","VIEW","WHITESPACE","WORK","WRAPPER","WRITE","XMLDECLARATION","XMLSCHEMA","YES","ZONE"];Ei.parseError=function(e,t){if(!(t.expected&&t.expected.indexOf("'LITERAL'")>-1&&/[a-zA-Z_][a-zA-Z_0-9]*/.test(t.token)&&gi.indexOf(t.token)>-1))throw new SyntaxError(e)};var mi=function(){return{EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,r=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var r,n,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),n=e[0].match(/(?:\r\n?|\n).*/g),n&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],r=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var s in a)this[s]=a[s];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,r,n;this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),s=0;st[0].length)){if(t=r,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(r,a[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,a[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,r,n){switch(r){case 0:return 266;case 1:return 302;case 2:return 420;case 3:return 299;case 4:case 5:return 5;case 6:case 7:return 296;case 8:case 9:return 132;case 10:return;case 11:break;case 12:return 316;case 13:return 319;case 14:return t.yytext="VALUE",89;case 15:return t.yytext="VALUE",189;case 16:return t.yytext="ROW",189;case 17:return t.yytext="COLUMN",189;case 18:return t.yytext="MATRIX",189;case 19:return t.yytext="INDEX",189;case 20:return t.yytext="RECORDSET",189;case 21:return t.yytext="TEXT",189;case 22:return t.yytext="SELECT",189;case 23:return 520;case 24:return 381;case 25:return 402;case 26:return 515;case 27:return 287;case 28:case 29:return 269;case 30:return 164;case 31:return 400;case 32:return 170;case 33:return 229;case 34:return 166;case 35:return 207;case 36:return 288;case 37:return 76;case 38:return 418;case 39:return 242;case 40:return 404;case 41:return 356;case 42:return 284;case 43:return 514;case 44:return 437;case 45:return 330;case 46:return 441;case 47:return 331;case 48:return 315;case 49:return 119;case 50:return 112;case 51:return 315;case 52:return 112;case 53:return 315;case 54:return 112;case 55:return 315;case 56:return 508;case 57:return 303;case 58:return 271;case 59:return 368;case 60:return 130;case 61:return"CLOSE";case 62:return 243;case 63:case 64:return 190;case 65:return 434;case 66:return 367;case 67:return 470;case 68:return 440;case 69:return 273;case 70:return 240;case 71:return 281;case 72:return 267;case 73:return 206;case 74:return 238;case 75:return 265;case 76:return"CURSOR";case 77:return 405;case 78:return 291;case 79:return 292;case 80:return 448;case 81:return 343;case 82:return 338;case 83:return"DELETED";case 84:return 242;case 85:return 406;case 86:return 185;case 87:return 396;case 88:return 447;case 89:return 135;case 90:return 306;case 91:return 389;case 92:return 310;case 93:return 314;case 94:return 169;case 95:case 96:return 508;case 97:return 298;case 98:return 14;case 99:return 295;case 100:return 249;case 101:return 285;case 102:return 95;case 103:return 373;case 104:return 183;case 105:return 227;case 106:return 268;case 107:return 313;case 108:return 602;case 109:return 472;case 110:return 232;case 111:return 236;case 112:return 239;case 113:return 156;case 114:return 356;case 115:return 332;case 116:return 99;case 117:return 193;case 118:return 212;case 119:return 224;case 120:return 516;case 121:return 339;case 122:return 213;case 123:return 168;case 124:return 293;case 125:return 198;case 126:return 223;case 127:return 370;case 128:return 286;case 129:return"LET";case 130:return 225;case 131:return 112;case 132:return 245;case 133:return 460;case 134:return 191;case 135:return 283;case 136:return 390;case 137:return 282;case 138:return 452;case 139:return 169;case 140:return 403;case 141:return 222;case 142:return 645;case 143:return 270;case 144:return 244;case 145:return 380;case 146:return 154;case 147:return 297;case 148:return 433;case 149:return 230;case 150:return 415;case 151:return 129;case 152:return 247;case 153:return"OPEN";case 154:return 416;case 155:return 171;case 156:return 118;case 157:return 208;case 158:return 276;case 159:return 172;case 160:return 279;case 161:return 765;case 162:return 93;case 163:return 16;case 164:return 369;case 165:return 442;case 166:return 678;case 167:return 15;case 168:return 414;case 169:return 194;case 170:return"REDUCE";case 171:return 374;case 172:return 311;case 173:return 517;case 174:return 682;case 175:return 107;case 176:return 401;case 177:return 175;case 178:return 290;case 179:return 443;case 180:return 687;case 181:case 182:return 173;case 183:return 226;case 184:return 436;case 185:return 237;case 186:return 150;case 187:return 766;case 188:return 405;case 189:return 89;case 190:return 228;case 191:case 192:return 146;case 193:return 409;case 194:return 334;case 195:return 417;case 196:return"STRATEGY";case 197:return"STORE";case 198:return 280;case 199:case 200:return 353;case 201:return 463;case 202:case 203:return 357;case 204:return 192;case 205:return 309;case 206:return"TIMEOUT";case 207:return 148;case 208:return 195;case 209:case 210:return 435;case 211:return 509;case 212:return 294;case 213:return 451;case 214:return 162;case 215:return 187;case 216:return 98;case 217:return 335;case 218:return 408;case 219:return 231;case 220:return 149;case 221:return 344;case 222:return 134;case 223:return 410;case 224:return 308;case 225:return 128;case 226:return 439;case 227:return 72;case 228:return 435;case 229:case 230:return 131;case 231:return 115;case 232:return 137;case 233:return 179;case 234:return 317;case 235:return 180;case 236:return 133;case 237:return 138;case 238:return 326;case 239:return 323;case 240:return 325;case 241:return 322;case 242:return 320;case 243:return 318;case 244:return 319;case 245:return 142;case 246:return 141;case 247:return 139;case 248:return 321;case 249:return 324;case 250:return 140;case 251:return 124;case 252:return 324;case 253:return 77;case 254:return 78;case 255:return 145;case 256:return 424;case 257:return 426;case 258:return 300;case 259:return 505;case 260:return 507;case 261:return 122;case 262:return 116;case 263:return 74;case 264:return 333;case 265:return 152;case 266:return 764;case 267:return 143;case 268:return 181;case 269:return 136;case 270:return 123;case 271:return 312;case 272:return 4;case 273:return 10;case 274:return"INVALID"}},
rules:[/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:ARRAY\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:\|)/i,/^(?:VALUE\s+OF\s+SEARCH\b)/i,/^(?:VALUE\s+OF\s+SELECT\b)/i,/^(?:ROW\s+OF\s+SELECT\b)/i,/^(?:COLUMN\s+OF\s+SELECT\b)/i,/^(?:MATRIX\s+OF\s+SELECT\b)/i,/^(?:INDEX\s+OF\s+SELECT\b)/i,/^(?:RECORDSET\s+OF\s+SELECT\b)/i,/^(?:TEXT\s+OF\s+SELECT\b)/i,/^(?:SELECT\b)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AFTER\b)/i,/^(?:AGGR\b)/i,/^(?:AGGREGATE\b)/i,/^(?:AGGREGATOR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTO(_)?INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEFORE\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:~~\*)/i,/^(?:!~~\*)/i,/^(?:~~)/i,/^(?:!~~)/i,/^(?:ILIKE\b)/i,/^(?:NOT\s+ILIKE\b)/i,/^(?:CALL\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHECK\b)/i,/^(?:CLASS\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTENT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:CORRESPONDING\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE(S)?)/i,/^(?:DATEADD\b)/i,/^(?:DATEDIFF\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:ECHO\b)/i,/^(?:EDGE\b)/i,/^(?:END\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:ESCAPE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXEC\b)/i,/^(?:EXECUTE\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOR\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:FULL\b)/i,/^(?:FUNCTION\b)/i,/^(?:GLOB\b)/i,/^(?:GO\b)/i,/^(?:GRAPH\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INDEXED\b)/i,/^(?:INNER\b)/i,/^(?:INSTEAD\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTERVAL\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LET\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX(\s+)?(?=\())/i,/^(?:MAX(\s+)?(?=(,|\))))/i,/^(?:MIN(\s+)?(?=\())/i,/^(?:MERGE\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:ONLY\b)/i,/^(?:OF\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OPTION\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PATH\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PIVOT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:READ\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:REGEXP\b)/i,/^(?:REINDEX\b)/i,/^(?:RELATIVE\b)/i,/^(?:REMOVE\b)/i,/^(?:RENAME\b)/i,/^(?:REPEAT\b)/i,/^(?:REPLACE\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RETURN\b)/i,/^(?:RETURNS\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:ROWS\b)/i,/^(?:SCHEMA(S)?)/i,/^(?:SEARCH\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:SOURCE\b)/i,/^(?:STRATEGY\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TEMP\b)/i,/^(?:TEMPORARY\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:THEN\b)/i,/^(?:TIMEOUT\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRIGGER\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UNPIVOT\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE\b)/i,/^(?:VALUES\b)/i,/^(?:VERTEX\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:#)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:&)/i,/^(?:\|)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?::-)/i,/^(?:\?-)/i,/^(?:\.\.)/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:!)/i,/^(?:\^)/i,/^(?:~)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274],inclusive:!0}}}}();return Ei.lexer=mi,e.prototype=Ei,Ei.Parser=e,new e}();void 0!==A&&"undefined"!=typeof exports&&(exports.parser=y,exports.Parser=y.Parser,exports.parse=function(){return y.parse.apply(y,arguments)},exports.main=function(e){e[1]||(console.log("Usage: "+e[0]+" FILE"),process.exit(1));var t=A("fs").readFileSync(A("path").normalize(e[1]),"utf8");return exports.parser.parse(t)},"undefined"!=typeof module&&A.main===module&&exports.main(process.argv.slice(1))),T.prettyflag=!1,T.pretty=function(e,t){var r=T.prettyflag;T.prettyflag=!t;var n=T.parse(e).toString();return T.prettyflag=r,n};var N=T.utils={},C=N.escapeq=function(e){return(""+e).replace(/["'\\\n\r\u2028\u2029]/g,function(e){switch(e){case'"':case"'":case"\\":return"\\"+e;case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029"}})},R=N.undoubleq=function(e){return e.replace(/(\')/g,"''")},O=N.doubleq=function(e){return e.replace(/(\'\')/g,"\\'")},w=(N.doubleqq=function(e){return e.replace(/\'/g,"'")},function(e){return e[0]===String.fromCharCode(65279)&&(e=e.substr(1)),e});N.global=function(){return"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:Function("return this")()}();N.isNativeFunction=function(e){return"function"==typeof e&&!!~e.toString().indexOf("[native code]")};N.isWebWorker=function(){try{var e=N.global.importScripts;return N.isNativeFunction(e)}catch(e){return!1}}(),N.isNode=function(){try{return N.isNativeFunction(N.global.process.reallyExit)}catch(e){return!1}}(),N.isBrowser=function(){try{return N.isNativeFunction(N.global.location.reload)}catch(e){return!1}}(),N.isBrowserify=function(){return N.isBrowser&&"undefined"!=typeof process&&process.browser}(),N.isRequireJS=function(){return N.isBrowser&&"function"==typeof A&&"function"==typeof A.specified}(),N.isMeteor=function(){return"undefined"!=typeof Meteor&&Meteor.release}(),N.isMeteorClient=N.isMeteorClient=function(){return N.isMeteor&&Meteor.isClient}(),N.isMeteorServer=function(){return N.isMeteor&&Meteor.isServer}(),N.isCordova=function(){return"object"==typeof cordova}(),N.isReactNative=function(){return!1}(),N.hasIndexedDB=function(){return!!N.global.indexedDB}(),N.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)};var I=N.loadFile=function(e,t,r,n){var a;if(N.isNode||N.isMeteorServer);else if(N.isCordova)N.global.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(t){t.root.getFile(e,{create:!1},function(e){e.file(function(e){var t=new FileReader;t.onloadend=function(e){r(w(this.result))},t.readAsText(e)})})});else if("string"==typeof e)if("#"===e.substr(0,1)&&"undefined"!=typeof document)a=document.querySelector(e).textContent,r(a);else{var s=new XMLHttpRequest;s.onreadystatechange=function(){if(4===s.readyState)if(200===s.status)r&&r(w(s.responseText));else if(n)return n(s)},s.open("GET",e,t),s.responseType="text",s.send()}else if(e instanceof Event){var i=e.target.files,o=new FileReader;i[0].name;o.onload=function(e){var t=e.target.result;r(w(t))},o.readAsText(i[0])}};N.loadBinaryFile=function(e,t,r,n){if(N.isNode||N.isMeteorServer);else if("string"==typeof e){var a=new XMLHttpRequest;a.open("GET",e,t),a.responseType="arraybuffer",a.onload=function(){for(var e=new Uint8Array(a.response),t=[],n=0;n=26&&(e=(e/26|0)-1,t=String.fromCharCode(65+e%26)+t,e>26&&(e=(e/26|0)-1,t=String.fromCharCode(65+e%26)+t)),t},N.xlscn=function(e){var t=e.charCodeAt(0)-65;return e.length>1&&(t=26*(t+1)+e.charCodeAt(1)-65,e.length>2&&(t=26*(t+1)+e.charCodeAt(2)-65)),t},N.domEmptyChildren=function(e){for(var t=e.childNodes.length;t--;)e.removeChild(e.lastChild)},N.like=function(e,t,r){r||(r="");for(var n=0,a="^";n-1?a+="\\"+s:a+=s,n++}return a+="$",(""+(t||"")).toUpperCase().search(RegExp(a.toUpperCase()))>-1};N.glob=function(e,t){for(var r=0,n="^";r-1?n+="\\"+a:n+=a,r++}return n+="$",(""+(e||"")).toUpperCase().search(RegExp(n.toUpperCase()))>-1},N.findAlaSQLPath=function(){if(N.isWebWorker)return"";if(N.isMeteorClient)return"/packages/dist/";if(N.isMeteorServer)return"assets/packages/dist/";if(N.isNode)return"";if(N.isBrowser)for(var e=document.getElementsByTagName("script"),t=0;tT.MAXSQLCACHESIZE&&i.resetSqlCache(),i.sqlCacheSize++,i.sqlCache[s]=o);var c=T.res=o(r,n,a);return c}T.precompile(u.statements[0],T.useid,r);var c=T.res=u.statements[0].execute(e,r,n,a);return c}if(!n)return T.drun(e,u,r,n,a);T.adrun(e,u,r,n,a)}},T.drun=function(e,t,r,n,a){var s=T.useid;s!==e&&T.use(e);for(var i=[],o=0,u=t.statements.length;oe;e+=2){(0,Q[e])(Q[e+1]),Q[e]=void 0,Q[e+1]=void 0}j=0}function o(e,t){var r=this,n=new this.constructor(c);void 0===n[ee]&&I(n);var a=r._state;if(a){var s=arguments[a-1];H(function(){R(a,n,s,r._result)})}else T(r,n,e,t);return n}function u(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var r=new t(c);return g(r,e),r}function c(){}function l(){return new TypeError("You cannot resolve a promise with itself")}function h(){return new TypeError("A promises callback cannot return that same promise.")}function d(e){try{return e.then}catch(e){return ae.error=e,ae}}function f(e,t,r,n){try{e.call(t,r,n)}catch(e){return e}}function p(e,t,r){H(function(e){var n=!1,a=f(r,t,function(r){n||(n=!0,t!==r?g(e,r):v(e,r))},function(t){n||(n=!0,S(e,t))},"Settle: "+(e._label||" unknown promise"));!n&&a&&(n=!0,S(e,a))},e)}function b(e,t){t._state===re?v(e,t._result):t._state===ne?S(e,t._result):T(t,void 0,function(t){g(e,t)},function(t){S(e,t)})}function E(e,r,n){r.constructor===e.constructor&&n===z&&constructor.resolve===Z?b(e,r):n===ae?S(e,ae.error):void 0===n?v(e,r):t(n)?p(e,r,n):v(e,r)}function g(t,r){t===r?S(t,l()):e(r)?E(t,r,d(r)):v(t,r)}function m(e){e._onerror&&e._onerror(e._result),y(e)}function v(e,t){e._state===te&&(e._result=t,e._state=re,0!==e._subscribers.length&&H(y,e))}function S(e,t){e._state===te&&(e._state=ne,e._result=t,H(m,e))}function T(e,t,r,n){var a=e._subscribers,s=a.length;e._onerror=null,a[s]=t,a[s+re]=r,a[s+ne]=n,0===s&&e._state&&H(y,e)}function y(e){var t=e._subscribers,r=e._state;if(0!==t.length){for(var n,a,s=e._result,i=0;is;s++)t.resolve(e[s]).then(r,n)}:function(e,t){t(new TypeError("You must pass an array to race."))})}function k(e){var t=this,r=new t(c);return S(r,e),r}function L(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function $(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function M(e){this[ee]=w(),this._result=this._state=void 0,this._subscribers=[],c!==e&&("function"!=typeof e&&L(),this instanceof M?O(this,e):$())}function U(e,t){this._instanceConstructor=e,this.promise=new e(c),this.promise[ee]||I(this.promise),Array.isArray(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?v(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&v(this.promise,this._result))):S(this.promise,_())}function _(){return new Error("Array Methods must be provided an Array")}function F(){var e;if("undefined"!=typeof global)e=global;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;(!t||"[object Promise]"!==Object.prototype.toString.call(t.resolve())||t.cast)&&(e.Promise=le)}var P;P=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var q,G,V,B=P,j=0,H=function(e,t){Q[j]=e,Q[j+1]=t,2===(j+=2)&&(G?G(i):V())},J="undefined"!=typeof window?window:void 0,Y=J||{},W=Y.MutationObserver||Y.WebKitMutationObserver,X="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),K="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Q=new Array(1e3);V=X?function(){return function(){process.nextTick(i)}}():W?function(){var e=0,t=new W(i),r=document.createTextNode("");return t.observe(r,{characterData:!0}),function(){r.data=e=++e%2}}():K?function(){var e=new MessageChannel;return e.port1.onmessage=i,function(){e.port2.postMessage(0)}}():void 0===J&&"function"==typeof A?function(){try{var e=A,t=e("vertx");return q=t.runOnLoop||t.runOnContext,a()}catch(e){return s()}}():s();var z=o,Z=u,ee=Math.random().toString(36).substring(16),te=void 0,re=1,ne=2,ae=new N,se=new N,ie=0,oe=x,ue=D,ce=k,le=M;M.all=oe,M.race=ue,M.resolve=Z,M.reject=ce,M._setScheduler=r,M._setAsap=n,M._asap=H,M.prototype={constructor:M,then:z,catch:function(e){return this.then(null,e)}};var he=U;U.prototype._enumerate=function(){for(var e=this.length,t=this._input,r=0;this._state===te&&e>r;r++)this._eachEntry(t[r],r)},U.prototype._eachEntry=function(e,t){var r=this._instanceConstructor,n=r.resolve;if(n===Z){var a=d(e);if(a===z&&e._state!==te)this._settledAt(e._state,t,e._result);else if("function"!=typeof a)this._remaining--,this._result[t]=e;else if(r===le){var s=new r(c);E(s,e,a),this._willSettleAt(s,t)}else this._willSettleAt(new r(function(t){t(e)}),t)}else this._willSettleAt(n(e),t)},U.prototype._settledAt=function(e,t,r){var n=this.promise;n._state===te&&(this._remaining--,e===ne?S(n,r):this._result[t]=r),0===this._remaining&&v(n,this._result)},U.prototype._willSettleAt=function(e,t){var r=this;T(e,void 0,function(e){r._settledAt(re,t,e)},function(e){r._settledAt(ne,t,e)})};var de=F,fe={Promise:le,polyfill:de};"function"==typeof define&&define.amd?define(function(){return fe}):"undefined"!=typeof module&&module.exports?module.exports=fe:void 0!==this&&(this.ES6Promise=fe),de()}.call(this);var B=function(e,t,r,n){return new N.global.Promise(function(a,s){T(e,t,function(e,t){t?s(t):(r&&n&&!1!==T.options.progress&&T.options.progress(r,n),a(e))})})},j=function(e){if(!(e.length<1)){for(var t,r,n,a=[],s=0;s0?{status:1,values:n}:{status:-1,values:[]}}return"object"!=typeof e||null===e||"object"!=typeof t||void 0===e[t[0]]?{status:-1,values:[]}:{status:1,values:[e[t[0]]]}},T.srch.APROP=function(e,t){return"object"!=typeof e||null===e||"object"!=typeof t||void 0===e[t[0]]?{status:1,values:[void 0]}:{status:1,values:[e[t[0]]]}},T.srch.EQ=function(e,t,r,n){var a=t[0].toJS("x","");return e===new Function("x,alasql,params","return "+a)(e,T,n)?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.LIKE=function(e,t,r,n){var a=t[0].toJS("x",""),s=new Function("x,alasql,params","return "+a);return e.toUpperCase().match(new RegExp("^"+s(e,T,n).toUpperCase().replace(/%/g,".*").replace(/\?|_/g,".")+"$"),"g")?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.ATTR=function(e,t,r){if("XML"===r.mode)return void 0===t?{status:1,values:[e.attributes]}:"object"==typeof e&&"object"==typeof e.attributes&&void 0!==e.attributes[t[0]]?{status:1,values:[e.attributes[t[0]]]}:{status:-1,values:[]};throw new Error("ATTR is not using in usual mode")},T.srch.CONTENT=function(e,t,r){if("XML"===r.mode)return{status:1,values:[e.content]};throw new Error("ATTR is not using in usual mode")},T.srch.SHARP=function(e,t){var r=T.databases[T.useid].objects[t[0]];return void 0!==e&&e===r?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.PARENT=function(){return console.error("PARENT not implemented",arguments),{status:-1,values:[]}},T.srch.CHILD=function(e,t,r){return"object"==typeof e?Array.isArray(e)?{status:1,values:e}:"XML"===r.mode?{status:1,values:Object.keys(e.children).map(function(t){return e.children[t]})}:{status:1,values:Object.keys(e).map(function(t){return e[t]})}:{status:1,values:[]}},T.srch.KEYS=function(e){return"object"==typeof e&&null!==e?{status:1,values:Object.keys(e)}:{status:1,values:[]}},T.srch.WHERE=function(e,t,r,n){var a=t[0].toJS("x","");return new Function("x,alasql,params","return "+a)(e,T,n)?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.NAME=function(e,t){return e.name===t[0]?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.CLASS=function(e,t){return e.$class==t?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.VERTEX=function(e){return"VERTEX"===e.$node?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.INSTANCEOF=function(e,t){return e instanceof T.fn[t[0]]?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.EDGE=function(e){return"EDGE"===e.$node?{status:1,values:[e]}:{status:-1,values:[]}},T.srch.EX=function(e,t,r,n){var a=t[0].toJS("x","");return{status:1,values:[new Function("x,alasql,params","return "+a)(e,T,n)]}},T.srch.RETURN=function(e,t,r,n){var a={};return t&&t.length>0&&t.forEach(function(t){var r=t.toJS("x",""),s=new Function("x,alasql,params","return "+r);void 0===t.as&&(t.as=t.toString()),a[t.as]=s(e,T,n)}),{status:1,values:[a]}},T.srch.REF=function(e){return{status:1,values:[T.databases[T.useid].objects[e]]}},T.srch.OUT=function(e){if(e.$out&&e.$out.length>0){return{status:1,values:e.$out.map(function(e){return T.databases[T.useid].objects[e]})}}return{status:-1,values:[]}},T.srch.OUTOUT=function(e){if(e.$out&&e.$out.length>0){var t=[];return e.$out.forEach(function(e){var r=T.databases[T.useid].objects[e];r&&r.$out&&r.$out.length>0&&r.$out.forEach(function(e){t=t.concat(T.databases[T.useid].objects[e])})}),{status:1,values:t}}return{status:-1,values:[]}},T.srch.IN=function(e){if(e.$in&&e.$in.length>0){return{status:1,values:e.$in.map(function(e){return T.databases[T.useid].objects[e]})}}return{status:-1,values:[]}},T.srch.ININ=function(e){if(e.$in&&e.$in.length>0){var t=[];return e.$in.forEach(function(e){var r=T.databases[T.useid].objects[e];r&&r.$in&&r.$in.length>0&&r.$in.forEach(function(e){t=t.concat(T.databases[T.useid].objects[e])})}),{status:1,values:t}}return{status:-1,values:[]}},T.srch.AS=function(e,t){
-return T.vars[t[0]]=e,{status:1,values:[e]}},T.srch.AT=function(e,t){return{status:1,values:[T.vars[t[0]]]}},T.srch.CLONEDEEP=function(e){return{status:1,values:[_(e)]}},T.srch.SET=function(e,t,r,n){var a=t.map(function(e){return"@"===e.method?"alasql.vars['"+e.variable+"']="+e.expression.toJS("x",""):"$"===e.method?"params['"+e.variable+"']="+e.expression.toJS("x",""):"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";");return new Function("x,params,alasql",a)(e,n,T),{status:1,values:[e]}},T.srch.ROW=function(e,t,r,n){var a="var y;return [";return a+=t.map(function(e){return e.toJS("x","")}).join(","),a+="]",{status:1,values:[new Function("x,params,alasql",a)(e,n,T)]}},T.srch.D3=function(e){return"VERTEX"!==e.$node&&"EDGE"===e.$node&&(e.source=e.$in[0],e.target=e.$out[0]),{status:1,values:[e]}};var Q=function(e){if(e){if(e&&1===e.length&&e[0].expression&&"function"==typeof e[0].expression){var t=e[0].expression;return function(e,r){var n=t(e),a=t(r);return n>a?1:n===a?0:-1}}var r="",n="";return e.forEach(function(e){var t="";if(e.expression instanceof X.NumValue&&(e.expression=self.columns[e.expression.value-1]),e.expression instanceof X.Column){var a=e.expression.columnid;T.options.valueof&&(t=".valueOf()"),e.nocase&&(t+=".toUpperCase()"),"_"===a?(r+="if(a"+t+("ASC"===e.direction?">":"<")+"b"+t+")return 1;",r+="if(a"+t+"==b"+t+"){"):(r+="if((a['"+a+"']||'')"+t+("ASC"===e.direction?">":"<")+"(b['"+a+"']||'')"+t+")return 1;",r+="if((a['"+a+"']||'')"+t+"==(b['"+a+"']||'')"+t+"){")}else t=".valueOf()",e.nocase&&(t+=".toUpperCase()"),r+="if(("+e.toJS("a","")+"||'')"+t+("ASC"===e.direction?">(":"<(")+e.toJS("b","")+"||'')"+t+")return 1;",r+="if(("+e.toJS("a","")+"||'')"+t+"==("+e.toJS("b","")+"||'')"+t+"){";n+="}"}),r+="return 0;",r+=n+"return -1",new Function("a,b",r)}};T.srch.ORDERBY=function(e,t){return{status:1,values:e.sort(Q(t))}};var z=function(e){for(var t=0,r=e.sources.length;t0&&"ix"==n.optimization&&n.onleftfn&&n.onrightfn){if(n.databaseid&&T.databases[n.databaseid].tables[n.tableid]){T.databases[n.databaseid].tables[n.tableid].indices||(e.database.tables[n.tableid].indices={});var a=T.databases[n.databaseid].tables[n.tableid].indices[x(n.onrightfns+"`"+n.srcwherefns)];!T.databases[n.databaseid].tables[n.tableid].dirty&&a&&(n.ix=a)}if(!n.ix){n.ix={};for(var s,i={},o=0,u=n.data.length;(s=n.data[o])||n.getfn&&(s=n.getfn(o))||o0&&(e+=" GROUP BY "+this.group.map(function(e){return e.toString()}).join(", ")),this.having&&(e+=" HAVING "+this.having.toString()),this.order&&this.order.length>0&&(e+=" ORDER BY "+this.order.map(function(e){return e.toString()}).join(", ")),this.limit&&(e+=" LIMIT "+this.limit.value),this.offset&&(e+=" OFFSET "+this.offset.value),this.union&&(e+=" UNION "+(this.corresponding?"CORRESPONDING ":"")+this.union.toString()),this.unionall&&(e+=" UNION ALL "+(this.corresponding?"CORRESPONDING ":"")+this.unionall.toString()),this.except&&(e+=" EXCEPT "+(this.corresponding?"CORRESPONDING ":"")+this.except.toString()),this.intersect&&(e+=" INTERSECT "+(this.corresponding?"CORRESPONDING ":"")+this.intersect.toString()),e},X.Select.prototype.toJS=function(e){return"alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+"))[0]"},X.Select.prototype.compile=function(e,t){var r=T.databases[e],n=new W;if(n.removeKeys=[],n.aggrKeys=[],n.explain=this.explain,n.explaination=[],n.explid=1,n.modifier=this.modifier,n.database=r,this.compileWhereExists(n),this.compileQueries(n),n.defcols=this.compileDefCols(n,e),n.fromfn=this.compileFrom(n),this.joins&&this.compileJoins(n),n.rownums=[],this.compileSelectGroup0(n),this.group||n.selectGroup.length>0?n.selectgfns=this.compileSelectGroup1(n):n.selectfns=this.compileSelect1(n,t),this.compileRemoveColumns(n),this.where&&this.compileWhereJoins(n),n.wherefn=this.compileWhere(n),(this.group||n.selectGroup.length>0)&&(n.groupfn=this.compileGroup(n)),this.having&&(n.havingfn=this.compileHaving(n)),this.order&&(n.orderfn=this.compileOrder(n)),this.group||n.selectGroup.length>0?n.selectgfn=this.compileSelectGroup2(n):n.selectfn=this.compileSelect2(n),n.distinct=this.distinct,this.pivot&&(n.pivotfn=this.compilePivot(n)),this.unpivot&&(n.pivotfn=this.compileUnpivot(n)),this.top?n.limit=this.top.value:this.limit&&(n.limit=this.limit.value,this.offset&&(n.offset=this.offset.value)),n.percent=this.percent,n.corresponding=this.corresponding,this.union?(n.unionfn=this.union.compile(e),this.union.order?n.orderfn=this.union.compileOrder(n):n.orderfn=null):this.unionall?(n.unionallfn=this.unionall.compile(e),this.unionall.order?n.orderfn=this.unionall.compileOrder(n):n.orderfn=null):this.except?(n.exceptfn=this.except.compile(e),this.except.order?n.orderfn=this.except.compileOrder(n):n.orderfn=null):this.intersect&&(n.intersectfn=this.intersect.compile(e),this.intersect.order?n.intersectfn=this.intersect.compileOrder(n):n.orderfn=null),this.into){if(this.into instanceof X.Table)T.options.autocommit&&T.databases[this.into.databaseid||e].engineid?n.intoallfns='return alasql.engines["'+T.databases[this.into.databaseid||e].engineid+'"].intoTable("'+(this.into.databaseid||e)+'","'+this.into.tableid+'",this.data, columns, cb);':n.intofns="alasql.databases['"+(this.into.databaseid||e)+"'].tables['"+this.into.tableid+"'].data.push(r);";else if(this.into instanceof X.VarValue)n.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=this.data.length;if(cb)res=cb(res);return res;';else if(this.into instanceof X.FuncValue){var a="return alasql.into['"+this.into.funcid.toUpperCase()+"'](";this.into.args&&this.into.args.length>0?(a+=this.into.args[0].toJS()+",",this.into.args.length>1?a+=this.into.args[1].toJS()+",":a+="undefined,"):a+="undefined, undefined,",n.intoallfns=a+"this.data,columns,cb)"}else this.into instanceof X.ParamValue&&(n.intofns="params['"+this.into.param+"'].push(r)");n.intofns?n.intofn=new Function("r,i,params,alasql","var y;"+n.intofns):n.intoallfns&&(n.intoallfn=new Function("columns,cb,params,alasql","var y;"+n.intoallfns))}var s=function(e,t,r){return n.params=e,i(n,r,function(e,r){if(r)return t(r,null);if(n.rownums.length>0)for(var a=0,s=e.length;a0?(t.args[0]?n+=t.args[0].toJS("query.oldscope")+",":n+="null,",t.args[1]?n+=t.args[1].toJS("query.oldscope")+",":n+="null,"):n+="null,null,",n+="cb,idx,query",n+=");/*if(cb)res=cb(res,idx,query);*/return res",s.datafn=new Function("query, params, cb, idx, alasql",n);else{if(!(t instanceof X.FromData))throw new Error("Wrong table at FROM");s.datafn=function(e,r,n,a,s){var i=t.data;return n&&(i=n(i,a,e)),i}}e.sources.push(s)}),e.defaultTableid=e.sources[0].alias)},T.prepareFromData=function(e,t){var r,n,a=e;if("string"==typeof e){if(a=e.split(/\r?\n/),t)for(r=0,n=a.length;r0?(u[0]?o+=u[0].toJS("query.oldscope")+",":o+="null,",u[1]?o+=u[1].toJS("query.oldscope")+",":o+="null,"):o+="null,null,",o+="cb,idx,query",o+=");/*if(cb)res=cb(res,idx,query);*/return res",s.datafn=new Function("query, params, cb, idx, alasql",o),e.aliases[s.alias]={type:"funcvalue"}}var c=s.alias;if(t.natural){if(t.using||t.on)throw new Error("NATURAL JOIN cannot have USING or ON clauses");if(e.sources.length>0){var l=e.sources[e.sources.length-1],h=T.databases[l.databaseid].tables[l.tableid],d=T.databases[s.databaseid].tables[s.tableid];if(!h||!d)throw new Error("In this version of Alasql NATURAL JOIN works for tables with predefined columns only");var f=h.columns.map(function(e){return e.columnid}),p=d.columns.map(function(e){return e.columnid});t.using=L(f,p).map(function(e){return{columnid:e}})}}if(t.using)l=e.sources[e.sources.length-1],s.onleftfns=t.using.map(function(e){return"p['"+(l.alias||l.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),s.onleftfn=new Function("p,params,alasql","var y;return "+s.onleftfns),s.onrightfns=t.using.map(function(e){return"p['"+(s.alias||s.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),s.onrightfn=new Function("p,params,alasql","var y;return "+s.onrightfns),s.optimization="ix";else if(t.on)if(t.on instanceof X.Op&&"="===t.on.op&&!t.on.allsome){s.optimization="ix";var b="",E="",g="",m=!1,v=t.on.left.toJS("p",e.defaultTableid,e.defcols),S=t.on.right.toJS("p",e.defaultTableid,e.defcols);v.indexOf("p['"+c+"']")>-1&&!(S.indexOf("p['"+c+"']")>-1)?(v.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?E=v:m=!0:!(v.indexOf("p['"+c+"']")>-1)&&S.indexOf("p['"+c+"']")>-1&&(S.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?b=v:m=!0,S.indexOf("p['"+c+"']")>-1&&!(v.indexOf("p['"+c+"']")>-1)?(S.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?E=S:m=!0:!(S.indexOf("p['"+c+"']")>-1)&&v.indexOf("p['"+c+"']")>-1&&(v.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?b=S:m=!0,m&&(E="",b="",g=t.on.toJS("p",e.defaultTableid,e.defcols),s.optimization="no"),s.onleftfns=b,s.onrightfns=E,s.onmiddlefns=g||"true",s.onleftfn=new Function("p,params,alasql","var y;return "+s.onleftfns),s.onrightfn=new Function("p,params,alasql","var y;return "+s.onrightfns),s.onmiddlefn=new Function("p,params,alasql","var y;return "+s.onmiddlefns)}else s.optimization="no",s.onmiddlefns=t.on.toJS("p",e.defaultTableid,e.defcols),s.onmiddlefn=new Function("p,params,alasql","var y;return "+t.on.toJS("p",e.defaultTableid,e.defcols));e.sources.push(s)})},X.Select.prototype.compileWhere=function(e){if(this.where){if("function"==typeof this.where)return this.where;var t=this.where.toJS("p",e.defaultTableid,e.defcols);return e.wherefns=t,new Function("p,params,alasql","var y;return "+t)}return function(){return!0}},X.Select.prototype.compileWhereJoins=function(e){},X.Select.prototype.compileGroup=function(e){if(e.sources.length>0)var t=e.sources[0].alias;else var t="";var r=e.defcols,n=[[]];this.group&&(n=p(this.group,e));var a=[];n.forEach(function(e){a=D(a,e)}),e.allgroups=a,e.ingroup=[];var s="";return n.forEach(function(n){s+="var g=this.xgroups[";var i=n.map(function(t){var r=t.split("\t")[0],n=t.split("\t")[1];return""===r?"1":(e.ingroup.push(r),n)});0===i.length&&(i=["''"]),s+=i.join('+"`"+'),s+="];if(!g) {this.groups.push((g=this.xgroups[",s+=i.join('+"`"+'),s+="] = {",s+=n.map(function(e){var t=e.split("\t")[0],r=e.split("\t")[1];return""===t?"":"'"+t+"':"+r+","}).join("");var o=k(a,n);s+=o.map(function(e){return"'"+e.split("\t")[0]+"':null,"}).join("");var u="",c="";void 0!==e.groupStar&&(c+="for(var f in p['"+e.groupStar+"']) {g[f]=p['"+e.groupStar+"'][f];};"),s+=e.selectGroup.map(function(n){var a=n.expression.toJS("p",t,r),s=n.nick;return n instanceof X.AggrValue?(n.distinct&&(u+=",g['$$_VALUES_"+s+"']={},g['$$_VALUES_"+s+"']["+a+"]=true"),"SUM"===n.aggregatorid?"'"+s+"':("+a+")||0,":"MIN"===n.aggregatorid||"MAX"===n.aggregatorid||"FIRST"===n.aggregatorid||"LAST"===n.aggregatorid?"'"+s+"':"+a+",":"ARRAY"===n.aggregatorid?"'"+s+"':["+a+"],":"COUNT"===n.aggregatorid?"*"===n.expression.columnid?"'"+s+"':1,":"'"+s+"':(typeof "+a+' != "undefined")?1:0,':"AVG"===n.aggregatorid?(e.removeKeys.push("_SUM_"+s),e.removeKeys.push("_COUNT_"+s),"'"+s+"':"+a+",'_SUM_"+s+"':("+a+")||0,'_COUNT_"+s+"':(typeof "+a+' != "undefined")?1:0,'):"AGGR"===n.aggregatorid?(u+=",g['"+s+"']="+n.expression.toJS("g",-1),""):"REDUCE"===n.aggregatorid?(e.aggrKeys.push(n),"'"+s+"':alasql.aggr['"+n.funcid+"']("+a+",undefined,1),"):""):""}).join(""),s+="}"+u+",g));"+c+"} else {",s+=e.selectGroup.map(function(e){var n=e.nick,a=e.expression.toJS("p",t,r);if(e instanceof X.AggrValue){var s="",i="";if(e.distinct)var s="if(typeof "+a+'!="undefined" && (!g[\'$$_VALUES_'+n+"']["+a+"])) \t\t\t\t \t\t {",i="g['$$_VALUES_"+n+"']["+a+"]=true;}";return"SUM"===e.aggregatorid?s+"g['"+n+"']+=("+a+"||0);"+i:"COUNT"===e.aggregatorid?"*"===e.expression.columnid?s+"g['"+n+"']++;"+i:s+"if(typeof "+a+'!="undefined") g[\''+n+"']++;"+i:"ARRAY"===e.aggregatorid?s+"g['"+n+"'].push("+a+");"+i:"MIN"===e.aggregatorid?s+"g['"+n+"']=Math.min(g['"+n+"'],"+a+");"+i:"MAX"===e.aggregatorid?s+"g['"+n+"']=Math.max(g['"+n+"'],"+a+");"+i:"FIRST"===e.aggregatorid?"":"LAST"===e.aggregatorid?s+"g['"+n+"']="+a+";"+i:"AVG"===e.aggregatorid?s+"g['_SUM_"+n+"']+=(y="+a+")||0;g['_COUNT_"+n+"']+=(typeof y!=\"undefined\")?1:0;g['"+n+"']=g['_SUM_"+n+"']/g['_COUNT_"+n+"'];"+i:"AGGR"===e.aggregatorid?s+"g['"+n+"']="+e.expression.toJS("g",-1)+";"+i:"REDUCE"===e.aggregatorid?s+"g['"+n+"']=alasql.aggr."+e.funcid+"("+a+",g['"+n+"'],2);"+i:""}return""}).join(""),s+="}"}),new Function("p,params,alasql","var y;"+s)},X.Select.prototype.compileSelect1=function(t,r){var n=this;t.columns=[],t.xcolumns={},t.selectColumns={},t.dirtyColumns=!1;var a="var r={",s="",i=[];return this.columns.forEach(function(a){if(a instanceof X.Column)if("*"===a.columnid)if(a.func)s+="r=params['"+a.param+"'](p['"+t.sources[0].alias+"'],p,params,alasql);";else if(a.tableid){var o=[];o[a.tableid]=a.tableid;var u=f(t,o,!1);u.s&&(i=i.concat(u.s)),s+=u.sp}else{var u=f(t,t.aliases,!0);u.s&&(i=i.concat(u.s)),s+=u.sp}else{var c=a.tableid,l=a.databaseid||t.sources[0].databaseid||t.database.databaseid;if(c||(c=t.defcols[a.columnid]),c||(c=t.defaultTableid),"_"!==a.columnid){var h=r&&r.length>1&&Array.isArray(r[0])&&r[0].length>=1&&r[0][0].hasOwnProperty("sheetid");h?s='var r={};var w=p["'+c+'"];var cols=['+n.columns.map(function(e){return"'"+e.columnid+"'"}).join(",")+"];var colas=["+n.columns.map(function(e){return"'"+(e.as||e.columnid)+"'"}).join(",")+"];for (var i=0;i0){var b=p[a.columnid];if(void 0===b)throw new Error("Column does not exist: "+a.columnid);var E={columnid:a.as||a.columnid,dbtypeid:b.dbtypeid,dbsize:b.dbsize,dbpecision:b.dbprecision,dbenum:b.dbenum};t.columns.push(E),t.xcolumns[E.columnid]=E}else{var E={columnid:a.as||a.columnid};t.columns.push(E),t.xcolumns[E.columnid]=E,t.dirtyColumns=!0}}else{var E={columnid:a.as||a.columnid};t.columns.push(E),t.xcolumns[E.columnid]=E}}else if(a instanceof X.AggrValue){n.group||(n.group=[""]),a.as||(a.as=C(a.toString())),"SUM"===a.aggregatorid||"MAX"===a.aggregatorid||"MIN"===a.aggregatorid||"FIRST"===a.aggregatorid||"LAST"===a.aggregatorid||"AVG"===a.aggregatorid||"ARRAY"===a.aggregatorid||"REDUCE"===a.aggregatorid?i.push("'"+C(a.as)+"':"+e(a.expression.toJS("p",t.defaultTableid,t.defcols))):"COUNT"===a.aggregatorid&&i.push("'"+C(a.as)+"':1");var E={columnid:a.as||a.columnid||a.toString()};t.columns.push(E),t.xcolumns[E.columnid]=E}else{i.push("'"+C(a.as||a.columnid||a.toString())+"':"+e(a.toJS("p",t.defaultTableid,t.defcols))),t.selectColumns[C(a.as||a.columnid||a.toString())]=!0;var E={columnid:a.as||a.columnid||a.toString()};t.columns.push(E),t.xcolumns[E.columnid]=E}}),a+=i.join(",")+"};"+s},X.Select.prototype.compileSelect2=function(e){var t=e.selectfns;return this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(r,n){var a="$$$"+n;r instanceof X.Column&&e.xcolumns[r.columnid]?t+="r['"+a+"']=r['"+r.columnid+"'];":t+="r['"+a+"']="+r.toJS("p",e.defaultTableid,e.defcols)+";",e.removeKeys.push(a)}),new Function("p,params,alasql","var y;"+t+"return r")},X.Select.prototype.compileSelectGroup0=function(e){var t=this;t.columns.forEach(function(r,n){if(r instanceof X.Column&&"*"===r.columnid)e.groupStar=r.tableid||"default";else{var a;a=C(r instanceof X.Column?r.columnid:r.toString(!0));for(var s=0;s-1&&(r+="r['"+(t.as||t.nick)+"']=g['"+t.nick+"'];")}),this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(t,n){var a="$$$"+n;t instanceof X.Column&&e.groupColumns[t.columnid]?r+="r['"+a+"']=r['"+t.columnid+"'];":r+="r['"+a+"']="+t.toJS("g","")+";",e.removeKeys.push(a)}),new Function("g,params,alasql","var y;"+r+"return r")},X.Select.prototype.compileRemoveColumns=function(e){void 0!==this.removecolumns&&(e.removeKeys=e.removeKeys.concat(this.removecolumns.filter(function(e){return void 0===e.like}).map(function(e){return e.columnid})),e.removeLikeKeys=this.removecolumns.filter(function(e){return void 0!==e.like}).map(function(e){return e.like.value}))},X.Select.prototype.compileHaving=function(e){if(this.having){var t=this.having.toJS("g",-1);return e.havingfns=t,new Function("g,params,alasql","var y;return "+t)}return function(){return!0}},X.Select.prototype.compileOrder=function(e){var t=this;if(t.orderColumns=[],this.order){if(this.order&&1==this.order.length&&this.order[0].expression&&"function"==typeof this.order[0].expression){var r=this.order[0].expression;return function(e,t){var n=r(e),a=r(t);return n>a?1:n==a?0:-1}}var n="",a="";return this.order.forEach(function(r,s){if(r.expression instanceof X.NumValue)var i=t.columns[r.expression.value-1];else var i=r.expression;t.orderColumns.push(i);var o="$$$"+s,u="";if(r.expression instanceof X.Column){var c=r.expression.columnid;if(e.xcolumns[c]){var l=e.xcolumns[c].dbtypeid;"DATE"!=l&&"DATETIME"!=l&&"DATETIME2"!=l||(u=".valueOf()")}else T.options.valueof&&(u=".valueOf()")}r.nocase&&(u+=".toUpperCase()"),n+="if((a['"+o+"']||'')"+u+("ASC"==r.direction?">":"<")+"(b['"+o+"']||'')"+u+")return 1;",n+="if((a['"+o+"']||'')"+u+"==(b['"+o+"']||'')"+u+"){",a+="}"}),n+="return 0;",n+=a+"return -1",e.orderfns=n,new Function("a,b","var y;"+n)}},X.Select.prototype.compilePivot=function(e){var t=this,r=t.pivot.columnid,n=t.pivot.expr.expression.columnid,a=t.pivot.expr.aggregatorid,s=t.pivot.inlist;return s&&(s=s.map(function(e){return e.expr.columnid})),function(){var e=this,t=e.columns.filter(function(e){return e.columnid!=r&&e.columnid!=n}).map(function(e){return e.columnid}),i=[],o={},u={},c={},l=[];if(e.data.forEach(function(e){if(!s||s.indexOf(e[r])>-1){var h=t.map(function(t){return e[t]}).join("`"),d=u[h];if(d||(d={},u[h]=d,l.push(d),t.forEach(function(t){d[t]=e[t]})),c[h]||(c[h]={}),c[h][e[r]]?c[h][e[r]]++:c[h][e[r]]=1,o[e[r]]||(o[e[r]]=!0,i.push(e[r])),"SUM"==a||"AVG"==a)void 0===d[e[r]]&&(d[e[r]]=0),d[e[r]]+=e[n];else if("COUNT"==a)void 0===d[e[r]]&&(d[e[r]]=0),d[e[r]]++;else if("MIN"==a)void 0===d[e[r]]&&(d[e[r]]=1/0),e[n]d[e[r]]&&(d[e[r]]=e[n]);else if("FIRST"==a)void 0===d[e[r]]&&(d[e[r]]=e[n]);else if("LAST"==a)d[e[r]]=e[n];else{if(!T.aggr[a])throw new Error("Wrong aggregator in PIVOT clause");T.aggr[a](d[e[r]],e[n])}}}),"AVG"==a)for(var h in u){var d=u[h];for(var f in d)-1==t.indexOf(f)&&f!=n&&(d[f]=d[f]/c[h][f])}e.data=l,s&&(i=s);var p=e.columns.filter(function(e){return e.columnid==n})[0];e.columns=e.columns.filter(function(e){return!(e.columnid==r||e.columnid==n)}),i.forEach(function(t){var r=_(p);r.columnid=t,e.columns.push(r)})}},X.Select.prototype.compileUnpivot=function(e){var t=this,r=t.unpivot.tocolumnid,n=t.unpivot.forcolumnid,a=t.unpivot.inlist.map(function(e){return e.columnid});return function(){var t=[],s=e.columns.map(function(e){return e.columnid}).filter(function(e){return-1==a.indexOf(e)&&e!=n&&e!=r});e.data.forEach(function(e){a.forEach(function(a){var i={};s.forEach(function(t){i[t]=e[t]}),i[n]=a,i[r]=e[a],t.push(i)})}),e.data=t}};var Z=function(e,t){for(var r=[],n=0,a=e.length,s=0;s"===this.op||"!"===this.op){var e=this.left.toString()+this.op;return"string"!=typeof this.right&&"number"!=typeof this.right&&(e+="("),e+=this.right.toString(),"string"!=typeof this.right&&"number"!=typeof this.right&&(e+=")"),e}return this.left.toString()+" "+this.op+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()},X.Op.prototype.findAggregator=function(e){this.left&&this.left.findAggregator&&this.left.findAggregator(e),this.right&&this.right.findAggregator&&!this.allsome&&this.right.findAggregator(e)},X.Op.prototype.toType=function(e){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(["||"].indexOf(this.op)>-1)return"string";if("+"===this.op){if("string"===this.left.toType(e)||"string"===this.right.toType(e))return"string";if("number"===this.left.toType(e)||"number"===this.right.toType(e))return"number"}return["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE","REGEXP","GLOB"].indexOf(this.op)>-1?"boolean":"BETWEEN"===this.op||"NOT BETWEEN"===this.op||"IS NULL"===this.op||"IS NOT NULL"===this.op?"boolean":this.allsome?"boolean":this.op?"unknown":this.left.toType()},X.Op.prototype.toJS=function(e,t,r){var n,a=[],s=this.op,i=this,o=function(n){return n.toJS&&(n=n.toJS(e,t,r)),"y["+(a.push(n)-1)+"]"},u=function(){return o(i.left)},c=function(){return o(i.right)};if("="===this.op?s="===":"<>"===this.op?s="!=":"OR"===this.op&&(s="||"),"->"===this.op){var l="("+u()+"||{})";if("string"==typeof this.right)n=l+'["'+this.right+'"]';else if("number"==typeof this.right)n=l+"["+this.right+"]";else if(this.right instanceof X.FuncValue){var h=[];if(this.right.args&&0!==this.right.args.length)var h=this.right.args.map(o);n=l+"['"+this.right.funcid+"']("+h.join(",")+")"}else n=l+"["+c()+"]"}if("!"===this.op&&"string"==typeof this.right&&(n="alasql.databases[alasql.useid].objects["+u()+']["'+this.right+'"]'),"IS"===this.op&&(n="(("+u()+"==null) === ("+c()+"==null))"),"=="===this.op&&(n="alasql.utils.deepEqual("+u()+","+c()+")"),"==="!==this.op&&"!==="!==this.op||(n="("+("!==="===this.op?"!":"")+"(("+u()+").valueOf()===("+c()+").valueOf()))"),"!=="===this.op&&(n="(!alasql.utils.deepEqual("+u()+","+c()+"))"),"||"===this.op&&(n="(''+("+u()+"||'')+("+c()+'||""))'),"LIKE"===this.op||"NOT LIKE"===this.op){var n="("+("NOT LIKE"===this.op?"!":"")+"alasql.utils.like("+c()+","+u();this.escape&&(n+=","+o(this.escape)),n+="))"}if("REGEXP"===this.op&&(n="alasql.stdfn.REGEXP_LIKE("+u()+","+c()+")"),"GLOB"===this.op&&(n="alasql.utils.glob("+u()+","+c()+")"),"BETWEEN"===this.op||"NOT BETWEEN"===this.op){var d=u();n="("+("NOT BETWEEN"===this.op?"!":"")+"(("+o(this.right1)+"<="+d+") && ("+d+"<="+o(this.right2)+")))"}if("IN"===this.op&&(this.right instanceof X.Select?(n="(",n+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,"+e+"))",n+=".indexOf(",n+=u()+")>-1)"):n=Array.isArray(this.right)?"(["+this.right.map(o).join(",")+"].indexOf("+u()+")>-1)":"("+c()+".indexOf("+u()+")>-1)"),"NOT IN"===this.op&&(this.right instanceof X.Select?(n="(",n+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,p))",n+=".indexOf(",n+=u()+")<0)"):Array.isArray(this.right)?(n="(["+this.right.map(o).join(",")+"].indexOf(",n+=u()+")<0)"):(n="("+c()+".indexOf(",n+=u()+")==-1)")),"ALL"===this.allsome){var n;if(this.right instanceof X.Select)n="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",n+=".every(function(b){return (",n+=u()+")"+s+"b})";else{if(!Array.isArray(this.right))throw new Error("NOT IN operator without SELECT");n=""+(1==this.right.length?o(this.right[0]):"["+this.right.map(o).join(",")+"]"),n+=".every(function(b){return (",n+=u()+")"+s+"b})"}}if("SOME"===this.allsome||"ANY"===this.allsome){var n;if(this.right instanceof X.Select)n="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",n+=".some(function(b){return (",n+=u()+")"+s+"b})";else{if(!Array.isArray(this.right))throw new Error("SOME/ANY operator without SELECT");n=""+(1==this.right.length?o(this.right[0]):"["+this.right.map(o).join(",")+"]"),n+=".some(function(b){return (",n+=u()+")"+s+"b})"}}if("AND"===this.op){if(this.left.reduced){if(this.right.reduced)return"true";n=c()}else this.right.reduced&&(n=u());s="&&"}var f=n||"("+u()+s+c()+")",p="y=[("+a.join("), (")+")]";return"&&"===s||"||"===s||"IS"===s||"IS NULL"===s||"IS NOT NULL"===s?"("+p+", "+f+")":"("+p+", y.some(function(e){return e == null}) ? void 0 : "+f+")"},X.VarValue=function(e){return X.extend(this,e)},X.VarValue.prototype.toString=function(){return"@"+this.variable},X.VarValue.prototype.toType=function(){return"unknown"},X.VarValue.prototype.toJS=function(){return"alasql.vars['"+this.variable+"']"},X.NumValue=function(e){return X.extend(this,e)},X.NumValue.prototype.toString=function(){return this.value.toString()},X.NumValue.prototype.toType=function(){return"number"},X.NumValue.prototype.toJS=function(){return""+this.value},X.StringValue=function(e){return X.extend(this,e)},X.StringValue.prototype.toString=function(){return"'"+this.value.toString()+"'"},X.StringValue.prototype.toType=function(){return"string"},X.StringValue.prototype.toJS=function(){return"'"+C(this.value)+"'"},X.DomainValueValue=function(e){return X.extend(this,e)},X.DomainValueValue.prototype.toString=function(){return"VALUE"},X.DomainValueValue.prototype.toType=function(){return"object"},X.DomainValueValue.prototype.toJS=function(e,t,r){return e},X.ArrayValue=function(e){return X.extend(this,e)},X.ArrayValue.prototype.toString=function(){return"ARRAY[]"},X.ArrayValue.prototype.toType=function(){return"object"},X.ArrayValue.prototype.toJS=function(e,t,r){return"[("+this.value.map(function(n){return n.toJS(e,t,r)}).join("), (")+")]"},X.LogicValue=function(e){return X.extend(this,e)},X.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"},X.LogicValue.prototype.toType=function(){return"boolean"},X.LogicValue.prototype.toJS=function(){return this.value?"true":"false"},X.NullValue=function(e){return X.extend(this,e)},X.NullValue.prototype.toString=function(){return"NULL"},X.NullValue.prototype.toJS=function(){return"undefined"},X.ParamValue=function(e){return X.extend(this,e)},X.ParamValue.prototype.toString=function(){return"$"+this.param},X.ParamValue.prototype.toJS=function(){return"string"==typeof this.param?"params['"+this.param+"']":"params["+this.param+"]"},X.UniOp=function(e){return X.extend(this,e)},X.UniOp.prototype.toString=function(){var e;return e=void 0,"~"===this.op&&(e=this.op+this.right.toString()),"-"===this.op&&(e=this.op+this.right.toString()),"+"===this.op&&(e=this.op+this.right.toString()),"#"===this.op&&(e=this.op+this.right.toString()),"NOT"===this.op&&(e=this.op+"("+this.right.toString()+")"),null===this.op&&(e="("+this.right.toString()+")"),e||(e="("+this.right.toString()+")"),e},X.UniOp.prototype.findAggregator=function(e){this.right.findAggregator&&this.right.findAggregator(e)},X.UniOp.prototype.toType=function(){return"-"===this.op?"number":"+"===this.op?"number":"NOT"===this.op?"boolean":void 0},X.UniOp.prototype.toJS=function(e,t,r){return"~"===this.op?"(~("+this.right.toJS(e,t,r)+"))":"-"===this.op?"(-("+this.right.toJS(e,t,r)+"))":"+"===this.op?"("+this.right.toJS(e,t,r)+")":"NOT"===this.op?"!("+this.right.toJS(e,t,r)+")":"#"===this.op?this.right instanceof X.Column?"(alasql.databases[alasql.useid].objects['"+this.right.columnid+"'])":"(alasql.databases[alasql.useid].objects["+this.right.toJS(e,t,r)+"])":null==this.op?"("+this.right.toJS(e,t,r)+")":void 0},X.Column=function(e){return X.extend(this,e)},X.Column.prototype.toString=function(e){var t;return t=this.columnid==+this.columnid?"["+this.columnid+"]":this.columnid,this.tableid&&(t=+this.columnid===this.columnid?this.tableid+t:this.tableid+"."+t,this.databaseid&&(t=this.databaseid+"."+t)),this.alias&&!e&&(t+=" AS "+this.alias),t},X.Column.prototype.toJS=function(e,t,r){var n="";if(this.tableid||""!==t||r)if("g"===e)n="g['"+this.nick+"']";else if(this.tableid)n="_"!==this.columnid?e+"['"+this.tableid+"']['"+this.columnid+"']":"g"===e?"g['_']":e+"['"+this.tableid+"']";else if(r){var a=r[this.columnid];if("-"===a)throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables');n=a?"_"!==this.columnid?e+"['"+a+"']['"+this.columnid+"']":e+"['"+a+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']"}else n=-1===t?e+"['"+this.columnid+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']";else n="_"!==this.columnid?e+"['"+this.columnid+"']":"g"===e?"g['_']":e;return n},X.AggrValue=function(e){return X.extend(this,e)},X.AggrValue.prototype.toString=function(e){var t="";return"REDUCE"===this.aggregatorid?t+=this.funcid+"(":t+=this.aggregatorid+"(",this.distinct&&(t+="DISTINCT "),this.expression&&(t+=this.expression.toString()),t+=")",this.over&&(t+=" "+this.over.toString()),this.alias&&!e&&(t+=" AS "+this.alias),t},X.AggrValue.prototype.findAggregator=function(e){var t=C(this.toString())+":"+e.selectGroup.length,r=!1;if(!r){if(!this.nick){this.nick=t;for(var r=!1,n=0;n-1?"number":["ARRAY"].indexOf(this.aggregatorid)>-1?"array":["FIRST","LAST"].indexOf(this.aggregatorid)>-1?this.expression.toType():void 0},X.AggrValue.prototype.toJS=function(){var e=this.nick;return void 0===e&&(e=this.toString()),"g['"+e+"']"},X.OrderExpression=function(e){return X.extend(this,e)},X.OrderExpression.prototype.toString=X.Expression.prototype.toString,X.GroupExpression=function(e){return X.extend(this,e)},X.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"},X.FromData=function(e){return X.extend(this,e)},X.FromData.prototype.toString=function(){return this.data?"DATA("+(1e16*Math.random()|0)+")":"?"},X.FromData.prototype.toJS=function(){},X.Select.prototype.exec=function(e,t){this.preparams&&(e=this.preparams.concat(e));var r=T.useid;db=T.databases[r];var n=this.toString(),a=x(n),s=this.compile(r);if(s){s.sql=n,s.dbversion=db.dbversion,db.sqlCacheSize>T.MAXSQLCACHESIZE&&db.resetSqlCache(),db.sqlCacheSize++,db.sqlCache[a]=s;return T.res=s(e,t)}},X.Select.prototype.Select=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return e.columns=[],args.forEach(function(t){if("string"==typeof t)e.columns.push(new X.Column({columnid:t}));else if("function"==typeof t){var r=0;e.preparams?r=e.preparams.length:e.preparams=[],e.preparams.push(t),e.columns.push(new X.Column({columnid:"*",func:t,param:r}))}}),e},X.Select.prototype.From=function(e){var t=this;if(t.from||(t.from=[]),Array.isArray(e)){var r=0;t.preparams?r=t.preparams.length:t.preparams=[],t.preparams.push(e),t.from.push(new X.ParamValue({param:r}))}else{if("string"!=typeof e)throw new Error("Unknown arguments in From() function");t.from.push(new X.Table({tableid:e}))}return t},X.Select.prototype.OrderBy=function(){var e=this;if(e.order=[],0==arguments.length)args=["_"];else if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return args.length>0&&args.forEach(function(t){var r=new X.Column({columnid:t});"function"==typeof t&&(r=t),e.order.push(new X.OrderExpression({expression:r,direction:"ASC"}))}),e},X.Select.prototype.Top=function(e){var t=this;return t.top=new X.NumValue({value:e}),t},X.Select.prototype.GroupBy=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return e.group=[],args.forEach(function(t){var r=new X.Column({columnid:t});e.group.push(r)}),e},X.Select.prototype.Where=function(e){var t=this;return"function"==typeof e&&(t.where=e),t},X.FuncValue=function(e){return X.extend(this,e)},X.FuncValue.prototype.toString=function(e){var t="";return T.fn[this.funcid]?t+=this.funcid:T.aggr[this.funcid]?t+=this.funcid:(T.stdlib[this.funcid.toUpperCase()]||T.stdfn[this.funcid.toUpperCase()])&&(t+=this.funcid.toUpperCase()),t+="(",this.args&&this.args.length>0&&(t+=this.args.map(function(e){return e.toString()}).join(",")),t+=")",this.as&&!e&&(t+=" AS "+this.as.toString()),t},X.FuncValue.prototype.execute=function(e,t,r){var n=1;return T.precompile(this,e,t),new Function("params,alasql","var y;return "+this.toJS("","",null))(t,T),r&&(n=r(n)),n},X.FuncValue.prototype.findAggregator=function(e){this.args&&this.args.length>0&&this.args.forEach(function(t){t.findAggregator&&t.findAggregator(e)})},X.FuncValue.prototype.toJS=function(e,t,r){var n="",a=this.funcid;return!T.fn[a]&&T.stdlib[a.toUpperCase()]?this.args&&this.args.length>0?n+=T.stdlib[a.toUpperCase()].apply(this,this.args.map(function(r){return r.toJS(e,t)})):n+=T.stdlib[a.toUpperCase()]():!T.fn[a]&&T.stdfn[a.toUpperCase()]?(this.newid&&(n+="new "),n+="alasql.stdfn."+this.funcid.toUpperCase()+"(",this.args&&this.args.length>0&&(n+=this.args.map(function(n){return n.toJS(e,t,r)}).join(",")),n+=")"):(this.newid&&(n+="new "),n+="alasql.fn."+this.funcid+"(",this.args&&this.args.length>0&&(n+=this.args.map(function(n){return n.toJS(e,t,r)}).join(",")),n+=")"),n};var ne=T.stdlib={},ae=T.stdfn={};ne.ABS=function(e){return"Math.abs("+e+")"},ne.CLONEDEEP=function(e){return"alasql.utils.cloneDeep("+e+")"},ae.CONCAT=function(){return Array.prototype.slice.call(arguments).join("")},ne.EXP=function(e){return"Math.pow(Math.E,"+e+")"},ne.IIF=function(e,t,r){if(3==arguments.length)return"(("+e+")?("+t+"):("+r+"))";throw new Error("Number of arguments of IFF is not equals to 3")},ne.IFNULL=function(e,t){return"("+e+"||"+t+")"},ne.INSTR=function(e,t){return"(("+e+").indexOf("+t+")+1)"},ne.LEN=ne.LENGTH=function(e){return t(e,"y.length")},ne.LOWER=ne.LCASE=function(e){return t(e,"String(y).toLowerCase()")},ne.LTRIM=function(e){return t(e,'y.replace(/^[ ]+/,"")')},ne.RTRIM=function(e){return t(e,'y.replace(/[ ]+$/,"")')},ne.MAX=ne.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"},ne.MIN=ne.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"},ne.SUBSTRING=ne.SUBSTR=ne.MID=function(e,r,n){return 2==arguments.length?t(e,"y.substr("+r+"-1)"):3==arguments.length?t(e,"y.substr("+r+"-1,"+n+")"):void 0},ae.REGEXP_LIKE=function(e,t,r){return(e||"").search(RegExp(t,r))>-1},ne.ISNULL=ne.NULLIF=function(e,t){return"("+e+"=="+t+"?undefined:"+e+")"},ne.POWER=function(e,t){return"Math.pow("+e+","+t+")"},ne.RANDOM=function(e){return 0==arguments.length?"Math.random()":"(Math.random()*("+e+")|0)"},ne.ROUND=function(e,t){return 2==arguments.length?"Math.round(("+e+")*Math.pow(10,("+t+")))/Math.pow(10,("+t+"))":"Math.round("+e+")"},ne.CEIL=ne.CEILING=function(e){return"Math.ceil("+e+")"},ne.FLOOR=function(e){return"Math.floor("+e+")"},ne.ROWNUM=function(){return"1"},ne.ROW_NUMBER=function(){return"1"},ne.SQRT=function(e){return"Math.sqrt("+e+")"},ne.TRIM=function(e){return t(e,"y.trim()")},ne.UPPER=ne.UCASE=function(e){return t(e,"String(y).toUpperCase()")},ae.CONCAT_WS=function(){var e=Array.prototype.slice.call(arguments);return e.slice(1,e.length).join(e[0])},T.aggr.GROUP_CONCAT=function(e,t,r){return 1===r?""+e:2===r?t+=","+e:t},T.aggr.MEDIAN=function(e,t,r){if(2===r)return null!==e&&t.push(e),t;if(1===r)return null===e?[]:[e];if(!t.length)return t;var n=t.sort(),a=(n.length+1)/2;return Number.isInteger(a)?n[a-1]:(n[Math.floor(a-1)]+n[Math.ceil(a-1)])/2},T.aggr.QUART=function(e,t,r,n){if(2===r)return null!==e&&t.push(e),t;if(1===r)return null===e?[]:[e];if(!t.length)return t;n=n||1;var a=t.sort(),s=n*(a.length+1)/4;return Number.isInteger(s)?a[s-1]:a[Math.floor(s)]},T.aggr.QUART2=function(e,t,r){return T.aggr.QUART(e,t,r,2)},T.aggr.QUART3=function(e,t,r){return T.aggr.QUART(e,t,r,3)},T.aggr.VAR=function(e,t,r){if(1===r)return null===e?{arr:[],sum:0}:{arr:[e],sum:e};if(2===r)return null===e?t:(t.arr.push(e),t.sum+=e,t);for(var n=t.arr.length,a=t.sum/n,s=0,i=0;i>8&255]+se[e>>16&255]+se[e>>24&255]+"-"+se[255&t]+se[t>>8&255]+"-"+se[t>>16&15|64]+se[t>>24&255]+"-"+se[63&r|128]+se[r>>8&255]+"-"+se[r>>16&255]+se[r>>24&255]+se[255&n]+se[n>>8&255]+se[n>>16&255]+se[n>>24&255]},X.CaseValue=function(e){return X.extend(this,e)},X.CaseValue.prototype.toString=function(){var e="CASE ";return this.expression&&(e+=this.expression.toString()),this.whens&&(e+=this.whens.map(function(e){return" WHEN "+e.when.toString()+" THEN "+e.then.toString()}).join()),e+=" END"},X.CaseValue.prototype.findAggregator=function(e){this.expression&&this.expression.findAggregator&&this.expression.findAggregator(e),this.whens&&this.whens.length>0&&this.whens.forEach(function(t){t.when.findAggregator&&t.when.findAggregator(e),t.then.findAggregator&&t.then.findAggregator(e)}),this.elses&&this.elses.findAggregator&&this.elses.findAggregator(e)},X.CaseValue.prototype.toJS=function(e,t,r){var n="((function("+e+",params,alasql){var y,r;";return this.expression?(n+="v="+this.expression.toJS(e,t,r)+";",n+=(this.whens||[]).map(function(n){return" if(v=="+n.when.toJS(e,t,r)+") {r="+n.then.toJS(e,t,r)+"}"}).join(" else "),this.elses&&(n+=" else {r="+this.elses.toJS(e,t,r)+"}")):(n+=(this.whens||[]).map(function(n){return" if("+n.when.toJS(e,t,r)+") {r="+n.then.toJS(e,t,r)+"}"}).join(" else "),this.elses&&(n+=" else {r="+this.elses.toJS(e,t,r)+"}")),n+=";return r;}).bind(this))("+e+",params,alasql)"},X.Json=function(e){return X.extend(this,e)},X.Json.prototype.toString=function(){var e="";return e+=oe(this.value),e+=""};var oe=T.utils.JSONtoString=function(e){var t="";if("string"==typeof e)t='"'+e+'"';else if("number"==typeof e)t=e;else if("boolean"==typeof e)t=e;else{if("object"!=typeof e)throw new Error("2Can not show JSON object "+JSON.stringify(e));if(Array.isArray(e))t+="["+e.map(function(e){return oe(e)}).join(",")+"]";else if(!e.toJS||e instanceof X.Json){t="{";var r=[];for(var n in e){var a="";if("string"==typeof n)a+='"'+n+'"';else if("number"==typeof n)a+=n;else{if("boolean"!=typeof n)throw new Error("THis is not ES6... no expressions on left side yet");a+=n}a+=":"+oe(e[n]),r.push(a)}t+=r.join(",")+"}"}else{if(!e.toString)throw new Error("1Can not show JSON object "+JSON.stringify(e));t=e.toString()}}return t};X.Json.prototype.toJS=function(e,t,r){return b(this.value,e,t,r)},X.Convert=function(e){return X.extend(this,e)},X.Convert.prototype.toString=function(){var e="CONVERT(";return e+=this.dbtypeid,void 0!==this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+this.dbprecision),e+=")"),e+=","+this.expression.toString(),this.style&&(e+=","+this.style),e+=")"},X.Convert.prototype.toJS=function(e,t,r){return"alasql.stdfn.CONVERT("+this.expression.toJS(e,t,r)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",dbprecision:"+this.dbprecision+",style:"+this.style+"})"},T.stdfn.CONVERT=function(e,t){var r=e;if(t.style){var n;switch(n=/\d{8}/.test(r)?new Date(+r.substr(0,4),+r.substr(4,2)-1,+r.substr(6,2)):new Date(r),t.style){case 1:r=("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2)+"/"+("0"+n.getYear()).substr(-2);break;case 2:r=("0"+n.getYear()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getDate()).substr(-2);break;case 3:r=("0"+n.getDate()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getYear()).substr(-2);break;case 4:r=("0"+n.getDate()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getYear()).substr(-2);break;case 5:r=("0"+n.getDate()).substr(-2)+"-"+("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getYear()).substr(-2);break;case 6:r=("0"+n.getDate()).substr(-2)+" "+n.toString().substr(4,3).toLowerCase()+" "+("0"+n.getYear()).substr(-2);break;case 7:r=n.toString().substr(4,3)+" "+("0"+n.getDate()).substr(-2)+","+("0"+n.getYear()).substr(-2);break;case 8:case 108:r=("0"+n.getHours()).substr(-2)+":"+("0"+n.getMinutes()).substr(-2)+":"+("0"+n.getSeconds()).substr(-2);break;case 10:r=("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getDate()).substr(-2)+"-"+("0"+n.getYear()).substr(-2);break;case 11:r=("0"+n.getYear()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2);break;case 12:r=("0"+n.getYear()).substr(-2)+("0"+(n.getMonth()+1)).substr(-2)+("0"+n.getDate()).substr(-2);break;case 101:r=("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2)+"/"+n.getFullYear();break;case 102:r=n.getFullYear()+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getDate()).substr(-2);break;case 103:r=("0"+n.getDate()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+n.getFullYear();break;case 104:r=("0"+n.getDate()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+n.getFullYear();break;case 105:r=("0"+n.getDate()).substr(-2)+"-"+("0"+(n.getMonth()+1)).substr(-2)+"-"+n.getFullYear();break;case 106:r=("0"+n.getDate()).substr(-2)+" "+n.toString().substr(4,3).toLowerCase()+" "+n.getFullYear();break;case 107:r=n.toString().substr(4,3)+" "+("0"+n.getDate()).substr(-2)+","+n.getFullYear();break;case 110:r=("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getDate()).substr(-2)+"-"+n.getFullYear();break;case 111:r=n.getFullYear()+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2);break;case 112:r=n.getFullYear()+("0"+(n.getMonth()+1)).substr(-2)+("0"+n.getDate()).substr(-2);break;default:throw new Error("The CONVERT style "+t.style+" is not realized yet.")}}var a=t.dbtypeid.toUpperCase();if("Date"==t.dbtypeid)return new Date(r);if("DATE"==a){var s=new Date(r),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i}if("DATETIME"==a||"DATETIME2"==a){var s=new Date(r),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i+=" "+("0"+s.getHours()).substr(-2)+":"+("0"+s.getMinutes()).substr(-2)+":"+("0"+s.getSeconds()).substr(-2),i+="."+("00"+s.getMilliseconds()).substr(-3)}if(["MONEY"].indexOf(a)>-1){var o=+r;return(0|o)+100*o%100/100}if(["BOOLEAN"].indexOf(a)>-1)return!!r;if(["INT","INTEGER","SMALLINT","BIGINT","SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(t.dbtypeid.toUpperCase())>-1)return 0|r;if(["STRING","VARCHAR","NVARCHAR","CHARACTER VARIABLE"].indexOf(t.dbtypeid.toUpperCase())>-1)return t.dbsize?(""+r).substr(0,t.dbsize):""+r;if(["CHAR","CHARACTER","NCHAR"].indexOf(a)>-1)return(r+new Array(t.dbsize+1).join(" ")).substr(0,t.dbsize);if(["NUMBER","FLOAT","DECIMAL","NUMERIC"].indexOf(a)>-1){var o=+r;return o=void 0!==t.dbsize?parseFloat(o.toPrecision(t.dbsize)):o,o=void 0!==t.dbprecision?parseFloat(o.toFixed(t.dbprecision)):o}if(["JSON"].indexOf(a)>-1){if("object"==typeof r)return r;try{return JSON.parse(r)}catch(e){throw new Error("Cannot convert string to JSON")}}return r},X.ColumnDef=function(e){return X.extend(this,e)},X.ColumnDef.prototype.toString=function(){var e=this.columnid;return this.dbtypeid&&(e+=" "+this.dbtypeid),this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+this.dbprecision),e+=")"),this.primarykey&&(e+=" PRIMARY KEY"),this.notnull&&(e+=" NOT NULL"),e},X.CreateTable=function(e){return X.extend(this,e)},X.CreateTable.prototype.toString=function(){var e="CREATE";if(this.temporary&&(e+=" TEMPORARY"),this.view?e+=" VIEW":e+=" "+(this.class?"CLASS":"TABLE"),this.ifnotexists&&(e+=" IF NOT EXISTS"),e+=" "+this.table.toString(),this.viewcolumns&&(e+="("+this.viewcolumns.map(function(e){return e.toString()}).join(",")+")"),this.as)e+=" AS "+this.as;else{e+=" ("+this.columns.map(function(e){return e.toString()}).join(",")+")"}return this.view&&this.select&&(e+=" AS "+this.select.toString()),e},X.CreateTable.prototype.execute=function(e,t,r){var n=T.databases[this.table.databaseid||e],a=this.table.tableid;if(!a)throw new Error("Table name is not defined");var s=this.columns,i=this.constraints||[];if(this.ifnotexists&&n.tables[a])return r?r(0):0;if(n.tables[a])throw new Error("Can not create table '"+a+"', because it already exists in the database '"+n.databaseid+"'");var o=n.tables[a]=new T.Table;this.class&&(o.isclass=!0);var u=[],c=[];if(s&&s.forEach(function(t){var r=t.dbtypeid;T.fn[r]||(r=r.toUpperCase()),["SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(r)>-1&&(t.identity={value:1,step:1});var n={columnid:t.columnid,dbtypeid:r,dbsize:t.dbsize,dbprecision:t.dbprecision,notnull:t.notnull,identity:t.identity};if(t.identity&&(o.identities[t.columnid]={value:+t.identity.value,step:+t.identity.step}),t.check&&o.checks.push({id:t.check.constrantid,fn:new Function("r","var y;return "+t.check.expression.toJS("r",""))}),t.default&&u.push("'"+t.columnid+"':"+t.default.toJS("r","")),t.primarykey){var a=o.pk={};a.columns=[t.columnid],a.onrightfns="r['"+t.columnid+"']",a.onrightfn=new Function("r","var y;return "+a.onrightfns),a.hh=x(a.onrightfns),o.uniqs[a.hh]={}}if(t.unique){var s={};o.uk=o.uk||[],o.uk.push(s),s.columns=[t.columnid],s.onrightfns="r['"+t.columnid+"']",s.onrightfn=new Function("r","var y;return "+s.onrightfns),s.hh=x(s.onrightfns),o.uniqs[s.hh]={}}if(t.foreignkey){var i=t.foreignkey.table,l=T.databases[i.databaseid||e].tables[i.tableid];if(void 0===i.columnid){if(!(l.pk.columns&&l.pk.columns.length>0))throw new Error("FOREIGN KEY allowed only to tables with PRIMARY KEYs");i.columnid=l.pk.columns[0]}var h=function(e){var r={};if(void 0===e[t.columnid])return!0;r[i.columnid]=e[t.columnid];var n=l.pk.onrightfn(r);if(!l.uniqs[l.pk.hh][n])throw new Error('Foreign key "'+e[t.columnid]+'" is not found in table '+l.tableid);return!0};o.checks.push({fn:h})}t.onupdate&&c.push("r['"+t.columnid+"']="+t.onupdate.toJS("r","")),o.columns.push(n),o.xcolumns[n.columnid]=n}),o.defaultfns=u.join(","),o.onupdatefns=c.join(";"),i.forEach(function(t){var r;if("PRIMARY KEY"===t.type){if(o.pk)throw new Error("Primary key already exists");var n=o.pk={};n.columns=t.columns,n.onrightfns=n.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),n.onrightfn=new Function("r","var y;return "+n.onrightfns),n.hh=x(n.onrightfns),o.uniqs[n.hh]={}}else if("CHECK"===t.type)r=new Function("r","var y;return "+t.expression.toJS("r",""));else if("UNIQUE"===t.type){var a={};o.uk=o.uk||[],o.uk.push(a),a.columns=t.columns,a.onrightfns=a.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),a.onrightfn=new Function("r","var y;return "+a.onrightfns),a.hh=x(a.onrightfns),o.uniqs[a.hh]={}}else if("FOREIGN KEY"===t.type){var s=o.xcolumns[t.columns[0]],i=t.fktable;t.fkcolumns&&t.fkcolumns.length>0&&(i.columnid=t.fkcolumns[0]);var u=T.databases[i.databaseid||e].tables[i.tableid];void 0===i.columnid&&(i.columnid=u.pk.columns[0]),r=function(e){var t={};if(void 0===e[s.columnid])return!0;t[i.columnid]=e[s.columnid];var r=u.pk.onrightfn(t);if(!u.uniqs[u.pk.hh][r])throw new Error('Foreign key "'+e[s.columnid]+'" is not found in table '+u.tableid);return!0}}r&&o.checks.push({fn:r,id:t.constraintid,fk:"FOREIGN KEY"===t.type})}),this.view&&this.viewcolumns){var l=this;this.viewcolumns.forEach(function(e,t){l.select.columns[t].as=e.columnid})}if(this.view&&this.select&&(o.view=!0,o.select=this.select.compile(this.table.databaseid||e)),n.engineid)return T.engines[n.engineid].createTable(this.table.databaseid||e,a,this.ifnotexists,r);o.insert=function(r,n){var a=T.inserted;T.inserted=[r];var s=this,i=!1,o=!1;for(var u in s.beforeinsert){var c=s.beforeinsert[u];c&&(c.funcid?!1===T.fn[c.funcid](r)&&(o=o||!0):c.statement&&!1===c.statement.execute(e)&&(o=o||!0))}if(!o){var l=!1;for(u in s.insteadofinsert)l=!0,(c=s.insteadofinsert[u])&&(c.funcid?T.fn[c.funcid](r):c.statement&&c.statement.execute(e));if(!l){for(var h in s.identities){var d=s.identities[h];r[h]=d.value}if(s.checks&&s.checks.length>0&&s.checks.forEach(function(e){if(!e.fn(r))throw new Error("Violation of CHECK constraint "+(e.id||""))}),s.columns.forEach(function(e){if(e.notnull&&void 0===r[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),s.pk){
-var f=s.pk,p=f.onrightfn(r);if(void 0!==s.uniqs[f.hh][p]){if(!n)throw new Error("Cannot insert record, because it already exists in primary key index");i=s.uniqs[f.hh][p]}}if(s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(r);if(void 0!==s.uniqs[e.hh][t]){if(!n)throw new Error("Cannot insert record, because it already exists in unique index");i=s.uniqs[e.hh][t]}}),i)s.update(function(e){for(var t in r)e[t]=r[t]},s.data.indexOf(i),t);else{s.data.push(r);for(var h in s.identities){var d=s.identities[h];d.value+=d.step}if(s.pk){var f=s.pk,p=f.onrightfn(r);s.uniqs[f.hh][p]=r}s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(r);s.uniqs[e.hh][t]=r})}for(var u in s.afterinsert){var c=s.afterinsert[u];c&&(c.funcid?T.fn[c.funcid](r):c.statement&&c.statement.execute(e))}T.inserted=a}}},o.delete=function(t){var r=this,n=r.data[t],a=!1;for(var s in r.beforedelete){var i=r.beforedelete[s];i&&(i.funcid?!1===T.fn[i.funcid](n)&&(a=a||!0):i.statement&&!1===i.statement.execute(e)&&(a=a||!0))}if(a)return!1;var o=!1;for(var s in r.insteadofdelete){o=!0;var i=r.insteadofdelete[s];i&&(i.funcid?T.fn[i.funcid](n):i.statement&&i.statement.execute(e))}if(!o){if(this.pk){var u=this.pk,c=u.onrightfn(n);if(void 0===this.uniqs[u.hh][c])throw new Error("Something wrong with primary key index on table");this.uniqs[u.hh][c]=void 0}r.uk&&r.uk.length&&r.uk.forEach(function(e){var t=e.onrightfn(n);if(void 0===r.uniqs[e.hh][t])throw new Error("Something wrong with unique index on table");r.uniqs[e.hh][t]=void 0})}},o.deleteall=function(){this.data.length=0,this.pk&&(this.uniqs[this.pk.hh]={}),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh]={}})},o.update=function(t,r,n){var a,s=_(this.data[r]);if(this.pk&&(a=this.pk,a.pkaddr=a.onrightfn(s,n),void 0===this.uniqs[a.hh][a.pkaddr]))throw new Error("Something wrong with index on table");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.ukaddr=e.onrightfn(s),void 0===o.uniqs[e.hh][e.ukaddr])throw new Error("Something wrong with unique index on table")}),t(s,n,T);var i=!1;for(var u in o.beforeupdate){var c=o.beforeupdate[u];c&&(c.funcid?!1===T.fn[c.funcid](this.data[r],s)&&(i=i||!0):c.statement&&!1===c.statement.execute(e)&&(i=i||!0))}if(i)return!1;var l=!1;for(var u in o.insteadofupdate){l=!0;var c=o.insteadofupdate[u];c&&(c.funcid?T.fn[c.funcid](this.data[r],s):c.statement&&c.statement.execute(e))}if(!l){if(o.checks&&o.checks.length>0&&o.checks.forEach(function(e){if(!e.fn(s))throw new Error("Violation of CHECK constraint "+(e.id||""))}),o.columns.forEach(function(e){if(e.notnull&&void 0===s[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),this.pk&&(a.newpkaddr=a.onrightfn(s),void 0!==this.uniqs[a.hh][a.newpkaddr]&&a.newpkaddr!==a.pkaddr))throw new Error("Record already exists");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.newukaddr=e.onrightfn(s),void 0!==o.uniqs[e.hh][e.newukaddr]&&e.newukaddr!==e.ukaddr)throw new Error("Record already exists")}),this.pk&&(this.uniqs[a.hh][a.pkaddr]=void 0,this.uniqs[a.hh][a.newpkaddr]=s),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh][e.ukaddr]=void 0,o.uniqs[e.hh][e.newukaddr]=s}),this.data[r]=s;for(var u in o.afterupdate){var c=o.afterupdate[u];c&&(c.funcid?T.fn[c.funcid](this.data[r],s):c.statement&&c.statement.execute(e))}}};var h;return T.options.nocount||(h=1),r&&(h=r(h)),h},T.fn.Date=Object,T.fn.Date=Date,T.fn.Number=Number,T.fn.String=String,T.fn.Boolean=Boolean,ae.EXTEND=T.utils.extend,ae.CHAR=String.fromCharCode.bind(String),ae.ASCII=function(e){return e.charCodeAt(0)},ae.COALESCE=function(){for(var e=0;e0)var n=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),s=new Function("x,params,alasql",n);return function(e,n){var i,o,u=T.databases[t];o=void 0!==r?r:u.counter++;var c={$id:o,$node:"VERTEX"};return u.objects[c.$id]=c,i=c,a&&a(c),s&&s(c,e,T),n&&(i=n(i)),i}},X.CreateEdge=function(e){return X.extend(this,e)},X.CreateEdge.prototype.toString=function(){var e="CREATE EDGE ";return this.class&&(e+=this.class+" "),e},X.CreateEdge.prototype.toJS=function(e){return"this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+")"},X.CreateEdge.prototype.compile=function(e){var t=e,r=new Function("params,alasql","var y;return "+this.from.toJS()),n=new Function("params,alasql","var y;return "+this.to.toJS());if(void 0!==this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);return function(e,a){var o=0,u=T.databases[t],c={$id:u.counter++,$node:"EDGE"},l=r(e,T),h=n(e,T);return c.$in=[l.$id],c.$out=[h.$id],void 0===l.$out&&(l.$out=[]),l.$out.push(c.$id),void 0===typeof h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,T),a&&(o=a(o)),o}},X.CreateGraph=function(e){return X.extend(this,e)},X.CreateGraph.prototype.toString=function(){var e="CREATE GRAPH ";return this.class&&(e+=this.class+" "),e},X.CreateGraph.prototype.execute=function(e,t,r){function n(e){var t=T.databases[T.useid].objects;for(var r in t)if(t[r].name===e)return t[r]}function a(r){var n={};void 0!==r.as&&(T.vars[r.as]=n),void 0!==r.prop&&(n.$id=r.prop,n.name=r.prop),void 0!==r.sharp&&(n.$id=r.sharp),void 0!==r.name&&(n.name=r.name),void 0!==r.class&&(n.$class=r.class);var a=T.databases[e];if(void 0===n.$id&&(n.$id=a.counter++),n.$node="VERTEX",void 0!==r.json&&q(n,new Function("params,alasql","var y;return "+r.json.toJS())(t,T)),a.objects[n.$id]=n,void 0!==n.$class){if(void 0===T.databases[e].tables[n.$class])throw new Error("No such class. Pleace use CREATE CLASS");T.databases[e].tables[n.$class].data.push(n)}return s.push(n.$id),n}var s=[];return this.from&&T.from[this.from.funcid]&&(this.graph=T.from[this.from.funcid.toUpperCase()]),this.graph.forEach(function(r){if(r.source){var i={};void 0!==r.as&&(T.vars[r.as]=i),void 0!==r.prop&&(i.name=r.prop),void 0!==r.sharp&&(i.$id=r.sharp),void 0!==r.name&&(i.name=r.name),void 0!==r.class&&(i.$class=r.class);var o=T.databases[e];void 0===i.$id&&(i.$id=o.counter++),i.$node="EDGE",void 0!==r.json&&q(i,new Function("params,alasql","var y;return "+r.json.toJS())(t,T));var u;if(r.source.vars){var c=T.vars[r.source.vars];u="object"==typeof c?c:o.objects[c]}else{var l=r.source.sharp;void 0===l&&(l=r.source.prop),u=T.databases[e].objects[l],void 0!==u||!T.options.autovertex||void 0===r.source.prop&&void 0===r.source.name||void 0===(u=n(r.source.prop||r.source.name))&&(u=a(r.source))}var h;if(r.source.vars){var c=T.vars[r.target.vars];h="object"==typeof c?c:o.objects[c]}else{var d=r.target.sharp;void 0===d&&(d=r.target.prop),h=T.databases[e].objects[d],void 0!==h||!T.options.autovertex||void 0===r.target.prop&&void 0===r.target.name||void 0===(h=n(r.target.prop||r.target.name))&&(h=a(r.target))}if(i.$in=[u.$id],i.$out=[h.$id],void 0===u.$out&&(u.$out=[]),u.$out.push(i.$id),void 0===h.$in&&(h.$in=[]),h.$in.push(i.$id),o.objects[i.$id]=i,void 0!==i.$class){if(void 0===T.databases[e].tables[i.$class])throw new Error("No such class. Pleace use CREATE CLASS");T.databases[e].tables[i.$class].data.push(i)}s.push(i.$id)}else a(r)}),r&&(s=r(s)),s},X.CreateGraph.prototype.compile1=function(e){var t=e,r=new Function("params,alasql","var y;return "+this.from.toJS()),n=new Function("params,alasql","var y;return "+this.to.toJS());if(void 0!==this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);return function(e,a){var o=0,u=T.databases[t],c={$id:u.counter++,$node:"EDGE"},l=r(e,T),h=n(e,T);return c.$in=[l.$id],c.$out=[h.$id],void 0===l.$out&&(l.$out=[]),l.$out.push(c.$id),void 0===h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,T),a&&(o=a(o)),o}},X.AlterTable=function(e){return X.extend(this,e)},X.AlterTable.prototype.toString=function(){var e="ALTER TABLE "+this.table.toString();return this.renameto&&(e+=" RENAME TO "+this.renameto),e},X.AlterTable.prototype.execute=function(e,t,r){var n=T.databases[e];if(n.dbversion=Date.now(),this.renameto){var a=this.table.tableid,s=this.renameto,i=1;if(n.tables[s])throw new Error("Can not rename a table '"+a+"' to '"+s+"', because the table with this name already exists");if(s===a)throw new Error("Can not rename a table '"+a+"' to itself");return n.tables[s]=n.tables[a],delete n.tables[a],i=1,r&&r(i),i}if(this.addcolumn){n=T.databases[this.table.databaseid||e],n.dbversion++;var o=this.table.tableid,u=n.tables[o],c=this.addcolumn.columnid;if(u.xcolumns[c])throw new Error('Cannot add column "'+c+'", because it already exists in the table "'+o+'"');var l={columnid:c,dbtypeid:this.dbtypeid,dbsize:this.dbsize,dbprecision:this.dbprecision,dbenum:this.dbenum,defaultfns:null};u.columns.push(l),u.xcolumns[c]=l;for(var h=0,d=u.data.length;h0)for(var l=0,h=s.data.length;l0)for(var l=0,h=s.data.length;l=0?r+="(x="+s[t].toJS()+",x==undefined?undefined:+x)":T.fn[a.xcolumns[e.columnid].dbtypeid]?(r+="(new "+a.xcolumns[e.columnid].dbtypeid+"(",r+=s[t].toJS(),r+="))"):r+=s[t].toJS():r+=s[t].toJS(),u.push(r)}):Array.isArray(s)&&a.columns&&a.columns.length>0?a.columns.forEach(function(e,t){var r="'"+e.columnid+"':";["INT","FLOAT","NUMBER","MONEY"].indexOf(e.dbtypeid)>=0?r+="+"+s[t].toJS():T.fn[e.dbtypeid]?(r+="(new "+e.dbtypeid+"(",r+=s[t].toJS(),r+="))"):r+=s[t].toJS(),u.push(r)}):o=b(s),r.tables[n].defaultfns&&u.unshift(r.tables[n].defaultfns),i+=o?"a="+o+";":"a={"+u.join(",")+"};",r.tables[n].isclass&&(i+="var db=alasql.databases['"+e+"'];",i+='a.$class="'+n+'";',i+="a.$id=db.counter++;",i+="db.objects[a.$id]=a;"),r.tables[n].insert?(i+="var db=alasql.databases['"+e+"'];",i+="db.tables['"+n+"'].insert(a,"+(t.orreplace?"true":"false")+");"):i+="aa.push(a);"}),s=u+i,r.tables[n].insert||(i+="alasql.databases['"+e+"'].tables['"+n+"'].data=alasql.databases['"+e+"'].tables['"+n+"'].data.concat(aa);"),r.tables[n].insert&&r.tables[n].isclass?i+="return a.$id;":i+="return "+t.values.length;var c=new Function("db, params, alasql","var y;"+u+i).bind(this)}else if(this.select){this.select.modifier="RECORDSET";var l=this.select.compile(e);if(r.engineid&&T.engines[r.engineid].intoTable){var h=function(e,t){var a=l(e);return T.engines[r.engineid].intoTable(r.databaseid,n,a.data,null,t)};return h}var d="return alasql.utils.extend(r,{"+a.defaultfns+"})",f=new Function("r,db,params,alasql",d),c=function(e,r,a){var s=l(r).data;if(e.tables[n].insert)for(var i=0,o=s.length;i0&&(e+="("+this.args.map(function(e){return e.toString()}).join(", ")+")"),this.as&&(e+=" AS "+this.as),e},X.CreateDatabase.prototype.execute=function(e,t,r){if(this.args&&this.args.length>0&&this.args.map(function(e){return new Function("params,alasql","var y;return "+e.toJS())(t,T)}),this.engineid){var n=T.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,r);return n}var a=this.databaseid;if(T.databases[a])throw new Error("Database '"+a+"' already exists");var n=(new T.Database(a),1);return r?r(n):n},X.AttachDatabase=function(e){return X.extend(this,e)},X.AttachDatabase.prototype.toString=function(e){var t="ATTACH";return this.engineid&&(t+=" "+this.engineid),t+=" DATABASE "+this.databaseid,e&&(t+="(",e.length>0&&(t+=e.map(function(e){return e.toString()}).join(", ")),t+=")"),this.as&&(t+=" AS "+this.as),t},X.AttachDatabase.prototype.execute=function(e,t,r){if(!T.engines[this.engineid])throw new Error('Engine "'+this.engineid+'" is not defined.');return T.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,t,r)},X.DetachDatabase=function(e){return X.extend(this,e)},X.DetachDatabase.prototype.toString=function(){var e="DETACH";return e+=" DATABASE "+this.databaseid},X.DetachDatabase.prototype.execute=function(e,t,r){if(!T.databases[this.databaseid].engineid)throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.');var n,a=this.databaseid;if(a===T.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(T.databases[a])delete T.databases[a],a===T.useid&&T.use(),n=1;else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");n=0}return r&&r(n),n},X.UseDatabase=function(e){return X.extend(this,e)},X.UseDatabase.prototype.toString=function(){return"USE DATABASE "+this.databaseid},X.UseDatabase.prototype.execute=function(e,t,r){var n=this.databaseid;if(!T.databases[n])throw new Error("Database '"+n+"' does not exist");T.use(n);return r&&r(1),1},X.DropDatabase=function(e){return X.extend(this,e)},X.DropDatabase.prototype.toString=function(){var e="DROP";return this.ifexists&&(e+=" IF EXISTS"),e+=" DATABASE "+this.databaseid},X.DropDatabase.prototype.execute=function(e,t,r){if(this.engineid)return T.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,r);var n,a=this.databaseid;if(a===T.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(T.databases[a]){if(T.databases[a].engineid)throw new Error("Cannot drop database '"+a+"', because it is attached. Detach it.");delete T.databases[a],a===T.useid&&T.use(),n=1}else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");n=0}return r&&r(n),n},X.Declare=function(e){return X.extend(this,e)},X.Declare.prototype.toString=function(){var e="DECLARE ";return this.declares&&this.declares.length>0&&(e=this.declares.map(function(e){var t="";return t+="@"+e.variable+" ",t+=e.dbtypeid,this.dbsize&&(t+="("+this.dbsize,this.dbprecision&&(t+=","+this.dbprecision),t+=")"),e.expression&&(t+=" = "+e.expression.toString()),t}).join(",")),e},X.Declare.prototype.execute=function(e,t,r){var n=1;return this.declares&&this.declares.length>0&&this.declares.map(function(e){var r=e.dbtypeid;T.fn[r]||(r=r.toUpperCase()),T.declares[e.variable]={dbtypeid:r,dbsize:e.dbsize,dbprecision:e.dbprecision},e.expression&&(T.vars[e.variable]=new Function("params,alasql","return "+e.expression.toJS("({})","",null))(t,T),T.declares[e.variable]&&(T.vars[e.variable]=T.stdfn.CONVERT(T.vars[e.variable],T.declares[e.variable])))}),r&&(n=r(n)),n},X.ShowDatabases=function(e){return X.extend(this,e)},X.ShowDatabases.prototype.toString=function(){var e="SHOW DATABASES";return this.like&&(e+="LIKE "+this.like.toString()),e},X.ShowDatabases.prototype.execute=function(e,t,r){if(this.engineid)return T.engines[this.engineid].showDatabases(this.like,r);var n=this,a=[];for(var s in T.databases)a.push({databaseid:s});return n.like&&a&&a.length>0&&(a=a.filter(function(e){return T.utils.like(n.like.value,e.databaseid)})),r&&r(a),a},X.ShowTables=function(e){return X.extend(this,e)},X.ShowTables.prototype.toString=function(){var e="SHOW TABLES";return this.databaseid&&(e+=" FROM "+this.databaseid),this.like&&(e+=" LIKE "+this.like.toString()),e},
-X.ShowTables.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=this,s=[];for(var i in n.tables)s.push({tableid:i});return a.like&&s&&s.length>0&&(s=s.filter(function(e){return T.utils.like(a.like.value,e.tableid)})),r&&r(s),s},X.ShowColumns=function(e){return X.extend(this,e)},X.ShowColumns.prototype.toString=function(){var e="SHOW COLUMNS";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowColumns.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=n.tables[this.table.tableid];if(a&&a.columns){var s=a.columns.map(function(e){return{columnid:e.columnid,dbtypeid:e.dbtypeid,dbsize:e.dbsize}});return r&&r(s),s}return r&&r([]),[]},X.ShowIndex=function(e){return X.extend(this,e)},X.ShowIndex.prototype.toString=function(){var e="SHOW INDEX";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowIndex.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=n.tables[this.table.tableid],s=[];if(a&&a.indices)for(var i in a.indices)s.push({hh:i,len:Object.keys(a.indices[i]).length});return r&&r(s),s},X.ShowCreateTable=function(e){return X.extend(this,e)},X.ShowCreateTable.prototype.toString=function(){var e="SHOW CREATE TABLE "+this.table.tableid;return this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowCreateTable.prototype.execute=function(e){var t=T.databases[this.databaseid||e],r=t.tables[this.table.tableid];if(r){var n="CREATE TABLE "+this.table.tableid+" (",a=[];return r.columns&&(r.columns.forEach(function(e){var t=e.columnid+" "+e.dbtypeid;e.dbsize&&(t+="("+e.dbsize+")"),e.primarykey&&(t+=" PRIMARY KEY"),a.push(t)}),n+=a.join(", ")),n+=")"}throw new Error('There is no such table "'+this.table.tableid+'"')},X.SetVariable=function(e){return X.extend(this,e)},X.SetVariable.prototype.toString=function(){var e="SET ";return void 0!==this.value&&(e+=this.variable.toUpperCase()+" "+(this.value?"ON":"OFF")),this.expression&&(e+=this.method+this.variable+" = "+this.expression.toString()),e},X.SetVariable.prototype.execute=function(e,t,r){if(void 0!==this.value){var n=this.value;"ON"==n?n=!0:"OFF"==n&&(n=!1),T.options[this.variable]=n}else if(this.expression){this.exists&&(this.existsfn=this.exists.map(function(t){var r=t.compile(e);return r.query&&!r.query.modifier&&(r.query.modifier="RECORDSET"),r})),this.queries&&(this.queriesfn=this.queries.map(function(t){var r=t.compile(e);return r.query&&!r.query.modifier&&(r.query.modifier="RECORDSET"),r}));var a=new Function("params,alasql","return "+this.expression.toJS("({})","",null)).bind(this)(t,T);if(T.declares[this.variable]&&(a=T.stdfn.CONVERT(a,T.declares[this.variable])),this.props&&this.props.length>0){if("@"==this.method)var s="alasql.vars['"+this.variable+"']";else var s="params['"+this.variable+"']";s+=this.props.map(function(e){return"string"==typeof e?"['"+e+"']":"number"==typeof e?"["+e+"]":"["+e.toJS()+"]"}).join(),new Function("value,params,alasql","var y;"+s+"=value")(a,t,T)}else"@"==this.method?T.vars[this.variable]=a:t[this.variable]=a}var a=1;return r&&(a=r(a)),a},T.test=function(e,t,r){if(0===arguments.length)return void T.log(T.con.results);var n=Date.now();if(1===arguments.length)return r(),void T.con.log(Date.now()-n);2===arguments.length&&(r=t,t=1);for(var a=0;a",e),Array.isArray(a)&&console.table?console.table(a):console.log(oe(a));else{var s;s="output"===n?document.getElementsByTagName("output")[0]:"string"==typeof n?document.getElementById(n):n;var i="";if("string"==typeof e&&T.options.logprompt&&(i+=""+T.pretty(e)+" "),Array.isArray(a))if(0===a.length)i+="[ ]
";else if("object"!=typeof a[0]||Array.isArray(a[0]))for(var o=0,u=a.length;o"+E(a[o])+"
";else i+=E(a);else i+=E(a);s.innerHTML+=i}},T.clear=function(){var e=T.options.logtarget;if(N.isNode||N.isMeteorServer)console.clear&&console.clear();else{var t;t="output"===e?document.getElementsByTagName("output")[0]:"string"==typeof e?document.getElementById(e):e,t.innerHTML=""}},T.write=function(e){var t=T.options.logtarget;if(N.isNode||N.isMeteorServer)console.log&&console.log(e);else{var r;r="output"===t?document.getElementsByTagName("output")[0]:"string"==typeof t?document.getElementById(t):t,r.innerHTML+=e}},T.prompt=function(e,t,r){if(N.isNode)throw new Error("The prompt not realized for Node.js");var n=0;if("string"==typeof e&&(e=document.getElementById(e)),"string"==typeof t&&(t=document.getElementById(t)),t.textContent=T.useid,r){T.prompthistory.push(r),n=T.prompthistory.length;try{var a=Date.now();T.log(r),T.write(''+(Date.now()-a)+" ms
")}catch(e){T.write(""+olduseid+"> "+sql+"
"),T.write(''+e+"
")}}var s=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;g(document.getElementsByTagName("body")[0],s,500),e.onkeydown=function(r){if(13===r.which){var a=e.value,s=T.useid;e.value="",T.prompthistory.push(a),n=T.prompthistory.length;try{var i=Date.now();T.log(a),T.write('
'+(Date.now()-i)+" ms
")}catch(e){T.write(""+s+"> "+T.pretty(a,!1)+"
"),T.write(''+e+"
")}e.focus(),t.textContent=T.useid;var o=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;g(document.getElementsByTagName("body")[0],o,500)}else 38===r.which?(n--,n<0&&(n=0),T.prompthistory[n]&&(e.value=T.prompthistory[n],r.preventDefault())):40===r.which&&(n++,n>=T.prompthistory.length?(n=T.prompthistory.length,e.value=""):T.prompthistory[n]&&(e.value=T.prompthistory[n],r.preventDefault()))}},X.BeginTransaction=function(e){return X.extend(this,e)},X.BeginTransaction.prototype.toString=function(){return"BEGIN TRANSACTION"},X.BeginTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[T.useid].engineid].begin(e,r):(r&&r(1),1)},X.CommitTransaction=function(e){return X.extend(this,e)},X.CommitTransaction.prototype.toString=function(){return"COMMIT TRANSACTION"},X.CommitTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[T.useid].engineid].commit(e,r):(r&&r(1),1)},X.RollbackTransaction=function(e){return X.extend(this,e)},X.RollbackTransaction.prototype.toString=function(){return"ROLLBACK TRANSACTION"},X.RollbackTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[e].engineid].rollback(e,r):(r&&r(1),1)},T.options.tsql&&(T.stdfn.OBJECT_ID=function(e,t){void 0===t&&(t="T"),t=t.toUpperCase();var r=e.split("."),n=T.useid,a=r[0];2==r.length&&(n=r[0],a=r[1]);var s=T.databases[n].tables;n=T.databases[n].databaseid;for(var i in s)if(i==a){if(s[i].view&&"V"==t)return n+"."+i;if(!s[i].view&&"T"==t)return n+"."+i;return}}),T.options.mysql,(T.options.mysql||T.options.sqlite)&&(T.from.INFORMATION_SCHEMA=function(e,t,r,n,a){if("VIEWS"==e||"TABLES"==e){var s=[];for(var i in T.databases){var o=T.databases[i].tables;for(var u in o)(o[u].view&&"VIEWS"==e||!o[u].view&&"TABLES"==e)&&s.push({TABLE_CATALOG:i,TABLE_NAME:u})}return r&&(s=r(s,n,a)),s}throw new Error("Unknown INFORMATION_SCHEMA table")}),T.options.postgres,T.options.oracle,T.options.sqlite,T.into.SQL=function(e,t,r,n,a){var s;"object"==typeof e&&(t=e,e=void 0);var i={};if(T.utils.extend(i,t),void 0===i.tableid)throw new Error("Table for INSERT TO is not defined.");var o="";0===n.length&&"object"==typeof r[0]&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}}));for(var u=0,c=r.length;u0&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s=r.length,i="";if(r.length>0){var o=n[0].columnid;i+=r.map(function(e){return e[o]}).join("\n")}return e=T.utils.autoExtFilename(e,"txt",t),s=T.utils.saveFile(e,i),a&&(s=a(s)),s},T.into.TAB=T.into.TSV=function(e,t,r,n,a){var s={};return T.utils.extend(s,t),s.separator="\t",e=T.utils.autoExtFilename(e,"tab",t),s.autoExt=!1,T.into.CSV(e,s,r,n,a)},T.into.CSV=function(e,t,r,n,a){0===n.length&&r.length>0&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s={headers:!0};s.separator=";",s.quote='"',s.utf8Bom=!0,t&&!t.headers&&void 0!==t.headers&&(s.utf8Bom=!1),T.utils.extend(s,t);var i=r.length,o=s.utf8Bom?"\ufeff":"";return s.headers&&(o+=s.quote+n.map(function(e){return e.columnid.trim()}).join(s.quote+s.separator+s.quote)+s.quote+"\r\n"),r.forEach(function(e){o+=n.map(function(t){var r=e[t.columnid];return""!==s.quote&&(r=(r+"").replace(new RegExp("\\"+s.quote,"g"),s.quote+s.quote)),+r!=r&&(r=s.quote+r+s.quote),r}).join(s.separator)+"\r\n"}),e=T.utils.autoExtFilename(e,"csv",t),i=T.utils.saveFile(e,o,null,{disableAutoBom:!0}),a&&(i=a(i)),i},T.into.XLS=function(e,t,r,n,a){"object"==typeof e&&(t=e,e=void 0);var s={};t&&t.sheets&&(s=t.sheets);var i={headers:!0};void 0!==s.Sheet1?i=s[0]:void 0!==t&&(i=t),void 0===i.sheetid&&(i.sheetid="Sheet1");var o=function(){var e=' \t\t \t\t\x3c!--[if gte mso 9]> ';if(e+=" "+i.sheetid+" \t\t ",e+=" ",e+="",e+="",void 0!==i.caption){var a=i.caption;"string"==typeof a&&(a={title:a}),e+="",e+=a.title,e+=" "}return void 0!==i.columns?n=i.columns:0==n.length&&r.length>0&&"object"==typeof r[0]&&(n=Array.isArray(r[0])?r[0].map(function(e,t){return{columnid:t}}):Object.keys(r[0]).map(function(e){return{columnid:e}})),n.forEach(function(e,t){void 0!==i.column&&q(e,i.column),void 0===e.width&&(i.column&&"undefined"!=i.column.width?e.width=i.column.width:e.width="120px"),"number"==typeof e.width&&(e.width=e.width+"px"),void 0===e.columnid&&(e.columnid=t),void 0===e.title&&(e.title=""+e.columnid.trim()),i.headers&&Array.isArray(i.headers)&&(e.title=i.headers[t])}),e+="",n.forEach(function(t){e+=' '}),e+=" ",i.headers&&(e+="",e+="",n.forEach(function(t,r){e+="",void 0!==t.title&&("function"==typeof t.title?e+=t.title(i,t,r):e+=t.title),e+=" "}),e+=" ",e+=" "),e+="",r&&r.length>0&&r.forEach(function(r,a){if(!(a>i.limit)){e+="",n.forEach(function(n,o){var u={};q(u,i.cell),q(u,s.cell),void 0!==i.column&&q(u,i.column.cell),q(u,n.cell),i.cells&&i.cells[a]&&i.cells[a][o]&&q(u,i.cells[a][o]);var c=r[n.columnid];"function"==typeof u.value&&(c=u.value(c,i,r,n,u,a,o));var l=u.typeid;"function"==typeof l&&(l=l(c,i,r,n,u,a,o)),void 0===l&&("number"==typeof c?l="number":"string"==typeof c?l="string":"boolean"==typeof c?l="boolean":"object"==typeof c&&c instanceof Date&&(l="date"));var h="";"money"==l?h='mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;':"number"==l?h=" ":"date"==l?h='mso-number-format:"Short Date";':t.types&&t.types[l]&&t.types[l].typestyle&&(h=t.types[l].typestyle),h=h||'mso-number-format:"\\@";',e+="";var d=u.format;if(void 0===c)e+="";else if(void 0!==d)if("function"==typeof d)e+=d(c);else{if("string"!=typeof d)throw new Error("Unknown format type. Should be function or string");e+=c}else e+="number"==l||"date"==l?c.toString():"money"==l?(+c).toFixed(2):c;e+=" "}),e+=" "}}),e+=" ",e+="
",e+="",e+=""}();e=T.utils.autoExtFilename(e,"xls",t);var u=T.utils.saveFile(e,o);return a&&(u=a(u)),u},T.into.XLSXML=function(e,t,r,n,a){t=t||{},"object"==typeof e&&(t=e,e=void 0);var s,i,o={};t&&t.sheets?(o=t.sheets,s=r,i=n):(o.Sheet1=t,s=[r],i=[n]),e=T.utils.autoExtFilename(e,"xls",t);var u=T.utils.saveFile(e,function(){function e(e){var t="";for(var n in e){t+="<"+n;for(var s in e[n])t+=" ","x:"==s.substr(0,2)?t+=s:t+="ss:",t+=s+'="'+e[n][s]+'"';t+="/>"}var i=x(t);return a[i]||(a[i]={styleid:u},r+='",u++),"s"+a[i].styleid}var r="",n=" ",a={},u=62,c=0;for(var l in o){var h=o[l],d=void 0!==h.dataidx?h.dataidx:c++,f=function(e){try{return Object.values(e)}catch(t){return Object.keys(e).map(function(t){return e[t]})}}(s[d]),p=void 0;void 0!==h.columns?p=h.columns:(void 0===(p=i[d])||0==p.length&&f.length>0)&&"object"==typeof f[0]&&(p=Array.isArray(f[0])?f[0].map(function(e,t){return{columnid:t}}):Object.keys(f[0]).map(function(e){return{columnid:e}})),p.forEach(function(e,t){void 0!==h.column&&q(e,h.column),void 0===e.width&&(h.column&&void 0!==h.column.width?e.width=h.column.width:e.width=120),"number"==typeof e.width&&(e.width=e.width),void 0===e.columnid&&(e.columnid=t),void 0===e.title&&(e.title=""+e.columnid.trim()),h.headers&&Array.isArray(h.headers)&&(e.title=h.headers[t])}),n+=' \t \t\t\t',p.forEach(function(e,t){n+=' '}),h.headers&&(n+='',p.forEach(function(t,r){if(n+="',void 0!==t.title&&("function"==typeof t.title?n+=t.title(h,t,r):n+=t.title),n+=" | "}),n+="
"),f&&f.length>0&&f.forEach(function(r,a){if(!(a>h.limit)){var s={};if(q(s,h.row),h.rows&&h.rows[a]&&q(s,h.rows[a]),n+="",p.forEach(function(i,o){var u={};q(u,h.cell),q(u,s.cell),void 0!==h.column&&q(u,h.column.cell),q(u,i.cell),h.cells&&h.cells[a]&&h.cells[a][o]&&q(u,h.cells[a][o]);var c=r[i.columnid];"function"==typeof u.value&&(c=u.value(c,h,r,i,u,a,o));var l=u.typeid;"function"==typeof l&&(l=l(c,h,r,i,u,a,o)),void 0===l&&("number"==typeof c?l="number":"string"==typeof c?l="string":"boolean"==typeof c?l="boolean":"object"==typeof c&&c instanceof Date&&(l="date"));var d="String";"number"==l?d="Number":"date"==l&&(d="Date");var f="";"money"==l?f='mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;':"number"==l?f=" ":"date"==l?f='mso-number-format:"Short Date";':t.types&&t.types[l]&&t.types[l].typestyle&&(f=t.types[l].typestyle),f=f||'mso-number-format:"\\@";',n+="",n+='';var b=u.format;if(void 0===c)n+="";else if(void 0!==b)if("function"==typeof b)n+=b(c);else{if("string"!=typeof b)throw new Error("Unknown format type. Should be function or string");n+=c}else n+="number"==l||"date"==l?c.toString():"money"==l?(+c).toFixed(2):c;n+=" | "}),n+="
"}}),n+="
"}return n+="",' \t\t \t\t \t\t \t\t \t\t \t\t \t\t \t\t 0 \t\t \t\t \t\t '+r+n}());return a&&(u=a(u)),u},T.into.XLSX=function(e,t,r,n,s){function i(){"object"==typeof t&&Array.isArray(t)?r&&r.length>0&&r.forEach(function(e,r){o(t[r],e,void 0,r+1)}):o(t,r,n,1),u(s)}function o(e,t,r,n){var a={sheetid:"Sheet "+n,headers:!0};T.utils.extend(a,e);var s=Object.keys(t).length;(!r||0==r.length)&&s>0&&(r=Object.keys(t[0]).map(function(e){return{columnid:e}}));var i={};h.SheetNames.indexOf(a.sheetid)>-1?i=h.Sheets[a.sheetid]:(h.SheetNames.push(a.sheetid),h.Sheets[a.sheetid]={},i=h.Sheets[a.sheetid]);var o="A1";a.range&&(o=a.range);var u=T.utils.xlscn(o.match(/[A-Z]+/)[0]),c=+o.match(/[0-9]+/)[0]-1;if(h.Sheets[a.sheetid]["!ref"])var l=h.Sheets[a.sheetid]["!ref"],d=T.utils.xlscn(l.match(/[A-Z]+/)[0]),f=+l.match(/[0-9]+/)[0]-1;else var d=1,f=1;var p=Math.max(u+r.length,d),b=Math.max(c+s+2,f),E=c+1;h.Sheets[a.sheetid]["!ref"]="A1:"+T.utils.xlsnc(p)+b,a.headers&&(r.forEach(function(e,t){i[T.utils.xlsnc(u+t)+""+E]={v:e.columnid.trim()}}),E++);for(var g=0;g=b)return f;if(c)return c=!1,d;var t=E;if(e.charCodeAt(t)===h){for(var r=t;r++0){var s=this.exprs.map(function(e){var r=new Function("params,alasql,p","var y;return "+e.toJS("({})","",null)).bind(n),a=r(t,T);return oe(a)});console.log.apply(console,s)}else if(this.select){var i=this.select.execute(e,t);console.log(oe(i))}else console.log();return r&&(a=r(a)),a},X.Source=function(e){return X.extend(this,e)},X.Source.prototype.toString=function(){var e="SOURCE";return this.url&&(e+=" '"+this.url+" '"),e},X.Source.prototype.execute=function(e,t,r){var n;return I(this.url,!!r,function(e){return n=T(e),r&&(n=r(n)),n},function(e){throw e}),n},X.Require=function(e){return X.extend(this,e)},X.Require.prototype.toString=function(){var e="REQUIRE";return this.paths&&this.paths.length>0&&(e+=this.paths.map(function(e){return e.toString()}).join(",")),this.plugins&&this.plugins.length>0&&(e+=this.plugins.map(function(e){return e.toUpperCase()}).join(",")),e},X.Require.prototype.execute=function(e,t,r){var n=this,a=0,s="";return this.paths&&this.paths.length>0?this.paths.forEach(function(e){I(e.value,!!r,function(e){a++,s+=e,a0?this.plugins.forEach(function(e){T.plugins[e]||I(T.path+"/alasql-"+e.toLowerCase()+".js",!!r,function(i){a++,s+=i,aa?1:n===a?0:-1}}var r="",n="";return e.forEach(function(e){var t="";if(e.expression instanceof X.NumValue&&(e.expression=self.columns[e.expression.value-1]),e.expression instanceof X.Column){var a=e.expression.columnid;T.options.valueof&&(t=".valueOf()"),e.nocase&&(t+=".toUpperCase()"),"_"===a?(r+="if(a"+t+("ASC"===e.direction?">":"<")+"b"+t+")return 1;",r+="if(a"+t+"==b"+t+"){"):(r+="if((a['"+a+"']||'')"+t+("ASC"===e.direction?">":"<")+"(b['"+a+"']||'')"+t+")return 1;",r+="if((a['"+a+"']||'')"+t+"==(b['"+a+"']||'')"+t+"){")}else t=".valueOf()",e.nocase&&(t+=".toUpperCase()"),r+="if(("+e.toJS("a","")+"||'')"+t+("ASC"===e.direction?">(":"<(")+e.toJS("b","")+"||'')"+t+")return 1;",r+="if(("+e.toJS("a","")+"||'')"+t+"==("+e.toJS("b","")+"||'')"+t+"){";n+="}"}),r+="return 0;",r+=n+"return -1",new Function("a,b",r)}};T.srch.ORDERBY=function(e,t){return{status:1,values:e.sort(Q(t))}};var z=function(e){for(var t=0,r=e.sources.length;t0&&"ix"==n.optimization&&n.onleftfn&&n.onrightfn){if(n.databaseid&&T.databases[n.databaseid].tables[n.tableid]){T.databases[n.databaseid].tables[n.tableid].indices||(e.database.tables[n.tableid].indices={});var a=T.databases[n.databaseid].tables[n.tableid].indices[x(n.onrightfns+"`"+n.srcwherefns)];!T.databases[n.databaseid].tables[n.tableid].dirty&&a&&(n.ix=a)}if(!n.ix){n.ix={};for(var s,i={},o=0,u=n.data.length;(s=n.data[o])||n.getfn&&(s=n.getfn(o))||o0&&(e+=" GROUP BY "+this.group.map(function(e){return e.toString()}).join(", ")),this.having&&(e+=" HAVING "+this.having.toString()),this.order&&this.order.length>0&&(e+=" ORDER BY "+this.order.map(function(e){return e.toString()}).join(", ")),this.limit&&(e+=" LIMIT "+this.limit.value),this.offset&&(e+=" OFFSET "+this.offset.value),this.union&&(e+=" UNION "+(this.corresponding?"CORRESPONDING ":"")+this.union.toString()),this.unionall&&(e+=" UNION ALL "+(this.corresponding?"CORRESPONDING ":"")+this.unionall.toString()),this.except&&(e+=" EXCEPT "+(this.corresponding?"CORRESPONDING ":"")+this.except.toString()),this.intersect&&(e+=" INTERSECT "+(this.corresponding?"CORRESPONDING ":"")+this.intersect.toString()),e},X.Select.prototype.toJS=function(e){return"alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+"))[0]"},X.Select.prototype.compile=function(e,t){var r=T.databases[e],n=new W;if(n.removeKeys=[],n.aggrKeys=[],n.explain=this.explain,n.explaination=[],n.explid=1,n.modifier=this.modifier,n.database=r,this.compileWhereExists(n),this.compileQueries(n),n.defcols=this.compileDefCols(n,e),n.fromfn=this.compileFrom(n),this.joins&&this.compileJoins(n),n.rownums=[],this.compileSelectGroup0(n),this.group||n.selectGroup.length>0?n.selectgfns=this.compileSelectGroup1(n):n.selectfns=this.compileSelect1(n,t),this.compileRemoveColumns(n),this.where&&this.compileWhereJoins(n),n.wherefn=this.compileWhere(n),(this.group||n.selectGroup.length>0)&&(n.groupfn=this.compileGroup(n)),this.having&&(n.havingfn=this.compileHaving(n)),this.order&&(n.orderfn=this.compileOrder(n)),this.group||n.selectGroup.length>0?n.selectgfn=this.compileSelectGroup2(n):n.selectfn=this.compileSelect2(n),n.distinct=this.distinct,this.pivot&&(n.pivotfn=this.compilePivot(n)),this.unpivot&&(n.pivotfn=this.compileUnpivot(n)),this.top?n.limit=this.top.value:this.limit&&(n.limit=this.limit.value,this.offset&&(n.offset=this.offset.value)),n.percent=this.percent,n.corresponding=this.corresponding,this.union?(n.unionfn=this.union.compile(e),this.union.order?n.orderfn=this.union.compileOrder(n):n.orderfn=null):this.unionall?(n.unionallfn=this.unionall.compile(e),this.unionall.order?n.orderfn=this.unionall.compileOrder(n):n.orderfn=null):this.except?(n.exceptfn=this.except.compile(e),this.except.order?n.orderfn=this.except.compileOrder(n):n.orderfn=null):this.intersect&&(n.intersectfn=this.intersect.compile(e),this.intersect.order?n.intersectfn=this.intersect.compileOrder(n):n.orderfn=null),this.into){if(this.into instanceof X.Table)T.options.autocommit&&T.databases[this.into.databaseid||e].engineid?n.intoallfns='return alasql.engines["'+T.databases[this.into.databaseid||e].engineid+'"].intoTable("'+(this.into.databaseid||e)+'","'+this.into.tableid+'",this.data, columns, cb);':n.intofns="alasql.databases['"+(this.into.databaseid||e)+"'].tables['"+this.into.tableid+"'].data.push(r);";else if(this.into instanceof X.VarValue)n.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=this.data.length;if(cb)res=cb(res);return res;';else if(this.into instanceof X.FuncValue){var a="return alasql.into['"+this.into.funcid.toUpperCase()+"'](";this.into.args&&this.into.args.length>0?(a+=this.into.args[0].toJS()+",",this.into.args.length>1?a+=this.into.args[1].toJS()+",":a+="undefined,"):a+="undefined, undefined,",n.intoallfns=a+"this.data,columns,cb)"}else this.into instanceof X.ParamValue&&(n.intofns="params['"+this.into.param+"'].push(r)");n.intofns?n.intofn=new Function("r,i,params,alasql","var y;"+n.intofns):n.intoallfns&&(n.intoallfn=new Function("columns,cb,params,alasql","var y;"+n.intoallfns))}var s=function(e,t,r){return n.params=e,i(n,r,function(e,r){if(r)return t(r,null);if(n.rownums.length>0)for(var a=0,s=e.length;a0?(t.args[0]?n+=t.args[0].toJS("query.oldscope")+",":n+="null,",t.args[1]?n+=t.args[1].toJS("query.oldscope")+",":n+="null,"):n+="null,null,",n+="cb,idx,query",n+=");/*if(cb)res=cb(res,idx,query);*/return res",s.datafn=new Function("query, params, cb, idx, alasql",n);else{if(!(t instanceof X.FromData))throw new Error("Wrong table at FROM");s.datafn=function(e,r,n,a,s){var i=t.data;return n&&(i=n(i,a,e)),i}}e.sources.push(s)}),e.defaultTableid=e.sources[0].alias)},T.prepareFromData=function(e,t){var r,n,a=e;if("string"==typeof e){if(a=e.split(/\r?\n/),t)for(r=0,n=a.length;r0?(u[0]?o+=u[0].toJS("query.oldscope")+",":o+="null,",u[1]?o+=u[1].toJS("query.oldscope")+",":o+="null,"):o+="null,null,",o+="cb,idx,query",o+=");/*if(cb)res=cb(res,idx,query);*/return res",s.datafn=new Function("query, params, cb, idx, alasql",o),e.aliases[s.alias]={type:"funcvalue"}}var c=s.alias;if(t.natural){if(t.using||t.on)throw new Error("NATURAL JOIN cannot have USING or ON clauses");if(e.sources.length>0){var l=e.sources[e.sources.length-1],h=T.databases[l.databaseid].tables[l.tableid],d=T.databases[s.databaseid].tables[s.tableid];if(!h||!d)throw new Error("In this version of Alasql NATURAL JOIN works for tables with predefined columns only");var f=h.columns.map(function(e){return e.columnid}),p=d.columns.map(function(e){return e.columnid});t.using=L(f,p).map(function(e){return{columnid:e}})}}if(t.using)l=e.sources[e.sources.length-1],s.onleftfns=t.using.map(function(e){return"p['"+(l.alias||l.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),s.onleftfn=new Function("p,params,alasql","var y;return "+s.onleftfns),s.onrightfns=t.using.map(function(e){return"p['"+(s.alias||s.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),s.onrightfn=new Function("p,params,alasql","var y;return "+s.onrightfns),s.optimization="ix";else if(t.on)if(t.on instanceof X.Op&&"="===t.on.op&&!t.on.allsome){s.optimization="ix";var b="",E="",g="",m=!1,v=t.on.left.toJS("p",e.defaultTableid,e.defcols),S=t.on.right.toJS("p",e.defaultTableid,e.defcols);v.indexOf("p['"+c+"']")>-1&&!(S.indexOf("p['"+c+"']")>-1)?(v.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?E=v:m=!0:!(v.indexOf("p['"+c+"']")>-1)&&S.indexOf("p['"+c+"']")>-1&&(S.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?b=v:m=!0,S.indexOf("p['"+c+"']")>-1&&!(v.indexOf("p['"+c+"']")>-1)?(S.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?E=S:m=!0:!(S.indexOf("p['"+c+"']")>-1)&&v.indexOf("p['"+c+"']")>-1&&(v.match(/p\['.*?'\]/g)||[]).every(function(e){return e==="p['"+c+"']"})?b=S:m=!0,m&&(E="",b="",g=t.on.toJS("p",e.defaultTableid,e.defcols),s.optimization="no"),s.onleftfns=b,s.onrightfns=E,s.onmiddlefns=g||"true",s.onleftfn=new Function("p,params,alasql","var y;return "+s.onleftfns),s.onrightfn=new Function("p,params,alasql","var y;return "+s.onrightfns),s.onmiddlefn=new Function("p,params,alasql","var y;return "+s.onmiddlefns)}else s.optimization="no",s.onmiddlefns=t.on.toJS("p",e.defaultTableid,e.defcols),s.onmiddlefn=new Function("p,params,alasql","var y;return "+t.on.toJS("p",e.defaultTableid,e.defcols));e.sources.push(s)})},X.Select.prototype.compileWhere=function(e){if(this.where){if("function"==typeof this.where)return this.where;var t=this.where.toJS("p",e.defaultTableid,e.defcols);return e.wherefns=t,new Function("p,params,alasql","var y;return "+t)}return function(){return!0}},X.Select.prototype.compileWhereJoins=function(e){},X.Select.prototype.compileGroup=function(e){if(e.sources.length>0)var t=e.sources[0].alias;else var t="";var r=e.defcols,n=[[]];this.group&&(n=p(this.group,e));var a=[];n.forEach(function(e){a=D(a,e)}),e.allgroups=a,e.ingroup=[];var s="";return n.forEach(function(n){s+="var g=this.xgroups[";var i=n.map(function(t){var r=t.split("\t")[0],n=t.split("\t")[1];return""===r?"1":(e.ingroup.push(r),n)});0===i.length&&(i=["''"]),s+=i.join('+"`"+'),s+="];if(!g) {this.groups.push((g=this.xgroups[",s+=i.join('+"`"+'),s+="] = {",s+=n.map(function(e){var t=e.split("\t")[0],r=e.split("\t")[1];return""===t?"":"'"+t+"':"+r+","}).join("");var o=k(a,n);s+=o.map(function(e){return"'"+e.split("\t")[0]+"':null,"}).join("");var u="",c="";void 0!==e.groupStar&&(c+="for(var f in p['"+e.groupStar+"']) {g[f]=p['"+e.groupStar+"'][f];};"),s+=e.selectGroup.map(function(n){var a=n.expression.toJS("p",t,r),s=n.nick;return n instanceof X.AggrValue?(n.distinct&&(u+=",g['$$_VALUES_"+s+"']={},g['$$_VALUES_"+s+"']["+a+"]=true"),"SUM"===n.aggregatorid?"'"+s+"':("+a+")||0,":"MIN"===n.aggregatorid||"MAX"===n.aggregatorid||"FIRST"===n.aggregatorid||"LAST"===n.aggregatorid?"'"+s+"':"+a+",":"ARRAY"===n.aggregatorid?"'"+s+"':["+a+"],":"COUNT"===n.aggregatorid?"*"===n.expression.columnid?"'"+s+"':1,":"'"+s+"':(typeof "+a+' != "undefined")?1:0,':"AVG"===n.aggregatorid?(e.removeKeys.push("_SUM_"+s),e.removeKeys.push("_COUNT_"+s),"'"+s+"':"+a+",'_SUM_"+s+"':("+a+")||0,'_COUNT_"+s+"':(typeof "+a+' != "undefined")?1:0,'):"AGGR"===n.aggregatorid?(u+=",g['"+s+"']="+n.expression.toJS("g",-1),""):"REDUCE"===n.aggregatorid?(e.aggrKeys.push(n),"'"+s+"':alasql.aggr['"+n.funcid+"']("+a+",undefined,1),"):""):""}).join(""),s+="}"+u+",g));"+c+"} else {",s+=e.selectGroup.map(function(e){var n=e.nick,a=e.expression.toJS("p",t,r);if(e instanceof X.AggrValue){var s="",i="";if(e.distinct)var s="if(typeof "+a+'!="undefined" && (!g[\'$$_VALUES_'+n+"']["+a+"])) \t\t\t\t \t\t {",i="g['$$_VALUES_"+n+"']["+a+"]=true;}";return"SUM"===e.aggregatorid?s+"g['"+n+"']+=("+a+"||0);"+i:"COUNT"===e.aggregatorid?"*"===e.expression.columnid?s+"g['"+n+"']++;"+i:s+"if(typeof "+a+'!="undefined") g[\''+n+"']++;"+i:"ARRAY"===e.aggregatorid?s+"g['"+n+"'].push("+a+");"+i:"MIN"===e.aggregatorid?s+"g['"+n+"']=Math.min(g['"+n+"'],"+a+");"+i:"MAX"===e.aggregatorid?s+"g['"+n+"']=Math.max(g['"+n+"'],"+a+");"+i:"FIRST"===e.aggregatorid?"":"LAST"===e.aggregatorid?s+"g['"+n+"']="+a+";"+i:"AVG"===e.aggregatorid?s+"g['_SUM_"+n+"']+=(y="+a+")||0;g['_COUNT_"+n+"']+=(typeof y!=\"undefined\")?1:0;g['"+n+"']=g['_SUM_"+n+"']/g['_COUNT_"+n+"'];"+i:"AGGR"===e.aggregatorid?s+"g['"+n+"']="+e.expression.toJS("g",-1)+";"+i:"REDUCE"===e.aggregatorid?s+"g['"+n+"']=alasql.aggr."+e.funcid+"("+a+",g['"+n+"'],2);"+i:""}return""}).join(""),s+="}"}),new Function("p,params,alasql","var y;"+s)},X.Select.prototype.compileSelect1=function(t,r){var n=this;t.columns=[],t.xcolumns={},t.selectColumns={},t.dirtyColumns=!1;var a="var r={",s="",i=[];return this.columns.forEach(function(a){if(a instanceof X.Column)if("*"===a.columnid)if(a.func)s+="r=params['"+a.param+"'](p['"+t.sources[0].alias+"'],p,params,alasql);";else if(a.tableid){var o=f(t,[a.tableid],!1);o.s&&(i=i.concat(o.s)),s+=o.sp}else{var o=f(t,Object.keys(t.aliases),!0);o.s&&(i=i.concat(o.s)),s+=o.sp}else{var u=a.tableid,c=a.databaseid||t.sources[0].databaseid||t.database.databaseid;if(u||(u=t.defcols[a.columnid]),u||(u=t.defaultTableid),"_"!==a.columnid){var l=r&&r.length>1&&Array.isArray(r[0])&&r[0].length>=1&&r[0][0].hasOwnProperty("sheetid");l?s='var r={};var w=p["'+u+'"];var cols=['+n.columns.map(function(e){return"'"+e.columnid+"'"}).join(",")+"];var colas=["+n.columns.map(function(e){return"'"+(e.as||e.columnid)+"'"}).join(",")+"];for (var i=0;i0){var p=d[a.columnid];if(void 0===p)throw new Error("Column does not exist: "+a.columnid);var b={columnid:a.as||a.columnid,dbtypeid:p.dbtypeid,dbsize:p.dbsize,dbpecision:p.dbprecision,dbenum:p.dbenum};t.columns.push(b),t.xcolumns[b.columnid]=b}else{var b={columnid:a.as||a.columnid};t.columns.push(b),t.xcolumns[b.columnid]=b,t.dirtyColumns=!0}}else{var b={columnid:a.as||a.columnid};t.columns.push(b),t.xcolumns[b.columnid]=b}}else if(a instanceof X.AggrValue){n.group||(n.group=[""]),a.as||(a.as=C(a.toString())),"SUM"===a.aggregatorid||"MAX"===a.aggregatorid||"MIN"===a.aggregatorid||"FIRST"===a.aggregatorid||"LAST"===a.aggregatorid||"AVG"===a.aggregatorid||"ARRAY"===a.aggregatorid||"REDUCE"===a.aggregatorid?i.push("'"+C(a.as)+"':"+e(a.expression.toJS("p",t.defaultTableid,t.defcols))):"COUNT"===a.aggregatorid&&i.push("'"+C(a.as)+"':1");var b={columnid:a.as||a.columnid||a.toString()};t.columns.push(b),t.xcolumns[b.columnid]=b}else{i.push("'"+C(a.as||a.columnid||a.toString())+"':"+e(a.toJS("p",t.defaultTableid,t.defcols))),t.selectColumns[C(a.as||a.columnid||a.toString())]=!0;var b={columnid:a.as||a.columnid||a.toString()};t.columns.push(b),t.xcolumns[b.columnid]=b}}),a+=i.join(",")+"};"+s},X.Select.prototype.compileSelect2=function(e){var t=e.selectfns;return this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(r,n){var a="$$$"+n;r instanceof X.Column&&e.xcolumns[r.columnid]?t+="r['"+a+"']=r['"+r.columnid+"'];":t+="r['"+a+"']="+r.toJS("p",e.defaultTableid,e.defcols)+";",e.removeKeys.push(a)}),new Function("p,params,alasql","var y;"+t+"return r")},X.Select.prototype.compileSelectGroup0=function(e){var t=this;t.columns.forEach(function(r,n){if(r instanceof X.Column&&"*"===r.columnid)e.groupStar=r.tableid||"default";else{var a;a=C(r instanceof X.Column?r.columnid:r.toString(!0));for(var s=0;s-1&&(r+="r['"+(t.as||t.nick)+"']=g['"+t.nick+"'];")}),this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(t,n){var a="$$$"+n;t instanceof X.Column&&e.groupColumns[t.columnid]?r+="r['"+a+"']=r['"+t.columnid+"'];":r+="r['"+a+"']="+t.toJS("g","")+";",e.removeKeys.push(a)}),new Function("g,params,alasql","var y;"+r+"return r")},X.Select.prototype.compileRemoveColumns=function(e){void 0!==this.removecolumns&&(e.removeKeys=e.removeKeys.concat(this.removecolumns.filter(function(e){return void 0===e.like}).map(function(e){return e.columnid})),e.removeLikeKeys=this.removecolumns.filter(function(e){return void 0!==e.like}).map(function(e){return e.like.value}))},X.Select.prototype.compileHaving=function(e){if(this.having){var t=this.having.toJS("g",-1);return e.havingfns=t,new Function("g,params,alasql","var y;return "+t)}return function(){return!0}},X.Select.prototype.compileOrder=function(e){var t=this;if(t.orderColumns=[],this.order){if(this.order&&1==this.order.length&&this.order[0].expression&&"function"==typeof this.order[0].expression){var r=this.order[0].expression;return function(e,t){var n=r(e),a=r(t);return n>a?1:n==a?0:-1}}var n="",a="";return this.order.forEach(function(r,s){if(r.expression instanceof X.NumValue)var i=t.columns[r.expression.value-1];else var i=r.expression;t.orderColumns.push(i);var o="$$$"+s,u="";if(r.expression instanceof X.Column){var c=r.expression.columnid;if(e.xcolumns[c]){var l=e.xcolumns[c].dbtypeid;"DATE"!=l&&"DATETIME"!=l&&"DATETIME2"!=l||(u=".valueOf()")}else T.options.valueof&&(u=".valueOf()")}r.nocase&&(u+=".toUpperCase()"),n+="if((a['"+o+"']||'')"+u+("ASC"==r.direction?">":"<")+"(b['"+o+"']||'')"+u+")return 1;",n+="if((a['"+o+"']||'')"+u+"==(b['"+o+"']||'')"+u+"){",a+="}"}),n+="return 0;",n+=a+"return -1",e.orderfns=n,new Function("a,b","var y;"+n)}},X.Select.prototype.compilePivot=function(e){var t=this,r=t.pivot.columnid,n=t.pivot.expr.expression.columnid,a=t.pivot.expr.aggregatorid,s=t.pivot.inlist;return s&&(s=s.map(function(e){return e.expr.columnid})),function(){var e=this,t=e.columns.filter(function(e){return e.columnid!=r&&e.columnid!=n}).map(function(e){return e.columnid}),i=[],o={},u={},c={},l=[];if(e.data.forEach(function(e){if(!s||s.indexOf(e[r])>-1){var h=t.map(function(t){return e[t]}).join("`"),d=u[h];if(d||(d={},u[h]=d,l.push(d),t.forEach(function(t){d[t]=e[t]})),c[h]||(c[h]={}),c[h][e[r]]?c[h][e[r]]++:c[h][e[r]]=1,o[e[r]]||(o[e[r]]=!0,i.push(e[r])),"SUM"==a||"AVG"==a)void 0===d[e[r]]&&(d[e[r]]=0),d[e[r]]+=e[n];else if("COUNT"==a)void 0===d[e[r]]&&(d[e[r]]=0),d[e[r]]++;else if("MIN"==a)void 0===d[e[r]]&&(d[e[r]]=1/0),e[n]d[e[r]]&&(d[e[r]]=e[n]);else if("FIRST"==a)void 0===d[e[r]]&&(d[e[r]]=e[n]);else if("LAST"==a)d[e[r]]=e[n];else{if(!T.aggr[a])throw new Error("Wrong aggregator in PIVOT clause");T.aggr[a](d[e[r]],e[n])}}}),"AVG"==a)for(var h in u){var d=u[h];for(var f in d)-1==t.indexOf(f)&&f!=n&&(d[f]=d[f]/c[h][f])}e.data=l,s&&(i=s);var p=e.columns.filter(function(e){return e.columnid==n})[0];e.columns=e.columns.filter(function(e){return!(e.columnid==r||e.columnid==n)}),i.forEach(function(t){var r=_(p);r.columnid=t,e.columns.push(r)})}},X.Select.prototype.compileUnpivot=function(e){var t=this,r=t.unpivot.tocolumnid,n=t.unpivot.forcolumnid,a=t.unpivot.inlist.map(function(e){return e.columnid});return function(){var t=[],s=e.columns.map(function(e){return e.columnid}).filter(function(e){return-1==a.indexOf(e)&&e!=n&&e!=r});e.data.forEach(function(e){a.forEach(function(a){var i={};s.forEach(function(t){i[t]=e[t]}),i[n]=a,i[r]=e[a],t.push(i)})}),e.data=t}};var Z=function(e,t){for(var r=[],n=0,a=e.length,s=0;s"===this.op||"!"===this.op){var e=this.left.toString()+this.op;return"string"!=typeof this.right&&"number"!=typeof this.right&&(e+="("),e+=this.right.toString(),"string"!=typeof this.right&&"number"!=typeof this.right&&(e+=")"),e}return this.left.toString()+" "+this.op+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()},X.Op.prototype.findAggregator=function(e){this.left&&this.left.findAggregator&&this.left.findAggregator(e),this.right&&this.right.findAggregator&&!this.allsome&&this.right.findAggregator(e)},X.Op.prototype.toType=function(e){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(["||"].indexOf(this.op)>-1)return"string";if("+"===this.op){if("string"===this.left.toType(e)||"string"===this.right.toType(e))return"string";if("number"===this.left.toType(e)||"number"===this.right.toType(e))return"number"}return["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE","REGEXP","GLOB"].indexOf(this.op)>-1?"boolean":"BETWEEN"===this.op||"NOT BETWEEN"===this.op||"IS NULL"===this.op||"IS NOT NULL"===this.op?"boolean":this.allsome?"boolean":this.op?"unknown":this.left.toType()},X.Op.prototype.toJS=function(e,t,r){var n,a=[],s=this.op,i=this,o=function(n){return n.toJS&&(n=n.toJS(e,t,r)),"y["+(a.push(n)-1)+"]"},u=function(){return o(i.left)},c=function(){return o(i.right)};if("="===this.op?s="===":"<>"===this.op?s="!=":"OR"===this.op&&(s="||"),"->"===this.op){var l="("+u()+"||{})";if("string"==typeof this.right)n=l+'["'+this.right+'"]';else if("number"==typeof this.right)n=l+"["+this.right+"]";else if(this.right instanceof X.FuncValue){var h=[];if(this.right.args&&0!==this.right.args.length)var h=this.right.args.map(o);n=l+"['"+this.right.funcid+"']("+h.join(",")+")"}else n=l+"["+c()+"]"}if("!"===this.op&&"string"==typeof this.right&&(n="alasql.databases[alasql.useid].objects["+u()+']["'+this.right+'"]'),"IS"===this.op&&(n="(("+u()+"==null) === ("+c()+"==null))"),"=="===this.op&&(n="alasql.utils.deepEqual("+u()+","+c()+")"),"==="!==this.op&&"!==="!==this.op||(n="("+("!==="===this.op?"!":"")+"(("+u()+").valueOf()===("+c()+").valueOf()))"),"!=="===this.op&&(n="(!alasql.utils.deepEqual("+u()+","+c()+"))"),"||"===this.op&&(n="(''+("+u()+"||'')+("+c()+'||""))'),"LIKE"===this.op||"NOT LIKE"===this.op){var n="("+("NOT LIKE"===this.op?"!":"")+"alasql.utils.like("+c()+","+u();this.escape&&(n+=","+o(this.escape)),n+="))"}if("REGEXP"===this.op&&(n="alasql.stdfn.REGEXP_LIKE("+u()+","+c()+")"),"GLOB"===this.op&&(n="alasql.utils.glob("+u()+","+c()+")"),"BETWEEN"===this.op||"NOT BETWEEN"===this.op){var d=u();n="("+("NOT BETWEEN"===this.op?"!":"")+"(("+o(this.right1)+"<="+d+") && ("+d+"<="+o(this.right2)+")))"}if("IN"===this.op&&(this.right instanceof X.Select?(n="(",n+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,"+e+"))",n+=".indexOf(",n+=u()+")>-1)"):n=Array.isArray(this.right)?"(["+this.right.map(o).join(",")+"].indexOf("+u()+")>-1)":"("+c()+".indexOf("+u()+")>-1)"),"NOT IN"===this.op&&(this.right instanceof X.Select?(n="(",n+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,p))",n+=".indexOf(",n+=u()+")<0)"):Array.isArray(this.right)?(n="(["+this.right.map(o).join(",")+"].indexOf(",n+=u()+")<0)"):(n="("+c()+".indexOf(",n+=u()+")==-1)")),"ALL"===this.allsome){var n;if(this.right instanceof X.Select)n="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",n+=".every(function(b){return (",n+=u()+")"+s+"b})";else{if(!Array.isArray(this.right))throw new Error("NOT IN operator without SELECT");n=""+(1==this.right.length?o(this.right[0]):"["+this.right.map(o).join(",")+"]"),n+=".every(function(b){return (",n+=u()+")"+s+"b})"}}if("SOME"===this.allsome||"ANY"===this.allsome){var n;if(this.right instanceof X.Select)n="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",n+=".some(function(b){return (",n+=u()+")"+s+"b})";else{if(!Array.isArray(this.right))throw new Error("SOME/ANY operator without SELECT");n=""+(1==this.right.length?o(this.right[0]):"["+this.right.map(o).join(",")+"]"),n+=".some(function(b){return (",n+=u()+")"+s+"b})"}}if("AND"===this.op){if(this.left.reduced){if(this.right.reduced)return"true";n=c()}else this.right.reduced&&(n=u());s="&&"}var f=n||"("+u()+s+c()+")",p="y=[("+a.join("), (")+")]";return"&&"===s||"||"===s||"IS"===s||"IS NULL"===s||"IS NOT NULL"===s?"("+p+", "+f+")":"("+p+", y.some(function(e){return e == null}) ? void 0 : "+f+")"},X.VarValue=function(e){return X.extend(this,e)},X.VarValue.prototype.toString=function(){return"@"+this.variable},X.VarValue.prototype.toType=function(){return"unknown"},X.VarValue.prototype.toJS=function(){return"alasql.vars['"+this.variable+"']"},X.NumValue=function(e){return X.extend(this,e)},X.NumValue.prototype.toString=function(){return this.value.toString()},X.NumValue.prototype.toType=function(){return"number"},X.NumValue.prototype.toJS=function(){return""+this.value},X.StringValue=function(e){return X.extend(this,e)},X.StringValue.prototype.toString=function(){return"'"+this.value.toString()+"'"},X.StringValue.prototype.toType=function(){return"string"},X.StringValue.prototype.toJS=function(){return"'"+C(this.value)+"'"},X.DomainValueValue=function(e){return X.extend(this,e)},X.DomainValueValue.prototype.toString=function(){return"VALUE"},X.DomainValueValue.prototype.toType=function(){return"object"},X.DomainValueValue.prototype.toJS=function(e,t,r){return e},X.ArrayValue=function(e){return X.extend(this,e)},X.ArrayValue.prototype.toString=function(){return"ARRAY[]"},X.ArrayValue.prototype.toType=function(){return"object"},X.ArrayValue.prototype.toJS=function(e,t,r){return"[("+this.value.map(function(n){return n.toJS(e,t,r)}).join("), (")+")]"},X.LogicValue=function(e){return X.extend(this,e)},X.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"},X.LogicValue.prototype.toType=function(){return"boolean"},X.LogicValue.prototype.toJS=function(){return this.value?"true":"false"},X.NullValue=function(e){return X.extend(this,e)},X.NullValue.prototype.toString=function(){return"NULL"},X.NullValue.prototype.toJS=function(){return"undefined"},X.ParamValue=function(e){return X.extend(this,e)},X.ParamValue.prototype.toString=function(){return"$"+this.param},X.ParamValue.prototype.toJS=function(){return"string"==typeof this.param?"params['"+this.param+"']":"params["+this.param+"]"},X.UniOp=function(e){return X.extend(this,e)},X.UniOp.prototype.toString=function(){var e;return e=void 0,"~"===this.op&&(e=this.op+this.right.toString()),"-"===this.op&&(e=this.op+this.right.toString()),"+"===this.op&&(e=this.op+this.right.toString()),"#"===this.op&&(e=this.op+this.right.toString()),"NOT"===this.op&&(e=this.op+"("+this.right.toString()+")"),null===this.op&&(e="("+this.right.toString()+")"),e||(e="("+this.right.toString()+")"),e},X.UniOp.prototype.findAggregator=function(e){this.right.findAggregator&&this.right.findAggregator(e)},X.UniOp.prototype.toType=function(){return"-"===this.op?"number":"+"===this.op?"number":"NOT"===this.op?"boolean":void 0},X.UniOp.prototype.toJS=function(e,t,r){return"~"===this.op?"(~("+this.right.toJS(e,t,r)+"))":"-"===this.op?"(-("+this.right.toJS(e,t,r)+"))":"+"===this.op?"("+this.right.toJS(e,t,r)+")":"NOT"===this.op?"!("+this.right.toJS(e,t,r)+")":"#"===this.op?this.right instanceof X.Column?"(alasql.databases[alasql.useid].objects['"+this.right.columnid+"'])":"(alasql.databases[alasql.useid].objects["+this.right.toJS(e,t,r)+"])":null==this.op?"("+this.right.toJS(e,t,r)+")":void 0},X.Column=function(e){return X.extend(this,e)},X.Column.prototype.toString=function(e){var t;return t=this.columnid==+this.columnid?"["+this.columnid+"]":this.columnid,this.tableid&&(t=+this.columnid===this.columnid?this.tableid+t:this.tableid+"."+t,this.databaseid&&(t=this.databaseid+"."+t)),this.alias&&!e&&(t+=" AS "+this.alias),t},X.Column.prototype.toJS=function(e,t,r){var n="";if(this.tableid||""!==t||r)if("g"===e)n="g['"+this.nick+"']";else if(this.tableid)n="_"!==this.columnid?e+"['"+this.tableid+"']['"+this.columnid+"']":"g"===e?"g['_']":e+"['"+this.tableid+"']";else if(r){var a=r[this.columnid];if("-"===a)throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables');n=a?"_"!==this.columnid?e+"['"+a+"']['"+this.columnid+"']":e+"['"+a+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']"}else n=-1===t?e+"['"+this.columnid+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']";else n="_"!==this.columnid?e+"['"+this.columnid+"']":"g"===e?"g['_']":e;return n},X.AggrValue=function(e){return X.extend(this,e)},X.AggrValue.prototype.toString=function(e){var t="";return"REDUCE"===this.aggregatorid?t+=this.funcid+"(":t+=this.aggregatorid+"(",this.distinct&&(t+="DISTINCT "),this.expression&&(t+=this.expression.toString()),t+=")",this.over&&(t+=" "+this.over.toString()),this.alias&&!e&&(t+=" AS "+this.alias),t},X.AggrValue.prototype.findAggregator=function(e){var t=C(this.toString())+":"+e.selectGroup.length,r=!1;if(!r){if(!this.nick){this.nick=t;for(var r=!1,n=0;n-1?"number":["ARRAY"].indexOf(this.aggregatorid)>-1?"array":["FIRST","LAST"].indexOf(this.aggregatorid)>-1?this.expression.toType():void 0},X.AggrValue.prototype.toJS=function(){var e=this.nick;return void 0===e&&(e=this.toString()),"g['"+e+"']"},X.OrderExpression=function(e){return X.extend(this,e)},X.OrderExpression.prototype.toString=X.Expression.prototype.toString,X.GroupExpression=function(e){return X.extend(this,e)},X.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"},X.FromData=function(e){return X.extend(this,e)},X.FromData.prototype.toString=function(){return this.data?"DATA("+(1e16*Math.random()|0)+")":"?"},X.FromData.prototype.toJS=function(){},X.Select.prototype.exec=function(e,t){this.preparams&&(e=this.preparams.concat(e));var r=T.useid;db=T.databases[r];var n=this.toString(),a=x(n),s=this.compile(r);if(s){s.sql=n,s.dbversion=db.dbversion,db.sqlCacheSize>T.MAXSQLCACHESIZE&&db.resetSqlCache(),db.sqlCacheSize++,db.sqlCache[a]=s;return T.res=s(e,t)}},X.Select.prototype.Select=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return e.columns=[],args.forEach(function(t){if("string"==typeof t)e.columns.push(new X.Column({columnid:t}));else if("function"==typeof t){var r=0;e.preparams?r=e.preparams.length:e.preparams=[],e.preparams.push(t),e.columns.push(new X.Column({columnid:"*",func:t,param:r}))}}),e},X.Select.prototype.From=function(e){var t=this;if(t.from||(t.from=[]),Array.isArray(e)){var r=0;t.preparams?r=t.preparams.length:t.preparams=[],t.preparams.push(e),t.from.push(new X.ParamValue({param:r}))}else{if("string"!=typeof e)throw new Error("Unknown arguments in From() function");t.from.push(new X.Table({tableid:e}))}return t},X.Select.prototype.OrderBy=function(){var e=this;if(e.order=[],0==arguments.length)args=["_"];else if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return args.length>0&&args.forEach(function(t){var r=new X.Column({columnid:t});"function"==typeof t&&(r=t),e.order.push(new X.OrderExpression({expression:r,direction:"ASC"}))}),e},X.Select.prototype.Top=function(e){var t=this;return t.top=new X.NumValue({value:e}),t},X.Select.prototype.GroupBy=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");Array.isArray(arguments[0])?args=arguments[0]:args=[arguments[0]]}return e.group=[],args.forEach(function(t){var r=new X.Column({columnid:t});e.group.push(r)}),e},X.Select.prototype.Where=function(e){var t=this;return"function"==typeof e&&(t.where=e),t},X.FuncValue=function(e){return X.extend(this,e)},X.FuncValue.prototype.toString=function(e){var t="";return T.fn[this.funcid]?t+=this.funcid:T.aggr[this.funcid]?t+=this.funcid:(T.stdlib[this.funcid.toUpperCase()]||T.stdfn[this.funcid.toUpperCase()])&&(t+=this.funcid.toUpperCase()),t+="(",this.args&&this.args.length>0&&(t+=this.args.map(function(e){return e.toString()}).join(",")),t+=")",this.as&&!e&&(t+=" AS "+this.as.toString()),t},X.FuncValue.prototype.execute=function(e,t,r){var n=1;return T.precompile(this,e,t),new Function("params,alasql","var y;return "+this.toJS("","",null))(t,T),r&&(n=r(n)),n},X.FuncValue.prototype.findAggregator=function(e){this.args&&this.args.length>0&&this.args.forEach(function(t){t.findAggregator&&t.findAggregator(e)})},X.FuncValue.prototype.toJS=function(e,t,r){var n="",a=this.funcid;return!T.fn[a]&&T.stdlib[a.toUpperCase()]?this.args&&this.args.length>0?n+=T.stdlib[a.toUpperCase()].apply(this,this.args.map(function(r){return r.toJS(e,t)})):n+=T.stdlib[a.toUpperCase()]():!T.fn[a]&&T.stdfn[a.toUpperCase()]?(this.newid&&(n+="new "),n+="alasql.stdfn."+this.funcid.toUpperCase()+"(",this.args&&this.args.length>0&&(n+=this.args.map(function(n){return n.toJS(e,t,r)}).join(",")),n+=")"):(this.newid&&(n+="new "),n+="alasql.fn."+this.funcid+"(",this.args&&this.args.length>0&&(n+=this.args.map(function(n){return n.toJS(e,t,r)}).join(",")),n+=")"),n};var ne=T.stdlib={},ae=T.stdfn={};ne.ABS=function(e){return"Math.abs("+e+")"},ne.CLONEDEEP=function(e){return"alasql.utils.cloneDeep("+e+")"},ae.CONCAT=function(){return Array.prototype.slice.call(arguments).join("")},ne.EXP=function(e){return"Math.pow(Math.E,"+e+")"},ne.IIF=function(e,t,r){if(3==arguments.length)return"(("+e+")?("+t+"):("+r+"))";throw new Error("Number of arguments of IFF is not equals to 3")},ne.IFNULL=function(e,t){return"("+e+"||"+t+")"},ne.INSTR=function(e,t){return"(("+e+").indexOf("+t+")+1)"},ne.LEN=ne.LENGTH=function(e){return t(e,"y.length")},ne.LOWER=ne.LCASE=function(e){return t(e,"String(y).toLowerCase()")},ne.LTRIM=function(e){return t(e,'y.replace(/^[ ]+/,"")')},ne.RTRIM=function(e){return t(e,'y.replace(/[ ]+$/,"")')},ne.MAX=ne.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"},ne.MIN=ne.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"},ne.SUBSTRING=ne.SUBSTR=ne.MID=function(e,r,n){return 2==arguments.length?t(e,"y.substr("+r+"-1)"):3==arguments.length?t(e,"y.substr("+r+"-1,"+n+")"):void 0},ae.REGEXP_LIKE=function(e,t,r){return(e||"").search(RegExp(t,r))>-1},ne.ISNULL=ne.NULLIF=function(e,t){return"("+e+"=="+t+"?undefined:"+e+")"},ne.POWER=function(e,t){return"Math.pow("+e+","+t+")"},ne.RANDOM=function(e){return 0==arguments.length?"Math.random()":"(Math.random()*("+e+")|0)"},ne.ROUND=function(e,t){return 2==arguments.length?"Math.round(("+e+")*Math.pow(10,("+t+")))/Math.pow(10,("+t+"))":"Math.round("+e+")"},ne.CEIL=ne.CEILING=function(e){return"Math.ceil("+e+")"},ne.FLOOR=function(e){return"Math.floor("+e+")"},ne.ROWNUM=function(){return"1"},ne.ROW_NUMBER=function(){return"1"},ne.SQRT=function(e){return"Math.sqrt("+e+")"},ne.TRIM=function(e){return t(e,"y.trim()")},ne.UPPER=ne.UCASE=function(e){return t(e,"String(y).toUpperCase()")},ae.CONCAT_WS=function(){var e=Array.prototype.slice.call(arguments);return e.slice(1,e.length).join(e[0])},T.aggr.GROUP_CONCAT=function(e,t,r){return 1===r?""+e:2===r?t+=","+e:t},T.aggr.MEDIAN=function(e,t,r){if(2===r)return null!==e&&t.push(e),t;if(1===r)return null===e?[]:[e];if(!t.length)return t;var n=t.sort(),a=(n.length+1)/2;return Number.isInteger(a)?n[a-1]:(n[Math.floor(a-1)]+n[Math.ceil(a-1)])/2},T.aggr.QUART=function(e,t,r,n){if(2===r)return null!==e&&t.push(e),t;if(1===r)return null===e?[]:[e];if(!t.length)return t;n=n||1;var a=t.sort(),s=n*(a.length+1)/4;return Number.isInteger(s)?a[s-1]:a[Math.floor(s)]},T.aggr.QUART2=function(e,t,r){return T.aggr.QUART(e,t,r,2)},T.aggr.QUART3=function(e,t,r){return T.aggr.QUART(e,t,r,3)},T.aggr.VAR=function(e,t,r){if(1===r)return null===e?{arr:[],sum:0}:{arr:[e],sum:e};if(2===r)return null===e?t:(t.arr.push(e),t.sum+=e,t);for(var n=t.arr.length,a=t.sum/n,s=0,i=0;i>8&255]+se[e>>16&255]+se[e>>24&255]+"-"+se[255&t]+se[t>>8&255]+"-"+se[t>>16&15|64]+se[t>>24&255]+"-"+se[63&r|128]+se[r>>8&255]+"-"+se[r>>16&255]+se[r>>24&255]+se[255&n]+se[n>>8&255]+se[n>>16&255]+se[n>>24&255]},X.CaseValue=function(e){return X.extend(this,e)},X.CaseValue.prototype.toString=function(){var e="CASE ";return this.expression&&(e+=this.expression.toString()),this.whens&&(e+=this.whens.map(function(e){return" WHEN "+e.when.toString()+" THEN "+e.then.toString()}).join()),e+=" END"},X.CaseValue.prototype.findAggregator=function(e){this.expression&&this.expression.findAggregator&&this.expression.findAggregator(e),this.whens&&this.whens.length>0&&this.whens.forEach(function(t){t.when.findAggregator&&t.when.findAggregator(e),t.then.findAggregator&&t.then.findAggregator(e)}),this.elses&&this.elses.findAggregator&&this.elses.findAggregator(e)},X.CaseValue.prototype.toJS=function(e,t,r){var n="((function("+e+",params,alasql){var y,r;";return this.expression?(n+="v="+this.expression.toJS(e,t,r)+";",n+=(this.whens||[]).map(function(n){return" if(v=="+n.when.toJS(e,t,r)+") {r="+n.then.toJS(e,t,r)+"}"}).join(" else "),this.elses&&(n+=" else {r="+this.elses.toJS(e,t,r)+"}")):(n+=(this.whens||[]).map(function(n){return" if("+n.when.toJS(e,t,r)+") {r="+n.then.toJS(e,t,r)+"}"}).join(" else "),this.elses&&(n+=" else {r="+this.elses.toJS(e,t,r)+"}")),n+=";return r;}).bind(this))("+e+",params,alasql)"},X.Json=function(e){return X.extend(this,e)},X.Json.prototype.toString=function(){var e="";return e+=oe(this.value),e+=""};var oe=T.utils.JSONtoString=function(e){var t="";if("string"==typeof e)t='"'+e+'"';else if("number"==typeof e)t=e;else if("boolean"==typeof e)t=e;else{if("object"!=typeof e)throw new Error("2Can not show JSON object "+JSON.stringify(e));if(Array.isArray(e))t+="["+e.map(function(e){return oe(e)}).join(",")+"]";else if(!e.toJS||e instanceof X.Json){t="{";var r=[];for(var n in e){var a="";if("string"==typeof n)a+='"'+n+'"';else if("number"==typeof n)a+=n;else{if("boolean"!=typeof n)throw new Error("THis is not ES6... no expressions on left side yet");a+=n}a+=":"+oe(e[n]),r.push(a)}t+=r.join(",")+"}"}else{if(!e.toString)throw new Error("1Can not show JSON object "+JSON.stringify(e));t=e.toString()}}return t};X.Json.prototype.toJS=function(e,t,r){return b(this.value,e,t,r)},X.Convert=function(e){return X.extend(this,e)},X.Convert.prototype.toString=function(){var e="CONVERT(";return e+=this.dbtypeid,void 0!==this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+this.dbprecision),e+=")"),e+=","+this.expression.toString(),this.style&&(e+=","+this.style),e+=")"},X.Convert.prototype.toJS=function(e,t,r){return"alasql.stdfn.CONVERT("+this.expression.toJS(e,t,r)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",dbprecision:"+this.dbprecision+",style:"+this.style+"})"},T.stdfn.CONVERT=function(e,t){var r=e;if(t.style){var n;switch(n=/\d{8}/.test(r)?new Date(+r.substr(0,4),+r.substr(4,2)-1,+r.substr(6,2)):new Date(r),t.style){case 1:r=("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2)+"/"+("0"+n.getYear()).substr(-2);break;case 2:r=("0"+n.getYear()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getDate()).substr(-2);break;case 3:r=("0"+n.getDate()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getYear()).substr(-2);break;case 4:r=("0"+n.getDate()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getYear()).substr(-2);break;case 5:r=("0"+n.getDate()).substr(-2)+"-"+("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getYear()).substr(-2);break;case 6:r=("0"+n.getDate()).substr(-2)+" "+n.toString().substr(4,3).toLowerCase()+" "+("0"+n.getYear()).substr(-2);break;case 7:r=n.toString().substr(4,3)+" "+("0"+n.getDate()).substr(-2)+","+("0"+n.getYear()).substr(-2);break;case 8:case 108:r=("0"+n.getHours()).substr(-2)+":"+("0"+n.getMinutes()).substr(-2)+":"+("0"+n.getSeconds()).substr(-2);break;case 10:r=("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getDate()).substr(-2)+"-"+("0"+n.getYear()).substr(-2);break;case 11:r=("0"+n.getYear()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2);break;case 12:r=("0"+n.getYear()).substr(-2)+("0"+(n.getMonth()+1)).substr(-2)+("0"+n.getDate()).substr(-2);break;case 101:r=("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2)+"/"+n.getFullYear();break;case 102:r=n.getFullYear()+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+("0"+n.getDate()).substr(-2);break;case 103:r=("0"+n.getDate()).substr(-2)+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+n.getFullYear();break;case 104:r=("0"+n.getDate()).substr(-2)+"."+("0"+(n.getMonth()+1)).substr(-2)+"."+n.getFullYear();break;case 105:r=("0"+n.getDate()).substr(-2)+"-"+("0"+(n.getMonth()+1)).substr(-2)+"-"+n.getFullYear();break;case 106:r=("0"+n.getDate()).substr(-2)+" "+n.toString().substr(4,3).toLowerCase()+" "+n.getFullYear();break;case 107:r=n.toString().substr(4,3)+" "+("0"+n.getDate()).substr(-2)+","+n.getFullYear();break;case 110:r=("0"+(n.getMonth()+1)).substr(-2)+"-"+("0"+n.getDate()).substr(-2)+"-"+n.getFullYear();break;case 111:r=n.getFullYear()+"/"+("0"+(n.getMonth()+1)).substr(-2)+"/"+("0"+n.getDate()).substr(-2);break;case 112:r=n.getFullYear()+("0"+(n.getMonth()+1)).substr(-2)+("0"+n.getDate()).substr(-2);break;default:throw new Error("The CONVERT style "+t.style+" is not realized yet.")}}var a=t.dbtypeid.toUpperCase();if("Date"==t.dbtypeid)return new Date(r);if("DATE"==a){var s=new Date(r),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i}if("DATETIME"==a||"DATETIME2"==a){var s=new Date(r),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i+=" "+("0"+s.getHours()).substr(-2)+":"+("0"+s.getMinutes()).substr(-2)+":"+("0"+s.getSeconds()).substr(-2),i+="."+("00"+s.getMilliseconds()).substr(-3)}if(["MONEY"].indexOf(a)>-1){var o=+r;return(0|o)+100*o%100/100}if(["BOOLEAN"].indexOf(a)>-1)return!!r;if(["INT","INTEGER","SMALLINT","BIGINT","SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(t.dbtypeid.toUpperCase())>-1)return 0|r;if(["STRING","VARCHAR","NVARCHAR","CHARACTER VARIABLE"].indexOf(t.dbtypeid.toUpperCase())>-1)return t.dbsize?(""+r).substr(0,t.dbsize):""+r;if(["CHAR","CHARACTER","NCHAR"].indexOf(a)>-1)return(r+new Array(t.dbsize+1).join(" ")).substr(0,t.dbsize);if(["NUMBER","FLOAT","DECIMAL","NUMERIC"].indexOf(a)>-1){var o=+r;return o=void 0!==t.dbsize?parseFloat(o.toPrecision(t.dbsize)):o,o=void 0!==t.dbprecision?parseFloat(o.toFixed(t.dbprecision)):o}if(["JSON"].indexOf(a)>-1){if("object"==typeof r)return r;try{return JSON.parse(r)}catch(e){throw new Error("Cannot convert string to JSON")}}return r},X.ColumnDef=function(e){return X.extend(this,e)},X.ColumnDef.prototype.toString=function(){var e=this.columnid;return this.dbtypeid&&(e+=" "+this.dbtypeid),this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+this.dbprecision),e+=")"),this.primarykey&&(e+=" PRIMARY KEY"),this.notnull&&(e+=" NOT NULL"),e},X.CreateTable=function(e){return X.extend(this,e)},X.CreateTable.prototype.toString=function(){var e="CREATE";if(this.temporary&&(e+=" TEMPORARY"),this.view?e+=" VIEW":e+=" "+(this.class?"CLASS":"TABLE"),this.ifnotexists&&(e+=" IF NOT EXISTS"),e+=" "+this.table.toString(),this.viewcolumns&&(e+="("+this.viewcolumns.map(function(e){return e.toString()}).join(",")+")"),this.as)e+=" AS "+this.as;else{e+=" ("+this.columns.map(function(e){return e.toString()}).join(",")+")"}return this.view&&this.select&&(e+=" AS "+this.select.toString()),e},X.CreateTable.prototype.execute=function(e,t,r){var n=T.databases[this.table.databaseid||e],a=this.table.tableid;if(!a)throw new Error("Table name is not defined");var s=this.columns,i=this.constraints||[];if(this.ifnotexists&&n.tables[a])return r?r(0):0;if(n.tables[a])throw new Error("Can not create table '"+a+"', because it already exists in the database '"+n.databaseid+"'");var o=n.tables[a]=new T.Table;this.class&&(o.isclass=!0);var u=[],c=[];if(s&&s.forEach(function(t){var r=t.dbtypeid;T.fn[r]||(r=r.toUpperCase()),["SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(r)>-1&&(t.identity={value:1,step:1});var n={columnid:t.columnid,dbtypeid:r,dbsize:t.dbsize,dbprecision:t.dbprecision,notnull:t.notnull,identity:t.identity};if(t.identity&&(o.identities[t.columnid]={value:+t.identity.value,step:+t.identity.step}),t.check&&o.checks.push({id:t.check.constrantid,fn:new Function("r","var y;return "+t.check.expression.toJS("r",""))}),t.default&&u.push("'"+t.columnid+"':"+t.default.toJS("r","")),t.primarykey){var a=o.pk={};a.columns=[t.columnid],a.onrightfns="r['"+t.columnid+"']",a.onrightfn=new Function("r","var y;return "+a.onrightfns),a.hh=x(a.onrightfns),o.uniqs[a.hh]={}}if(t.unique){var s={};o.uk=o.uk||[],o.uk.push(s),s.columns=[t.columnid],s.onrightfns="r['"+t.columnid+"']",s.onrightfn=new Function("r","var y;return "+s.onrightfns),s.hh=x(s.onrightfns),o.uniqs[s.hh]={}}if(t.foreignkey){var i=t.foreignkey.table,l=T.databases[i.databaseid||e].tables[i.tableid];if(void 0===i.columnid){if(!(l.pk.columns&&l.pk.columns.length>0))throw new Error("FOREIGN KEY allowed only to tables with PRIMARY KEYs");i.columnid=l.pk.columns[0]}var h=function(e){var r={};if(void 0===e[t.columnid])return!0;r[i.columnid]=e[t.columnid];var n=l.pk.onrightfn(r);if(!l.uniqs[l.pk.hh][n])throw new Error('Foreign key "'+e[t.columnid]+'" is not found in table '+l.tableid);return!0};o.checks.push({fn:h})}t.onupdate&&c.push("r['"+t.columnid+"']="+t.onupdate.toJS("r","")),o.columns.push(n),o.xcolumns[n.columnid]=n}),o.defaultfns=u.join(","),o.onupdatefns=c.join(";"),i.forEach(function(t){var r;if("PRIMARY KEY"===t.type){if(o.pk)throw new Error("Primary key already exists");var n=o.pk={};n.columns=t.columns,n.onrightfns=n.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),n.onrightfn=new Function("r","var y;return "+n.onrightfns),n.hh=x(n.onrightfns),o.uniqs[n.hh]={}}else if("CHECK"===t.type)r=new Function("r","var y;return "+t.expression.toJS("r",""));else if("UNIQUE"===t.type){var a={};o.uk=o.uk||[],o.uk.push(a),a.columns=t.columns,a.onrightfns=a.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),a.onrightfn=new Function("r","var y;return "+a.onrightfns),a.hh=x(a.onrightfns),o.uniqs[a.hh]={}}else if("FOREIGN KEY"===t.type){var s=o.xcolumns[t.columns[0]],i=t.fktable;t.fkcolumns&&t.fkcolumns.length>0&&(i.columnid=t.fkcolumns[0]);var u=T.databases[i.databaseid||e].tables[i.tableid];void 0===i.columnid&&(i.columnid=u.pk.columns[0]),r=function(e){var t={};if(void 0===e[s.columnid])return!0;t[i.columnid]=e[s.columnid];var r=u.pk.onrightfn(t);if(!u.uniqs[u.pk.hh][r])throw new Error('Foreign key "'+e[s.columnid]+'" is not found in table '+u.tableid);return!0}}r&&o.checks.push({fn:r,id:t.constraintid,fk:"FOREIGN KEY"===t.type})}),this.view&&this.viewcolumns){var l=this;this.viewcolumns.forEach(function(e,t){l.select.columns[t].as=e.columnid})}if(this.view&&this.select&&(o.view=!0,o.select=this.select.compile(this.table.databaseid||e)),n.engineid)return T.engines[n.engineid].createTable(this.table.databaseid||e,a,this.ifnotexists,r);o.insert=function(r,n){var a=T.inserted;T.inserted=[r];var s=this,i=!1,o=!1;for(var u in s.beforeinsert){var c=s.beforeinsert[u];c&&(c.funcid?!1===T.fn[c.funcid](r)&&(o=o||!0):c.statement&&!1===c.statement.execute(e)&&(o=o||!0))}if(!o){var l=!1;for(u in s.insteadofinsert)l=!0,(c=s.insteadofinsert[u])&&(c.funcid?T.fn[c.funcid](r):c.statement&&c.statement.execute(e));if(!l){for(var h in s.identities){var d=s.identities[h];r[h]=d.value}if(s.checks&&s.checks.length>0&&s.checks.forEach(function(e){if(!e.fn(r))throw new Error("Violation of CHECK constraint "+(e.id||""))}),s.columns.forEach(function(e){if(e.notnull&&void 0===r[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),s.pk){var f=s.pk,p=f.onrightfn(r)
+;if(void 0!==s.uniqs[f.hh][p]){if(!n)throw new Error("Cannot insert record, because it already exists in primary key index");i=s.uniqs[f.hh][p]}}if(s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(r);if(void 0!==s.uniqs[e.hh][t]){if(!n)throw new Error("Cannot insert record, because it already exists in unique index");i=s.uniqs[e.hh][t]}}),i)s.update(function(e){for(var t in r)e[t]=r[t]},s.data.indexOf(i),t);else{s.data.push(r);for(var h in s.identities){var d=s.identities[h];d.value+=d.step}if(s.pk){var f=s.pk,p=f.onrightfn(r);s.uniqs[f.hh][p]=r}s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(r);s.uniqs[e.hh][t]=r})}for(var u in s.afterinsert){var c=s.afterinsert[u];c&&(c.funcid?T.fn[c.funcid](r):c.statement&&c.statement.execute(e))}T.inserted=a}}},o.delete=function(t){var r=this,n=r.data[t],a=!1;for(var s in r.beforedelete){var i=r.beforedelete[s];i&&(i.funcid?!1===T.fn[i.funcid](n)&&(a=a||!0):i.statement&&!1===i.statement.execute(e)&&(a=a||!0))}if(a)return!1;var o=!1;for(var s in r.insteadofdelete){o=!0;var i=r.insteadofdelete[s];i&&(i.funcid?T.fn[i.funcid](n):i.statement&&i.statement.execute(e))}if(!o){if(this.pk){var u=this.pk,c=u.onrightfn(n);if(void 0===this.uniqs[u.hh][c])throw new Error("Something wrong with primary key index on table");this.uniqs[u.hh][c]=void 0}r.uk&&r.uk.length&&r.uk.forEach(function(e){var t=e.onrightfn(n);if(void 0===r.uniqs[e.hh][t])throw new Error("Something wrong with unique index on table");r.uniqs[e.hh][t]=void 0})}},o.deleteall=function(){this.data.length=0,this.pk&&(this.uniqs[this.pk.hh]={}),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh]={}})},o.update=function(t,r,n){var a,s=_(this.data[r]);if(this.pk&&(a=this.pk,a.pkaddr=a.onrightfn(s,n),void 0===this.uniqs[a.hh][a.pkaddr]))throw new Error("Something wrong with index on table");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.ukaddr=e.onrightfn(s),void 0===o.uniqs[e.hh][e.ukaddr])throw new Error("Something wrong with unique index on table")}),t(s,n,T);var i=!1;for(var u in o.beforeupdate){var c=o.beforeupdate[u];c&&(c.funcid?!1===T.fn[c.funcid](this.data[r],s)&&(i=i||!0):c.statement&&!1===c.statement.execute(e)&&(i=i||!0))}if(i)return!1;var l=!1;for(var u in o.insteadofupdate){l=!0;var c=o.insteadofupdate[u];c&&(c.funcid?T.fn[c.funcid](this.data[r],s):c.statement&&c.statement.execute(e))}if(!l){if(o.checks&&o.checks.length>0&&o.checks.forEach(function(e){if(!e.fn(s))throw new Error("Violation of CHECK constraint "+(e.id||""))}),o.columns.forEach(function(e){if(e.notnull&&void 0===s[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),this.pk&&(a.newpkaddr=a.onrightfn(s),void 0!==this.uniqs[a.hh][a.newpkaddr]&&a.newpkaddr!==a.pkaddr))throw new Error("Record already exists");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.newukaddr=e.onrightfn(s),void 0!==o.uniqs[e.hh][e.newukaddr]&&e.newukaddr!==e.ukaddr)throw new Error("Record already exists")}),this.pk&&(this.uniqs[a.hh][a.pkaddr]=void 0,this.uniqs[a.hh][a.newpkaddr]=s),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh][e.ukaddr]=void 0,o.uniqs[e.hh][e.newukaddr]=s}),this.data[r]=s;for(var u in o.afterupdate){var c=o.afterupdate[u];c&&(c.funcid?T.fn[c.funcid](this.data[r],s):c.statement&&c.statement.execute(e))}}};var h;return T.options.nocount||(h=1),r&&(h=r(h)),h},T.fn.Date=Object,T.fn.Date=Date,T.fn.Number=Number,T.fn.String=String,T.fn.Boolean=Boolean,ae.EXTEND=T.utils.extend,ae.CHAR=String.fromCharCode.bind(String),ae.ASCII=function(e){return e.charCodeAt(0)},ae.COALESCE=function(){for(var e=0;e0)var n=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),s=new Function("x,params,alasql",n);return function(e,n){var i,o,u=T.databases[t];o=void 0!==r?r:u.counter++;var c={$id:o,$node:"VERTEX"};return u.objects[c.$id]=c,i=c,a&&a(c),s&&s(c,e,T),n&&(i=n(i)),i}},X.CreateEdge=function(e){return X.extend(this,e)},X.CreateEdge.prototype.toString=function(){var e="CREATE EDGE ";return this.class&&(e+=this.class+" "),e},X.CreateEdge.prototype.toJS=function(e){return"this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+")"},X.CreateEdge.prototype.compile=function(e){var t=e,r=new Function("params,alasql","var y;return "+this.from.toJS()),n=new Function("params,alasql","var y;return "+this.to.toJS());if(void 0!==this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);return function(e,a){var o=0,u=T.databases[t],c={$id:u.counter++,$node:"EDGE"},l=r(e,T),h=n(e,T);return c.$in=[l.$id],c.$out=[h.$id],void 0===l.$out&&(l.$out=[]),l.$out.push(c.$id),void 0===typeof h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,T),a&&(o=a(o)),o}},X.CreateGraph=function(e){return X.extend(this,e)},X.CreateGraph.prototype.toString=function(){var e="CREATE GRAPH ";return this.class&&(e+=this.class+" "),e},X.CreateGraph.prototype.execute=function(e,t,r){function n(e){var t=T.databases[T.useid].objects;for(var r in t)if(t[r].name===e)return t[r]}function a(r){var n={};void 0!==r.as&&(T.vars[r.as]=n),void 0!==r.prop&&(n.$id=r.prop,n.name=r.prop),void 0!==r.sharp&&(n.$id=r.sharp),void 0!==r.name&&(n.name=r.name),void 0!==r.class&&(n.$class=r.class);var a=T.databases[e];if(void 0===n.$id&&(n.$id=a.counter++),n.$node="VERTEX",void 0!==r.json&&q(n,new Function("params,alasql","var y;return "+r.json.toJS())(t,T)),a.objects[n.$id]=n,void 0!==n.$class){if(void 0===T.databases[e].tables[n.$class])throw new Error("No such class. Pleace use CREATE CLASS");T.databases[e].tables[n.$class].data.push(n)}return s.push(n.$id),n}var s=[];return this.from&&T.from[this.from.funcid]&&(this.graph=T.from[this.from.funcid.toUpperCase()]),this.graph.forEach(function(r){if(r.source){var i={};void 0!==r.as&&(T.vars[r.as]=i),void 0!==r.prop&&(i.name=r.prop),void 0!==r.sharp&&(i.$id=r.sharp),void 0!==r.name&&(i.name=r.name),void 0!==r.class&&(i.$class=r.class);var o=T.databases[e];void 0===i.$id&&(i.$id=o.counter++),i.$node="EDGE",void 0!==r.json&&q(i,new Function("params,alasql","var y;return "+r.json.toJS())(t,T));var u;if(r.source.vars){var c=T.vars[r.source.vars];u="object"==typeof c?c:o.objects[c]}else{var l=r.source.sharp;void 0===l&&(l=r.source.prop),u=T.databases[e].objects[l],void 0!==u||!T.options.autovertex||void 0===r.source.prop&&void 0===r.source.name||void 0===(u=n(r.source.prop||r.source.name))&&(u=a(r.source))}var h;if(r.source.vars){var c=T.vars[r.target.vars];h="object"==typeof c?c:o.objects[c]}else{var d=r.target.sharp;void 0===d&&(d=r.target.prop),h=T.databases[e].objects[d],void 0!==h||!T.options.autovertex||void 0===r.target.prop&&void 0===r.target.name||void 0===(h=n(r.target.prop||r.target.name))&&(h=a(r.target))}if(i.$in=[u.$id],i.$out=[h.$id],void 0===u.$out&&(u.$out=[]),u.$out.push(i.$id),void 0===h.$in&&(h.$in=[]),h.$in.push(i.$id),o.objects[i.$id]=i,void 0!==i.$class){if(void 0===T.databases[e].tables[i.$class])throw new Error("No such class. Pleace use CREATE CLASS");T.databases[e].tables[i.$class].data.push(i)}s.push(i.$id)}else a(r)}),r&&(s=r(s)),s},X.CreateGraph.prototype.compile1=function(e){var t=e,r=new Function("params,alasql","var y;return "+this.from.toJS()),n=new Function("params,alasql","var y;return "+this.to.toJS());if(void 0!==this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);return function(e,a){var o=0,u=T.databases[t],c={$id:u.counter++,$node:"EDGE"},l=r(e,T),h=n(e,T);return c.$in=[l.$id],c.$out=[h.$id],void 0===l.$out&&(l.$out=[]),l.$out.push(c.$id),void 0===h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,T),a&&(o=a(o)),o}},X.AlterTable=function(e){return X.extend(this,e)},X.AlterTable.prototype.toString=function(){var e="ALTER TABLE "+this.table.toString();return this.renameto&&(e+=" RENAME TO "+this.renameto),e},X.AlterTable.prototype.execute=function(e,t,r){var n=T.databases[e];if(n.dbversion=Date.now(),this.renameto){var a=this.table.tableid,s=this.renameto,i=1;if(n.tables[s])throw new Error("Can not rename a table '"+a+"' to '"+s+"', because the table with this name already exists");if(s===a)throw new Error("Can not rename a table '"+a+"' to itself");return n.tables[s]=n.tables[a],delete n.tables[a],i=1,r&&r(i),i}if(this.addcolumn){n=T.databases[this.table.databaseid||e],n.dbversion++;var o=this.table.tableid,u=n.tables[o],c=this.addcolumn.columnid;if(u.xcolumns[c])throw new Error('Cannot add column "'+c+'", because it already exists in the table "'+o+'"');var l={columnid:c,dbtypeid:this.dbtypeid,dbsize:this.dbsize,dbprecision:this.dbprecision,dbenum:this.dbenum,defaultfns:null};u.columns.push(l),u.xcolumns[c]=l;for(var h=0,d=u.data.length;h0)for(var l=0,h=s.data.length;l0)for(var l=0,h=s.data.length;l=0?r+="(x="+s[t].toJS()+",x==undefined?undefined:+x)":T.fn[a.xcolumns[e.columnid].dbtypeid]?(r+="(new "+a.xcolumns[e.columnid].dbtypeid+"(",r+=s[t].toJS(),r+="))"):r+=s[t].toJS():r+=s[t].toJS(),u.push(r)}):Array.isArray(s)&&a.columns&&a.columns.length>0?a.columns.forEach(function(e,t){var r="'"+e.columnid+"':";["INT","FLOAT","NUMBER","MONEY"].indexOf(e.dbtypeid)>=0?r+="+"+s[t].toJS():T.fn[e.dbtypeid]?(r+="(new "+e.dbtypeid+"(",r+=s[t].toJS(),r+="))"):r+=s[t].toJS(),u.push(r)}):o=b(s),r.tables[n].defaultfns&&u.unshift(r.tables[n].defaultfns),i+=o?"a="+o+";":"a={"+u.join(",")+"};",r.tables[n].isclass&&(i+="var db=alasql.databases['"+e+"'];",i+='a.$class="'+n+'";',i+="a.$id=db.counter++;",i+="db.objects[a.$id]=a;"),r.tables[n].insert?(i+="var db=alasql.databases['"+e+"'];",i+="db.tables['"+n+"'].insert(a,"+(t.orreplace?"true":"false")+");"):i+="aa.push(a);"}),s=u+i,r.tables[n].insert||(i+="alasql.databases['"+e+"'].tables['"+n+"'].data=alasql.databases['"+e+"'].tables['"+n+"'].data.concat(aa);"),r.tables[n].insert&&r.tables[n].isclass?i+="return a.$id;":i+="return "+t.values.length;var c=new Function("db, params, alasql","var y;"+u+i).bind(this)}else if(this.select){this.select.modifier="RECORDSET";var l=this.select.compile(e);if(r.engineid&&T.engines[r.engineid].intoTable){var h=function(e,t){var a=l(e);return T.engines[r.engineid].intoTable(r.databaseid,n,a.data,null,t)};return h}var d="return alasql.utils.extend(r,{"+a.defaultfns+"})",f=new Function("r,db,params,alasql",d),c=function(e,r,a){var s=l(r).data;if(e.tables[n].insert)for(var i=0,o=s.length;i0&&(e+="("+this.args.map(function(e){return e.toString()}).join(", ")+")"),this.as&&(e+=" AS "+this.as),e},X.CreateDatabase.prototype.execute=function(e,t,r){if(this.args&&this.args.length>0&&this.args.map(function(e){return new Function("params,alasql","var y;return "+e.toJS())(t,T)}),this.engineid){var n=T.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,r);return n}var a=this.databaseid;if(T.databases[a])throw new Error("Database '"+a+"' already exists");var n=(new T.Database(a),1);return r?r(n):n},X.AttachDatabase=function(e){return X.extend(this,e)},X.AttachDatabase.prototype.toString=function(e){var t="ATTACH";return this.engineid&&(t+=" "+this.engineid),t+=" DATABASE "+this.databaseid,e&&(t+="(",e.length>0&&(t+=e.map(function(e){return e.toString()}).join(", ")),t+=")"),this.as&&(t+=" AS "+this.as),t},X.AttachDatabase.prototype.execute=function(e,t,r){if(!T.engines[this.engineid])throw new Error('Engine "'+this.engineid+'" is not defined.');return T.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,t,r)},X.DetachDatabase=function(e){return X.extend(this,e)},X.DetachDatabase.prototype.toString=function(){var e="DETACH";return e+=" DATABASE "+this.databaseid},X.DetachDatabase.prototype.execute=function(e,t,r){if(!T.databases[this.databaseid].engineid)throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.');var n,a=this.databaseid;if(a===T.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(T.databases[a])delete T.databases[a],a===T.useid&&T.use(),n=1;else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");n=0}return r&&r(n),n},X.UseDatabase=function(e){return X.extend(this,e)},X.UseDatabase.prototype.toString=function(){return"USE DATABASE "+this.databaseid},X.UseDatabase.prototype.execute=function(e,t,r){var n=this.databaseid;if(!T.databases[n])throw new Error("Database '"+n+"' does not exist");T.use(n);return r&&r(1),1},X.DropDatabase=function(e){return X.extend(this,e)},X.DropDatabase.prototype.toString=function(){var e="DROP";return this.ifexists&&(e+=" IF EXISTS"),e+=" DATABASE "+this.databaseid},X.DropDatabase.prototype.execute=function(e,t,r){if(this.engineid)return T.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,r);var n,a=this.databaseid;if(a===T.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(T.databases[a]){if(T.databases[a].engineid)throw new Error("Cannot drop database '"+a+"', because it is attached. Detach it.");delete T.databases[a],a===T.useid&&T.use(),n=1}else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");n=0}return r&&r(n),n},X.Declare=function(e){return X.extend(this,e)},X.Declare.prototype.toString=function(){var e="DECLARE ";return this.declares&&this.declares.length>0&&(e=this.declares.map(function(e){var t="";return t+="@"+e.variable+" ",t+=e.dbtypeid,this.dbsize&&(t+="("+this.dbsize,this.dbprecision&&(t+=","+this.dbprecision),t+=")"),e.expression&&(t+=" = "+e.expression.toString()),t}).join(",")),e},X.Declare.prototype.execute=function(e,t,r){var n=1;return this.declares&&this.declares.length>0&&this.declares.map(function(e){var r=e.dbtypeid;T.fn[r]||(r=r.toUpperCase()),T.declares[e.variable]={dbtypeid:r,dbsize:e.dbsize,dbprecision:e.dbprecision},e.expression&&(T.vars[e.variable]=new Function("params,alasql","return "+e.expression.toJS("({})","",null))(t,T),T.declares[e.variable]&&(T.vars[e.variable]=T.stdfn.CONVERT(T.vars[e.variable],T.declares[e.variable])))}),r&&(n=r(n)),n},X.ShowDatabases=function(e){return X.extend(this,e)},X.ShowDatabases.prototype.toString=function(){var e="SHOW DATABASES";return this.like&&(e+="LIKE "+this.like.toString()),e},X.ShowDatabases.prototype.execute=function(e,t,r){if(this.engineid)return T.engines[this.engineid].showDatabases(this.like,r);var n=this,a=[];for(var s in T.databases)a.push({databaseid:s});return n.like&&a&&a.length>0&&(a=a.filter(function(e){return T.utils.like(n.like.value,e.databaseid)})),r&&r(a),a},X.ShowTables=function(e){return X.extend(this,e)},X.ShowTables.prototype.toString=function(){var e="SHOW TABLES";return this.databaseid&&(e+=" FROM "+this.databaseid),this.like&&(e+=" LIKE "+this.like.toString()),e},X.ShowTables.prototype.execute=function(e,t,r){
+var n=T.databases[this.databaseid||e],a=this,s=[];for(var i in n.tables)s.push({tableid:i});return a.like&&s&&s.length>0&&(s=s.filter(function(e){return T.utils.like(a.like.value,e.tableid)})),r&&r(s),s},X.ShowColumns=function(e){return X.extend(this,e)},X.ShowColumns.prototype.toString=function(){var e="SHOW COLUMNS";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowColumns.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=n.tables[this.table.tableid];if(a&&a.columns){var s=a.columns.map(function(e){return{columnid:e.columnid,dbtypeid:e.dbtypeid,dbsize:e.dbsize}});return r&&r(s),s}return r&&r([]),[]},X.ShowIndex=function(e){return X.extend(this,e)},X.ShowIndex.prototype.toString=function(){var e="SHOW INDEX";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowIndex.prototype.execute=function(e,t,r){var n=T.databases[this.databaseid||e],a=n.tables[this.table.tableid],s=[];if(a&&a.indices)for(var i in a.indices)s.push({hh:i,len:Object.keys(a.indices[i]).length});return r&&r(s),s},X.ShowCreateTable=function(e){return X.extend(this,e)},X.ShowCreateTable.prototype.toString=function(){var e="SHOW CREATE TABLE "+this.table.tableid;return this.databaseid&&(e+=" FROM "+this.databaseid),e},X.ShowCreateTable.prototype.execute=function(e){var t=T.databases[this.databaseid||e],r=t.tables[this.table.tableid];if(r){var n="CREATE TABLE "+this.table.tableid+" (",a=[];return r.columns&&(r.columns.forEach(function(e){var t=e.columnid+" "+e.dbtypeid;e.dbsize&&(t+="("+e.dbsize+")"),e.primarykey&&(t+=" PRIMARY KEY"),a.push(t)}),n+=a.join(", ")),n+=")"}throw new Error('There is no such table "'+this.table.tableid+'"')},X.SetVariable=function(e){return X.extend(this,e)},X.SetVariable.prototype.toString=function(){var e="SET ";return void 0!==this.value&&(e+=this.variable.toUpperCase()+" "+(this.value?"ON":"OFF")),this.expression&&(e+=this.method+this.variable+" = "+this.expression.toString()),e},X.SetVariable.prototype.execute=function(e,t,r){if(void 0!==this.value){var n=this.value;"ON"==n?n=!0:"OFF"==n&&(n=!1),T.options[this.variable]=n}else if(this.expression){this.exists&&(this.existsfn=this.exists.map(function(t){var r=t.compile(e);return r.query&&!r.query.modifier&&(r.query.modifier="RECORDSET"),r})),this.queries&&(this.queriesfn=this.queries.map(function(t){var r=t.compile(e);return r.query&&!r.query.modifier&&(r.query.modifier="RECORDSET"),r}));var a=new Function("params,alasql","return "+this.expression.toJS("({})","",null)).bind(this)(t,T);if(T.declares[this.variable]&&(a=T.stdfn.CONVERT(a,T.declares[this.variable])),this.props&&this.props.length>0){if("@"==this.method)var s="alasql.vars['"+this.variable+"']";else var s="params['"+this.variable+"']";s+=this.props.map(function(e){return"string"==typeof e?"['"+e+"']":"number"==typeof e?"["+e+"]":"["+e.toJS()+"]"}).join(),new Function("value,params,alasql","var y;"+s+"=value")(a,t,T)}else"@"==this.method?T.vars[this.variable]=a:t[this.variable]=a}var a=1;return r&&(a=r(a)),a},T.test=function(e,t,r){if(0===arguments.length)return void T.log(T.con.results);var n=Date.now();if(1===arguments.length)return r(),void T.con.log(Date.now()-n);2===arguments.length&&(r=t,t=1);for(var a=0;a",e),Array.isArray(a)&&console.table?console.table(a):console.log(oe(a));else{var s;s="output"===n?document.getElementsByTagName("output")[0]:"string"==typeof n?document.getElementById(n):n;var i="";if("string"==typeof e&&T.options.logprompt&&(i+=""+T.pretty(e)+" "),Array.isArray(a))if(0===a.length)i+="[ ]
";else if("object"!=typeof a[0]||Array.isArray(a[0]))for(var o=0,u=a.length;o"+E(a[o])+"
";else i+=E(a);else i+=E(a);s.innerHTML+=i}},T.clear=function(){var e=T.options.logtarget;if(N.isNode||N.isMeteorServer)console.clear&&console.clear();else{var t;t="output"===e?document.getElementsByTagName("output")[0]:"string"==typeof e?document.getElementById(e):e,t.innerHTML=""}},T.write=function(e){var t=T.options.logtarget;if(N.isNode||N.isMeteorServer)console.log&&console.log(e);else{var r;r="output"===t?document.getElementsByTagName("output")[0]:"string"==typeof t?document.getElementById(t):t,r.innerHTML+=e}},T.prompt=function(e,t,r){if(N.isNode)throw new Error("The prompt not realized for Node.js");var n=0;if("string"==typeof e&&(e=document.getElementById(e)),"string"==typeof t&&(t=document.getElementById(t)),t.textContent=T.useid,r){T.prompthistory.push(r),n=T.prompthistory.length;try{var a=Date.now();T.log(r),T.write(''+(Date.now()-a)+" ms
")}catch(e){T.write(""+olduseid+"> "+sql+"
"),T.write(''+e+"
")}}var s=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;g(document.getElementsByTagName("body")[0],s,500),e.onkeydown=function(r){if(13===r.which){var a=e.value,s=T.useid;e.value="",T.prompthistory.push(a),n=T.prompthistory.length;try{var i=Date.now();T.log(a),T.write('
'+(Date.now()-i)+" ms
")}catch(e){T.write(""+s+"> "+T.pretty(a,!1)+"
"),T.write(''+e+"
")}e.focus(),t.textContent=T.useid;var o=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;g(document.getElementsByTagName("body")[0],o,500)}else 38===r.which?(n--,n<0&&(n=0),T.prompthistory[n]&&(e.value=T.prompthistory[n],r.preventDefault())):40===r.which&&(n++,n>=T.prompthistory.length?(n=T.prompthistory.length,e.value=""):T.prompthistory[n]&&(e.value=T.prompthistory[n],r.preventDefault()))}},X.BeginTransaction=function(e){return X.extend(this,e)},X.BeginTransaction.prototype.toString=function(){return"BEGIN TRANSACTION"},X.BeginTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[T.useid].engineid].begin(e,r):(r&&r(1),1)},X.CommitTransaction=function(e){return X.extend(this,e)},X.CommitTransaction.prototype.toString=function(){return"COMMIT TRANSACTION"},X.CommitTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[T.useid].engineid].commit(e,r):(r&&r(1),1)},X.RollbackTransaction=function(e){return X.extend(this,e)},X.RollbackTransaction.prototype.toString=function(){return"ROLLBACK TRANSACTION"},X.RollbackTransaction.prototype.execute=function(e,t,r){return T.databases[e].engineid?T.engines[T.databases[e].engineid].rollback(e,r):(r&&r(1),1)},T.options.tsql&&(T.stdfn.OBJECT_ID=function(e,t){void 0===t&&(t="T"),t=t.toUpperCase();var r=e.split("."),n=T.useid,a=r[0];2==r.length&&(n=r[0],a=r[1]);var s=T.databases[n].tables;n=T.databases[n].databaseid;for(var i in s)if(i==a){if(s[i].view&&"V"==t)return n+"."+i;if(!s[i].view&&"T"==t)return n+"."+i;return}}),T.options.mysql,(T.options.mysql||T.options.sqlite)&&(T.from.INFORMATION_SCHEMA=function(e,t,r,n,a){if("VIEWS"==e||"TABLES"==e){var s=[];for(var i in T.databases){var o=T.databases[i].tables;for(var u in o)(o[u].view&&"VIEWS"==e||!o[u].view&&"TABLES"==e)&&s.push({TABLE_CATALOG:i,TABLE_NAME:u})}return r&&(s=r(s,n,a)),s}throw new Error("Unknown INFORMATION_SCHEMA table")}),T.options.postgres,T.options.oracle,T.options.sqlite,T.into.SQL=function(e,t,r,n,a){var s;"object"==typeof e&&(t=e,e=void 0);var i={};if(T.utils.extend(i,t),void 0===i.tableid)throw new Error("Table for INSERT TO is not defined.");var o="";0===n.length&&"object"==typeof r[0]&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}}));for(var u=0,c=r.length;u0&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s=r.length,i="";if(r.length>0){var o=n[0].columnid;i+=r.map(function(e){return e[o]}).join("\n")}return e=T.utils.autoExtFilename(e,"txt",t),s=T.utils.saveFile(e,i),a&&(s=a(s)),s},T.into.TAB=T.into.TSV=function(e,t,r,n,a){var s={};return T.utils.extend(s,t),s.separator="\t",e=T.utils.autoExtFilename(e,"tab",t),s.autoExt=!1,T.into.CSV(e,s,r,n,a)},T.into.CSV=function(e,t,r,n,a){0===n.length&&r.length>0&&(n=Object.keys(r[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s={headers:!0};s.separator=";",s.quote='"',s.utf8Bom=!0,t&&!t.headers&&void 0!==t.headers&&(s.utf8Bom=!1),T.utils.extend(s,t);var i=r.length,o=s.utf8Bom?"\ufeff":"";return s.headers&&(o+=s.quote+n.map(function(e){return e.columnid.trim()}).join(s.quote+s.separator+s.quote)+s.quote+"\r\n"),r.forEach(function(e){o+=n.map(function(t){var r=e[t.columnid];return""!==s.quote&&(r=(r+"").replace(new RegExp("\\"+s.quote,"g"),s.quote+s.quote)),+r!=r&&(r=s.quote+r+s.quote),r}).join(s.separator)+"\r\n"}),e=T.utils.autoExtFilename(e,"csv",t),i=T.utils.saveFile(e,o,null,{disableAutoBom:!0}),a&&(i=a(i)),i},T.into.XLS=function(e,t,r,n,a){"object"==typeof e&&(t=e,e=void 0);var s={};t&&t.sheets&&(s=t.sheets);var i={headers:!0};void 0!==s.Sheet1?i=s[0]:void 0!==t&&(i=t),void 0===i.sheetid&&(i.sheetid="Sheet1");var o=function(){var e=' \t\t \t\t\x3c!--[if gte mso 9]> ';if(e+=" "+i.sheetid+" \t\t ",e+=" ",e+="",e+="",void 0!==i.caption){var a=i.caption;"string"==typeof a&&(a={title:a}),e+="",e+=a.title,e+=" "}return void 0!==i.columns?n=i.columns:0==n.length&&r.length>0&&"object"==typeof r[0]&&(n=Array.isArray(r[0])?r[0].map(function(e,t){return{columnid:t}}):Object.keys(r[0]).map(function(e){return{columnid:e}})),n.forEach(function(e,t){void 0!==i.column&&q(e,i.column),void 0===e.width&&(i.column&&"undefined"!=i.column.width?e.width=i.column.width:e.width="120px"),"number"==typeof e.width&&(e.width=e.width+"px"),void 0===e.columnid&&(e.columnid=t),void 0===e.title&&(e.title=""+e.columnid.trim()),i.headers&&Array.isArray(i.headers)&&(e.title=i.headers[t])}),e+="",n.forEach(function(t){e+=' '}),e+=" ",i.headers&&(e+="",e+="",n.forEach(function(t,r){e+="",void 0!==t.title&&("function"==typeof t.title?e+=t.title(i,t,r):e+=t.title),e+=" "}),e+=" ",e+=" "),e+="",r&&r.length>0&&r.forEach(function(r,a){if(!(a>i.limit)){e+="",n.forEach(function(n,o){var u={};q(u,i.cell),q(u,s.cell),void 0!==i.column&&q(u,i.column.cell),q(u,n.cell),i.cells&&i.cells[a]&&i.cells[a][o]&&q(u,i.cells[a][o]);var c=r[n.columnid];"function"==typeof u.value&&(c=u.value(c,i,r,n,u,a,o));var l=u.typeid;"function"==typeof l&&(l=l(c,i,r,n,u,a,o)),void 0===l&&("number"==typeof c?l="number":"string"==typeof c?l="string":"boolean"==typeof c?l="boolean":"object"==typeof c&&c instanceof Date&&(l="date"));var h="";"money"==l?h='mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;':"number"==l?h=" ":"date"==l?h='mso-number-format:"Short Date";':t.types&&t.types[l]&&t.types[l].typestyle&&(h=t.types[l].typestyle),h=h||'mso-number-format:"\\@";',e+="";var d=u.format;if(void 0===c)e+="";else if(void 0!==d)if("function"==typeof d)e+=d(c);else{if("string"!=typeof d)throw new Error("Unknown format type. Should be function or string");e+=c}else e+="number"==l||"date"==l?c.toString():"money"==l?(+c).toFixed(2):c;e+=" "}),e+=" "}}),e+=" ",e+="
",e+="",e+=""}();e=T.utils.autoExtFilename(e,"xls",t);var u=T.utils.saveFile(e,o);return a&&(u=a(u)),u},T.into.XLSXML=function(e,t,r,n,a){t=t||{},"object"==typeof e&&(t=e,e=void 0);var s,i,o={};t&&t.sheets?(o=t.sheets,s=r,i=n):(o.Sheet1=t,s=[r],i=[n]),e=T.utils.autoExtFilename(e,"xls",t);var u=T.utils.saveFile(e,function(){function e(e){var t="";for(var n in e){t+="<"+n;for(var s in e[n])t+=" ","x:"==s.substr(0,2)?t+=s:t+="ss:",t+=s+'="'+e[n][s]+'"';t+="/>"}var i=x(t);return a[i]||(a[i]={styleid:u},r+='",u++),"s"+a[i].styleid}var r="",n=" ",a={},u=62,c=0;for(var l in o){var h=o[l],d=void 0!==h.dataidx?h.dataidx:c++,f=function(e){try{return Object.values(e)}catch(t){return Object.keys(e).map(function(t){return e[t]})}}(s[d]),p=void 0;void 0!==h.columns?p=h.columns:(void 0===(p=i[d])||0==p.length&&f.length>0)&&"object"==typeof f[0]&&(p=Array.isArray(f[0])?f[0].map(function(e,t){return{columnid:t}}):Object.keys(f[0]).map(function(e){return{columnid:e}})),p.forEach(function(e,t){void 0!==h.column&&q(e,h.column),void 0===e.width&&(h.column&&void 0!==h.column.width?e.width=h.column.width:e.width=120),"number"==typeof e.width&&(e.width=e.width),void 0===e.columnid&&(e.columnid=t),void 0===e.title&&(e.title=""+e.columnid.trim()),h.headers&&Array.isArray(h.headers)&&(e.title=h.headers[t])}),n+=' \t \t\t\t',p.forEach(function(e,t){n+=' '}),h.headers&&(n+='',p.forEach(function(t,r){if(n+="',void 0!==t.title&&("function"==typeof t.title?n+=t.title(h,t,r):n+=t.title),n+=" | "}),n+="
"),f&&f.length>0&&f.forEach(function(r,a){if(!(a>h.limit)){var s={};if(q(s,h.row),h.rows&&h.rows[a]&&q(s,h.rows[a]),n+="",p.forEach(function(i,o){var u={};q(u,h.cell),q(u,s.cell),void 0!==h.column&&q(u,h.column.cell),q(u,i.cell),h.cells&&h.cells[a]&&h.cells[a][o]&&q(u,h.cells[a][o]);var c=r[i.columnid];"function"==typeof u.value&&(c=u.value(c,h,r,i,u,a,o));var l=u.typeid;"function"==typeof l&&(l=l(c,h,r,i,u,a,o)),void 0===l&&("number"==typeof c?l="number":"string"==typeof c?l="string":"boolean"==typeof c?l="boolean":"object"==typeof c&&c instanceof Date&&(l="date"));var d="String";"number"==l?d="Number":"date"==l&&(d="Date");var f="";"money"==l?f='mso-number-format:"\\#\\,\\#\\#0\\\\ _р_\\.";white-space:normal;':"number"==l?f=" ":"date"==l?f='mso-number-format:"Short Date";':t.types&&t.types[l]&&t.types[l].typestyle&&(f=t.types[l].typestyle),f=f||'mso-number-format:"\\@";',n+="",n+='';var b=u.format;if(void 0===c)n+="";else if(void 0!==b)if("function"==typeof b)n+=b(c);else{if("string"!=typeof b)throw new Error("Unknown format type. Should be function or string");n+=c}else n+="number"==l||"date"==l?c.toString():"money"==l?(+c).toFixed(2):c;n+=" | "}),n+="
"}}),n+="
"}return n+="",' \t\t \t\t \t\t \t\t \t\t \t\t \t\t \t\t 0 \t\t \t\t \t\t '+r+n}());return a&&(u=a(u)),u},T.into.XLSX=function(e,t,r,n,s){function i(){"object"==typeof t&&Array.isArray(t)?r&&r.length>0&&r.forEach(function(e,r){o(t[r],e,void 0,r+1)}):o(t,r,n,1),u(s)}function o(e,t,r,n){var a={sheetid:"Sheet "+n,headers:!0};T.utils.extend(a,e);var s=Object.keys(t).length;(!r||0==r.length)&&s>0&&(r=Object.keys(t[0]).map(function(e){return{columnid:e}}));var i={};h.SheetNames.indexOf(a.sheetid)>-1?i=h.Sheets[a.sheetid]:(h.SheetNames.push(a.sheetid),h.Sheets[a.sheetid]={},i=h.Sheets[a.sheetid]);var o="A1";a.range&&(o=a.range);var u=T.utils.xlscn(o.match(/[A-Z]+/)[0]),c=+o.match(/[0-9]+/)[0]-1;if(h.Sheets[a.sheetid]["!ref"])var l=h.Sheets[a.sheetid]["!ref"],d=T.utils.xlscn(l.match(/[A-Z]+/)[0]),f=+l.match(/[0-9]+/)[0]-1;else var d=1,f=1;var p=Math.max(u+r.length,d),b=Math.max(c+s+2,f),E=c+1;h.Sheets[a.sheetid]["!ref"]="A1:"+T.utils.xlsnc(p)+b,a.headers&&(r.forEach(function(e,t){i[T.utils.xlsnc(u+t)+""+E]={v:e.columnid.trim()}}),E++);for(var g=0;g=b)return f;if(c)return c=!1,d;var t=E;if(e.charCodeAt(t)===h){for(var r=t;r++0){var s=this.exprs.map(function(e){var r=new Function("params,alasql,p","var y;return "+e.toJS("({})","",null)).bind(n),a=r(t,T);return oe(a)});console.log.apply(console,s)}else if(this.select){var i=this.select.execute(e,t);console.log(oe(i))}else console.log();return r&&(a=r(a)),a},X.Source=function(e){return X.extend(this,e)},X.Source.prototype.toString=function(){var e="SOURCE";return this.url&&(e+=" '"+this.url+" '"),e},X.Source.prototype.execute=function(e,t,r){var n;return I(this.url,!!r,function(e){return n=T(e),r&&(n=r(n)),n},function(e){throw e}),n},X.Require=function(e){return X.extend(this,e)},X.Require.prototype.toString=function(){var e="REQUIRE";return this.paths&&this.paths.length>0&&(e+=this.paths.map(function(e){return e.toString()}).join(",")),this.plugins&&this.plugins.length>0&&(e+=this.plugins.map(function(e){return e.toUpperCase()}).join(",")),e},X.Require.prototype.execute=function(e,t,r){var n=this,a=0,s="";return this.paths&&this.paths.length>0?this.paths.forEach(function(e){I(e.value,!!r,function(e){a++,s+=e,a0?this.plugins.forEach(function(e){T.plugins[e]||I(T.path+"/alasql-"+e.toLowerCase()+".js",!!r,function(i){a++,s+=i,a0&&(r=r.filter(function(e){return e.databaseid.match(a)}))}return t&&(r=t(r)),r},he.createTable=function(e,t,r,n){var a=1,s=T.databases[e].lsdbid;if(he.get(s+"."+t)&&!r)throw new Error('Table "'+t+'" alsready exists in localStorage database "'+s+'"');var i=he.get(s);T.databases[e].tables[t];return i.tables[t]=!0,he.set(s,i),he.storeTable(e,t),n&&(a=n(a)),a},he.truncateTable=function(e,t,r,n){var a,s=1,i=T.databases[e].lsdbid;if(a=T.options.autocommit?he.get(i):T.databases[e],!r&&!a.tables[t])throw new Error('Cannot truncate table "'+t+'" in localStorage, because it does not exist');return he.restoreTable(e,t).data=[],he.storeTable(e,t),n&&(s=n(s)),s},he.dropTable=function(e,t,r,n){var a,s=1,i=T.databases[e].lsdbid;if(a=T.options.autocommit?he.get(i):T.databases[e],!r&&!a.tables[t])throw new Error('Cannot drop table "'+t+'" in localStorage, because it does not exist');return delete a.tables[t],he.set(i,a),he.removeTable(e,t),n&&(s=n(s)),s},he.fromTable=function(e,t,r,n,a){var s=(T.databases[e].lsdbid,he.restoreTable(e,t).data);return r&&(s=r(s,n,a)),s},he.intoTable=function(e,t,r,n,a){var s=(T.databases[e].lsdbid,r.length),i=he.restoreTable(e,t);for(var o in i.identities){var u=i.identities[o];for(var c in r)r[c][o]=u.value,u.value+=u.step}return i.data||(i.data=[]),i.data=i.data.concat(r),he.storeTable(e,t),a&&(s=a(s)),s},he.loadTableData=function(e,t){T.databases[e],T.databases[e].lsdbid;he.restoreTable(e,t)},he.saveTableData=function(e,t){var r=T.databases[e],n=T.databases[e].lsdbid;he.storeTable(n,t),r.tables[t].data=void 0},he.commit=function(e,t){var r=T.databases[e],n=T.databases[e].lsdbid,a={databaseid:n,tables:{}};if(r.tables)for(var s in r.tables)a.tables[s]=!0,he.storeTable(e,s);return he.set(n,a),t?t(1):1},he.begin=he.commit,he.rollback=function(e,t){return};var de=T.engines.SQLITE=function(){};de.createDatabase=function(e,t,r,n,a){throw new Error("Connot create SQLITE database in memory. Attach it.")},de.dropDatabase=function(e){throw new Error("This is impossible to drop SQLite database. Detach it.")},de.attachDatabase=function(e,t,r,n,a){if(T.databases[t])throw new Error('Unable to attach database as "'+t+'" because it already exists');if(r[0]&&r[0]instanceof X.StringValue||r[0]instanceof X.ParamValue){if(r[0]instanceof X.StringValue)var s=r[0].value;else if(r[0]instanceof X.ParamValue)var s=n[r[0].param];return T.utils.loadBinaryFile(s,!0,function(r){var n=new T.Database(t||e);n.engineid="SQLITE",n.sqldbid=e;var s=n.sqldb=new SQL.Database(r);n.tables=[],s.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values.forEach(function(e){n.tables[e[1]]={};var t=n.tables[e[1]].columns=[],r=T.parse(e[4]),a=r.statements[0].columns;a&&a.length>0&&a.forEach(function(e){t.push(e)})}),a(1)},function(e){throw new Error('Cannot open SQLite database file "'+r[0].value+'"')}),1}throw new Error("Cannot attach SQLite database without a file")},de.fromTable=function(e,t,r,n,a){var s=T.databases[e].sqldb.exec("SELECT * FROM "+t),i=a.sources[n].columns=[];s[0].columns.length>0&&s[0].columns.forEach(function(e){i.push({columnid:e})});var o=[];s[0].values.length>0&&s[0].values.forEach(function(e){var t={};i.forEach(function(r,n){t[r.columnid]=e[n]}),o.push(t)}),r&&r(o,n,a)},de.intoTable=function(e,t,r,n,a){for(var s=T.databases[e].sqldb,i=0,o=r.length;i1){var o="REQUIRE "+t.map(function(e){return'"'+e+'"'}).join(",");T(o,[],r)}}else if(!1===e)return void delete T.webworker});var pe=pe||function(e){if(!(void 0===e||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var t=e.document,r=function(){return e.URL||e.webkitURL||e},n=t.createElementNS("http://www.w3.org/1999/xhtml","a"),a="download"in n,s=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},i=/constructor/i.test(e.HTMLElement)||e.safari,o=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},c=function(e){var t=function(){"string"==typeof e?r().revokeObjectURL(e):e.remove()};setTimeout(t,4e4)},l=function(e,t,r){t=[].concat(t);for(var n=t.length;n--;){var a=e["on"+t[n]];if("function"==typeof a)try{a.call(e,r||e)}catch(e){u(e)}}},h=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e},d=function(t,u,d){d||(t=h(t));var f,p=this,b=t.type,E="application/octet-stream"===b,g=function(){l(p,"writestart progress write writeend".split(" "))};if(p.readyState=p.INIT,a)return f=r().createObjectURL(t),void setTimeout(function(){n.href=f,n.download=u,s(n),g(),c(f),p.readyState=p.DONE});!function(){if((o||E&&i)&&e.FileReader){var n=new FileReader;return n.onloadend=function(){var t=o?n.result:n.result.replace(/^data:[^;]*;/,"data:attachment/file;");e.open(t,"_blank")||(e.location.href=t),t=void 0,p.readyState=p.DONE,g()},n.readAsDataURL(t),void(p.readyState=p.INIT)}if(f||(f=r().createObjectURL(t)),E)e.location.href=f;else{e.open(f,"_blank")||(e.location.href=f)}p.readyState=p.DONE,g(),c(f)}()},f=d.prototype,p=function(e,t,r){return new d(e,t||e.name||"download",r)};return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,r){return t=t||e.name||"download",r||(e=h(e)),navigator.msSaveOrOpenBlob(e,t)}:(f.abort=function(){},f.readyState=f.INIT=0,f.WRITING=1,f.DONE=2,f.error=f.onwritestart=f.onprogress=f.onwrite=f.onabort=f.onerror=f.onwriteend=null,p)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof module&&module.exports?module.exports.saveAs=pe:"undefined"!=typeof define&&null!==define&&null!==define.amd&&define("FileSaver.js",function(){return pe}),(N.isCordova||N.isMeteorServer||N.isNode)&&console.warn("It looks like you are using the browser version of AlaSQL. Please use the alasql.fs.js file instead."),T.utils.saveAs=pe}return new H("alasql"),T.use("alasql"),T});
\ No newline at end of file
diff --git a/src/424select.js b/src/424select.js
index a125803bf6..8196487bdd 100755
--- a/src/424select.js
+++ b/src/424select.js
@@ -15,7 +15,7 @@ function compileSelectStar(query, aliases, joinstar) {
ss = [],
columnIds = {};
- for (var alias in aliases) {
+ aliases.forEach(function(alias) {
// console.log(query.aliases[alias]);
// console.log(query,alias);
// console.log(query.aliases[alias].tableid);
@@ -119,8 +119,8 @@ function compileSelectStar(query, aliases, joinstar) {
}
// }
//console.log(87,{s:ss.join(','),sp:sp});
- }
- console.log(ss.join(','));
+ });
+
return {s: ss.join(','), sp: sp};
}
@@ -149,16 +149,14 @@ yy.Select.prototype.compileSelect1 = function(query, params) {
"'],p,params,alasql);";
} else if (col.tableid) {
//Copy all
- var aliases = [];
- aliases[col.tableid] = col.tableid;
- var ret = compileSelectStar(query, aliases, false);
+ var ret = compileSelectStar(query, [col.tableid], false);
if (ret.s) {
ss = ss.concat(ret.s);
}
sp += ret.sp;
} else {
// console.log('aliases', query.aliases);
- var ret = compileSelectStar(query, query.aliases, true); //query.aliases[alias].tableid);
+ var ret = compileSelectStar(query, Object.keys(query.aliases), true); //query.aliases[alias].tableid);
if (ret.s) {
ss = ss.concat(ret.s);
}
From 7492ce56ad091154f240a8a474f77fc7fb6a9ca1 Mon Sep 17 00:00:00 2001
From: Andrey Khaneev
Date: Thu, 2 May 2019 15:23:36 +0300
Subject: [PATCH 4/4] Fixed issue with multiple tables OUTER JOINER
---
dist/alasql-worker.js | 4 +--
dist/alasql-worker.min.js | 2 +-
dist/alasql.fs.js | 70 +++++++++++++++++-------------------
dist/alasql.js | 70 +++++++++++++++++-------------------
dist/alasql.min.js | 4 +--
src/39dojoin.js | 76 +++++++++++++++++++--------------------
test/test800.js | 9 +++++
test/test801.js | 55 ++++++++++++++++++++++++++++
8 files changed, 171 insertions(+), 119 deletions(-)
create mode 100644 test/test801.js
diff --git a/dist/alasql-worker.js b/dist/alasql-worker.js
index 4737febb2c..019f1499dd 100755
--- a/dist/alasql-worker.js
+++ b/dist/alasql-worker.js
@@ -1,7 +1,7 @@
-//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-df603f27undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
/*
@module alasql
-@version 0.4.11-develop-d00d3b02undefined
+@version 0.4.11-develop-df603f27undefined
AlaSQL - JavaScript SQL database
© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
diff --git a/dist/alasql-worker.min.js b/dist/alasql-worker.min.js
index ab6048961d..d94dfbe301 100755
--- a/dist/alasql-worker.min.js
+++ b/dist/alasql-worker.min.js
@@ -1,2 +1,2 @@
-//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-df603f27undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
!function(r,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():r.alasql=e()}(this,function(){function r(e,t,o){t=t||[],"function"==typeof t&&(scope=o,o=t,t=[]),"object"!=typeof t&&(t=[t]);var n=r.lastid++;r.buffer[n]=o,r.webworker.postMessage({id:n,sql:e,params:t})}if(r.options={},r.options.progress=function(){},isArray=function(r){return"[object Array]"===Object.prototype.toString.call(r)},r.promise=function(){throw new Error("Please include a Promise/A+ library")},"undefined"!=typeof Promise){var e=function(e,t,o,n){return new Promise(function(s,i){r(e,t,function(e,t){t?i(t):(o&&n&&!1!==r.options.progress&&r.options.progress(o,n),s(e))})})},t=function(r){if(!(r.length<1)){for(var t,o,n,s=[],i=0;i1){r("REQUIRE "+t.map(function(r){return'"'+r+'"'}).join(","),[],o)}}else if(!1===e)return void delete r.webworker}),r.lastid=0,r.buffer={},r.worker(),r});
\ No newline at end of file
diff --git a/dist/alasql.fs.js b/dist/alasql.fs.js
index c6d3016d65..06238f4d3f 100755
--- a/dist/alasql.fs.js
+++ b/dist/alasql.fs.js
@@ -1,7 +1,7 @@
-//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-df603f27undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
/*
@module alasql
-@version 0.4.11-develop-d00d3b02undefined
+@version 0.4.11-develop-df603f27undefined
AlaSQL - JavaScript SQL database
© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
@@ -142,7 +142,7 @@ var alasql = function(sql, params, cb, scope) {
Current version of alasql
@constant {string}
*/
-alasql.version = '0.4.11-develop-d00d3b02undefined';
+alasql.version = '0.4.11-develop-df603f27undefined';
/**
Debug flag
@@ -7576,49 +7576,45 @@ function doJoin(query, scope, h) {
// STEP 2
- if (h + 1 < query.sources.length) {
- if (
- nextsource.joinmode == 'OUTER' ||
- nextsource.joinmode == 'RIGHT' ||
- nextsource.joinmode == 'ANTI'
- ) {
- scope[source.alias] = {};
-
- var j = 0;
- var jlen = nextsource.data.length;
- var dataw;
-
- while (
- (dataw = nextsource.data[j]) ||
- (nextsource.getfn && (dataw = nextsource.getfn(j))) ||
- j < jlen
+ if (h == 0) {
+ for (var nh = h + 1; nh < query.sources.length; nh++) {
+ if (
+ nextsource.joinmode == 'OUTER' ||
+ nextsource.joinmode == 'RIGHT' ||
+ nextsource.joinmode == 'ANTI'
) {
- if (nextsource.getfn && !nextsource.dontcache) {
- nextsource.data[j] = dataw;
- }
+ scope[source.alias] = {};
- if (dataw._rightjoin) {
- delete dataw._rightjoin;
- } else {
- // delete dataw._rightjoin;
+ var j = 0;
+ var jlen = nextsource.data.length;
+ var dataw;
- if (h == 0) {
- scope[nextsource.alias] = dataw;
- doJoin(query, scope, h + 2);
+ while (
+ (dataw = nextsource.data[j]) ||
+ (nextsource.getfn && (dataw = nextsource.getfn(j))) ||
+ j < jlen
+ ) {
+ if (nextsource.getfn && !nextsource.dontcache) {
+ nextsource.data[j] = dataw;
+ }
+
+ if (dataw._rightjoin) {
+ delete dataw._rightjoin;
} else {
- //scope[nextsource.alias] = dataw;
- //doJoin(query, scope, h+2);
+ // delete dataw._rightjoin;
+ scope[nextsource.alias] = dataw;
+ doJoin(query, scope, nh + 1);
}
+ j++;
}
- j++;
- }
- // debugger;
- } else {
+ // debugger;
+ } else {
+ }
+ source = query.sources[nh];
+ nextsource = query.sources[nh + 1];
}
- } else {
-
}
scope[tableid] = undefined;
diff --git a/dist/alasql.js b/dist/alasql.js
index 6ecedb60f4..b89941093d 100755
--- a/dist/alasql.js
+++ b/dist/alasql.js
@@ -1,7 +1,7 @@
-//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+//! AlaSQL v0.4.11-develop-df603f27undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
/*
@module alasql
-@version 0.4.11-develop-d00d3b02undefined
+@version 0.4.11-develop-df603f27undefined
AlaSQL - JavaScript SQL database
© 2014-2016 Andrey Gershun & Mathias Rangel Wulff
@@ -142,7 +142,7 @@ var alasql = function(sql, params, cb, scope) {
Current version of alasql
@constant {string}
*/
-alasql.version = '0.4.11-develop-d00d3b02undefined';
+alasql.version = '0.4.11-develop-df603f27undefined';
/**
Debug flag
@@ -7571,49 +7571,45 @@ function doJoin(query, scope, h) {
// STEP 2
- if (h + 1 < query.sources.length) {
- if (
- nextsource.joinmode == 'OUTER' ||
- nextsource.joinmode == 'RIGHT' ||
- nextsource.joinmode == 'ANTI'
- ) {
- scope[source.alias] = {};
-
- var j = 0;
- var jlen = nextsource.data.length;
- var dataw;
-
- while (
- (dataw = nextsource.data[j]) ||
- (nextsource.getfn && (dataw = nextsource.getfn(j))) ||
- j < jlen
+ if (h == 0) {
+ for (var nh = h + 1; nh < query.sources.length; nh++) {
+ if (
+ nextsource.joinmode == 'OUTER' ||
+ nextsource.joinmode == 'RIGHT' ||
+ nextsource.joinmode == 'ANTI'
) {
- if (nextsource.getfn && !nextsource.dontcache) {
- nextsource.data[j] = dataw;
- }
+ scope[source.alias] = {};
- if (dataw._rightjoin) {
- delete dataw._rightjoin;
- } else {
- // delete dataw._rightjoin;
+ var j = 0;
+ var jlen = nextsource.data.length;
+ var dataw;
- if (h == 0) {
- scope[nextsource.alias] = dataw;
- doJoin(query, scope, h + 2);
+ while (
+ (dataw = nextsource.data[j]) ||
+ (nextsource.getfn && (dataw = nextsource.getfn(j))) ||
+ j < jlen
+ ) {
+ if (nextsource.getfn && !nextsource.dontcache) {
+ nextsource.data[j] = dataw;
+ }
+
+ if (dataw._rightjoin) {
+ delete dataw._rightjoin;
} else {
- //scope[nextsource.alias] = dataw;
- //doJoin(query, scope, h+2);
+ // delete dataw._rightjoin;
+ scope[nextsource.alias] = dataw;
+ doJoin(query, scope, nh + 1);
}
+ j++;
}
- j++;
- }
- // debugger;
- } else {
+ // debugger;
+ } else {
+ }
+ source = query.sources[nh];
+ nextsource = query.sources[nh + 1];
}
- } else {
-
}
scope[tableid] = undefined;
diff --git a/dist/alasql.min.js b/dist/alasql.min.js
index cced5a035a..0e3aeced40 100755
--- a/dist/alasql.min.js
+++ b/dist/alasql.min.js
@@ -1,5 +1,5 @@
-//! AlaSQL v0.4.11-develop-d00d3b02undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
-"use strict";!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.alasql=t()}(this,function(){function e(e){return"(y="+e+",y===y?y:undefined)"}function t(e,t){return"(y="+e+',typeof y=="undefined"?undefined:'+t+")"}function r(){return!0}function n(){}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")&&parseInt(e.split("msie")[1])}function s(e,t,r){function n(e,r,a){var o,u,c,l=e[r];if(l.selid){if("PATH"===l.selid){for(var h=[{node:a,stack:[]}],d={},f=T.databases[T.useid].objects;h.length>0;){var p=h.shift(),b=p.node,E=p.stack,c=n(l.args,0,b);if(c.length>0){if(r+1+1>e.length)return E;var g=[];return E&&E.length>0&&E.forEach(function(t){g=g.concat(n(e,r+1,t))}),g}void 0===d[b.$id]&&(d[b.$id]=!0,b.$out&&b.$out.length>0&&b.$out.forEach(function(e){var t=f[e],r=E.concat(t);r.push(f[t.$out[0]]),h.push({node:f[t.$out[0]],stack:r})}))}return[]}if("NOT"===l.selid){var u=n(l.args,0,a);return u.length>0?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("DISTINCT"===l.selid){var u;if(u=void 0===l.args||0===l.args.length?P(a):n(l.args,0,a),0===u.length)return[];var m=P(u);return r+1+1>e.length?m:n(e,r+1,m)}if("AND"===l.selid){var m=!0;return l.args.forEach(function(e){m=m&&n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("OR"===l.selid){var m=!1;return l.args.forEach(function(e){m=m||n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("ALL"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("ANY"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?[u[0]]:n(e,r+1,[u[0]])}if("UNIONALL"===l.selid){var u=[];return l.args.forEach(function(e){u=u.concat(n(e,0,a))}),0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("UNION"===l.selid){var u=[];l.args.forEach(function(e){u=u.concat(n(e,0,a))});var u=P(u);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("IF"===l.selid){var u=n(l.args,0,a);return 0===u.length?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("REPEAT"===l.selid){var v,S,A=l.args[0].value;S=l.args[1]?l.args[1].value:A,l.args[2]&&(v=l.args[2].variable);var y=[];if(0===A&&(r+1+1>e.length?y=[a]:(v&&(T.vars[v]=0),y=y.concat(n(e,r+1,a)))),S>0)for(var N=[{value:a,lvl:1}],C=0;N.length>0;){var u=N[0];if(N.shift(),u.lvl<=S){v&&(T.vars[v]=u.lvl);var R=n(l.sels,0,u.value);R.forEach(function(e){N.push({value:e,lvl:u.lvl+1})}),u.lvl>=A&&(r+1+1>e.length?y=y.concat(R):R.forEach(function(t){y=y.concat(n(e,r+1,t))}))}if(++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("OF"===l.selid){if(r+1+1>e.length)return[a];var O=[];return Object.keys(a).forEach(function(t){T.vars[l.args[0].variable]=t,O=O.concat(n(e,r+1,a[t]))}),O}if("TO"===l.selid){var w=T.vars[l.args[0]],I=[];if(I=void 0!==w?w.slice(0):[],I.push(a),r+1+1>e.length)return[a];T.vars[l.args[0]]=I;var O=n(e,r+1,a);return T.vars[l.args[0]]=w,O}if("ARRAY"===l.selid){var u=n(l.args,0,a);return u.length>0?(o=u,r+1+1>e.length?[o]:n(e,r+1,o)):[]}if("SUM"===l.selid){var u=n(l.args,0,a);if(!(u.length>0))return[];var o=u.reduce(function(e,t){return e+t},0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("AVG"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.reduce(function(e,t){return e+t},0)/u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("COUNT"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("FIRST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[0],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("LAST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[u.length-1],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("MIN"===l.selid){if(u=n(l.args,0,a),0===u.length)return[];var o=u.reduce(function(e,t){return Math.min(e,t)},1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("MAX"===l.selid){var u=n(l.args,0,a);if(0===u.length)return[];var o=u.reduce(function(e,t){return Math.max(e,t)},-1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("PLUS"===l.selid){var y=[],N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N.shift();if(u=n(l.args,0,u),N=N.concat(u),r+1+1>e.length?y=y.concat(u):u.forEach(function(t){var a=n(e,r+1,t);y=y.concat(a)}),++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("STAR"===l.selid){var y=[];y=n(e,r+1,a);var N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N[0];if(N.shift(),u=n(l.args,0,u),N=N.concat(u),r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),++C>1e5)throw new Error("Loop brake. Number of iterations = "+C)}return y}if("QUESTION"===l.selid){var y=[];y=y.concat(n(e,r+1,a));var u=n(l.args,0,a);return r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),y}if("WITH"!==l.selid){if("ROOT"===l.selid)return r+1+1>e.length?[a]:n(e,r+1,s);throw new Error("Wrong selector "+l.selid)}var u=n(l.args,0,a);if(0===u.length)return[];var c={status:1,values:u}}else{if(!l.srchid)throw new Error("Selector not found");var c=T.srch[l.srchid.toUpperCase()](a,l.args,i,t)}void 0===c&&(c={status:1,values:[a]});var m=[];if(1===c.status){var x=c.values;if(r+1+1>e.length)m=x;else for(var C=0;C0&&(o&&o[0]&&"PROP"===o[0].srchid&&o[0].args&&o[0].args[0]&&("XML"===o[0].args[0].toUpperCase()?(i.mode="XML",o.shift()):"HTML"===o[0].args[0].toUpperCase()?(i.mode="HTML",o.shift()):"JSON"===o[0].args[0].toUpperCase()&&(i.mode="JSON",o.shift())),o.length>0&&"VALUE"===o[0].srchid&&(i.value=!0,o.shift())),this.from instanceof X.Column){var u=this.from.databaseid||e;s=T.databases[u].tables[this.from.columnid].data}else if(this.from instanceof X.FuncValue&&T.from[this.from.funcid.toUpperCase()]){var c=this.from.args.map(function(e){var r=e.toJS();return new Function("params,alasql","var y;return "+r).bind(this)(t,T)});s=T.from[this.from.funcid.toUpperCase()].apply(this,c)}else if(void 0===this.from)s=T.databases[e].objects;else{var l=new Function("params,alasql","var y;return "+this.from.toJS());s=l(t,T),"object"==typeof Mongo&&"object"!=typeof Mongo.Collection&&s instanceof Mongo.Collection&&(s=s.find().fetch())}if(a=void 0!==o&&o.length>0?n(o,0,s):s,this.into){var h,d;void 0!==this.into.args[0]&&(h=new Function("params,alasql","var y;return "+this.into.args[0].toJS())(t,T)),void 0!==this.into.args[1]&&(d=new Function("params,alasql","var y;return "+this.into.args[1].toJS())(t,T)),a=T.into[this.into.funcid.toUpperCase()](h,d,a,[],r)}else i.value&&a.length>0&&(a=a[0]),r&&(a=r(a));return a}function i(e,t,r,n,a){e.sources.length;e.sourceslen=e.sources.length;var s=e.sourceslen;e.query=e,e.A=n,e.B=a,e.cb=r,e.oldscope=t,e.queriesfn&&(e.sourceslen+=e.queriesfn.length,s+=e.queriesfn.length,e.queriesdata=[],e.queriesfn.forEach(function(t,r){t.query.params=e.params,o([],-r-1,e)}));var i;i=t?_(t):{},e.scope=i;var c;return e.sources.forEach(function(t,r){t.query=e;var n=t.datafn(e,e.params,o,r,T);void 0!==n&&((e.intofn||e.intoallfn)&&Array.isArray(n)&&(n=n.length),c=n),t.queriesdata=e.queriesdata}),0!=e.sources.length&&0!==s||(c=u(e)),c}function o(e,t,r){if(t>=0){var n=r.sources[t];n.data=e,"function"==typeof n.data&&(n.getfn=n.data,n.dontcache=n.getfn.dontcache,"OUTER"!=n.joinmode&&"RIGHT"!=n.joinmode&&"ANTI"!=n.joinmode||(n.dontcache=!1),n.data={})}else r.queriesdata[-t-1]=G(e);if(!(--r.sourceslen>0))return u(r)}function u(e){var t,r=e.scope;z(e),e.data=[],e.xgroups={},e.groups=[];if(h(e,r,0),e.groupfn){if(e.data=[],0===e.groups.length){var n={};e.selectGroup.length>0&&e.selectGroup.forEach(function(e){"COUNT"==e.aggregatorid||"SUM"==e.aggregatorid?n[e.nick]=0:n[e.nick]=void 0}),e.groups=[n]}if(e.aggrKeys.length>0){var a="";e.aggrKeys.forEach(function(e){a+="g['"+e.nick+"']=alasql.aggr['"+e.funcid+"'](undefined,g['"+e.nick+"'],3);"});var s=new Function("g,params,alasql","var y;"+a)}for(var i=0,o=e.groups.length;i0){var g=e.removeKeys;if((t=g.length)>0)for(o=e.data.length,i=0;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return g.forEach(function(r){e.columnid==r&&(t=!0)}),!t}))}if(void 0!==e.removeLikeKeys&&e.removeLikeKeys.length>0){for(var m=e.removeLikeKeys,i=0,o=e.data.length;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return m.forEach(function(r){T.utils.like(r,e.columnid)&&(t=!0)}),!t}))}if(e.pivotfn&&e.pivotfn(),e.unpivotfn&&e.unpivotfn(),e.intoallfn){var S=e.intoallfn(e.columns,e.cb,e.params,e.alasql);return S}if(e.intofn){for(o=e.data.length,i=0;i=e.sources.length)e.wherefn(t,e.params,T)&&(e.groupfn?e.groupfn(t,e.params,T):e.data.push(e.selectfn(t,e.params,T)));else if(e.sources[r].applyselect){var n=e.sources[r];n.applyselect(e.params,function(a){if(a.length>0)for(var s=0;s0){for(var a={},s=Math.min(t.length,T.options.columnlookup||10)-1;0<=s;s--)for(var i in t[s])a[i]=!0;n=Object.keys(a).map(function(e){return{columnid:e}})}else n=[];if("VALUE"===r)if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0],t=t[0][i]}else t=void 0;else if("ROW"===r)if(t.length>0){var i,o=[];for(var i in t[0])o.push(t[0][i]);t=o}else t=void 0;else if("COLUMN"===r){var u=[];if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0)i=n[0].columnid,d=n[1].columnid;else{var f=Object.keys(t[0]);i=f[0],d=f[1]}for(var s=0,c=t.length;s0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0?i.forEach(function(i){if(r&&"underscore"==T.options.joinstar)a.push("'"+t+"_"+i.columnid+"':p['"+t+"']['"+i.columnid+"']");else if(r&&"json"==T.options.joinstar)n+="r['"+t+"']['"+i.columnid+"']=p['"+t+"']['"+i.columnid+"'];";else{var o="p['"+t+"']['"+i.columnid+"']";if(s[i.columnid]){var u=o+" !== undefined ? "+o+" : "+s[i.columnid].value;a[s[i.columnid].id]=s[i.columnid].key+u,s[i.columnid].value=u}else{var c="'"+i.columnid+"':";a.push(c+o),s[i.columnid]={id:a.length-1,value:o,key:c}}}e.selectColumns[C(i.columnid)]=!0;var l={columnid:i.columnid,dbtypeid:i.dbtypeid,dbsize:i.dbsize,dbprecision:i.dbprecision,dbenum:i.dbenum};e.columns.push(l),e.xcolumns[l.columnid]=l}):(n+='var w=p["'+t+'"];for(var k in w){r[k]=w[k]};',e.dirtyColumns=!0)}),{s:a.join(","),sp:n}}function p(e,t){if(Array.isArray(e)){for(var r=[[]],n=0;n",t+="table {border:1px black solid; border-collapse: collapse; border-spacing: 0px;}",t+="td,th {border:1px black solid; padding-left:5px; padding-right:5px}",t+="th {background-color: #EEE}",t+="",t+="";var r=[];for(var n in e[0])r.push(n);t+="#",r.forEach(function(e){t+=" "+e});for(var a=0,s=e.length;a"+(a+1),r.forEach(function(r){t+=" ",e[a][r]==+e[a][r]?(t+='',void 0===e[a][r]?t+="NULL":t+=e[a][r],t+="
"):void 0===e[a][r]?t+="NULL":"string"==typeof e[a][r]?t+=e[a][r]:t+=oe(e[a][r])});t+="
"}else t+=""+oe(e)+"
";return t}function g(e,t,r){if(!(r<=0)){var n=t-e.scrollTop,a=n/r*10;setTimeout(function(){e.scrollTop!==t&&(e.scrollTop=e.scrollTop+a,g(e,t,r-10))},10)}}function m(e,t,r,n,a,s){function i(e){for(var t="",r=0,n=10240;r0&&d[d.length-1]&&0==Object.keys(d[d.length-1]).length&&d.pop(),n&&(d=n(d,a,s))},function(e){throw e})}function S(e){function t(){if(i(/^<\?xml\s*/)){for(var e={attributes:{}};!o()&&!u("?>");){var t=a();if(!t)return e;e.attributes[t.name]=t.value}return i(/\?>\s*/),e}}function r(){var e=i(/^<([\w-:.]+)\s*/);if(e){for(var t={name:e[1],attributes:{},children:[]};!(o()||u(">")||u("?>")||u("/>"));){var s=a();if(!s)return t;t.attributes[s.name]=s.value}if(i(/^\s*\/>\s*/))return t;i(/\??>\s*/),t.content=n();for(var c;c=r();)t.children.push(c);return i(/^<\/[\w-:.]+>\s*/),t}}function n(){var e=i(/^([^<]*)/);return e?e[1]:""}function a(){var e=i(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(e)return{name:e[1],value:s(e[2])}}function s(e){return e.replace(/^['"]|['"]$/g,"")}function i(t){var r=e.match(t);if(r)return e=e.slice(r[0].length),r}function o(){return 0==e.length}function u(t){return 0==e.indexOf(t)}return e=e.trim(),e=e.replace(//g,""),function(){return{declaration:t(),root:r()}}()}var T=function(e,t,r,n){if(t=t||[],"function"!=typeof importScripts&&T.webworker){var a=T.lastid++;return T.buffer[a]=r,void T.webworker.postMessage({id:a,sql:e,params:t})}return 0===arguments.length?new X.Select({columns:[new X.Column({columnid:"*"})],from:[new X.ParamValue({param:0})]}):1===arguments.length&&e.constructor===Array?T.promise(e):("function"==typeof t&&(n=r,r=t,t=[]),"object"!=typeof t&&(t=[t]),"string"==typeof e&&"#"===e[0]&&"object"==typeof document?e=document.querySelector(e).textContent:"object"==typeof e&&e instanceof HTMLElement?e=e.textContent:"function"==typeof e&&(e=e.toString(),e=(/\/\*([\S\s]+)\*\//m.exec(e)||["","Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function."])[1]),T.exec(e,t,r,n))};T.version="0.4.11-develop-d00d3b02undefined",T.debug=void 0;var A=function(){return null},y=function(){function e(){this.yy={}}var t=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r
+//! AlaSQL v0.4.11-develop-df603f27undefined | © 2014-2018 Andrey Gershun & Mathias Rangel Wulff | License: MIT
+"use strict";!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.alasql=t()}(this,function(){function e(e){return"(y="+e+",y===y?y:undefined)"}function t(e,t){return"(y="+e+',typeof y=="undefined"?undefined:'+t+")"}function r(){return!0}function n(){}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")&&parseInt(e.split("msie")[1])}function s(e,t,r){function n(e,r,a){var o,u,c,l=e[r];if(l.selid){if("PATH"===l.selid){for(var h=[{node:a,stack:[]}],d={},f=T.databases[T.useid].objects;h.length>0;){var p=h.shift(),b=p.node,E=p.stack,c=n(l.args,0,b);if(c.length>0){if(r+1+1>e.length)return E;var g=[];return E&&E.length>0&&E.forEach(function(t){g=g.concat(n(e,r+1,t))}),g}void 0===d[b.$id]&&(d[b.$id]=!0,b.$out&&b.$out.length>0&&b.$out.forEach(function(e){var t=f[e],r=E.concat(t);r.push(f[t.$out[0]]),h.push({node:f[t.$out[0]],stack:r})}))}return[]}if("NOT"===l.selid){var u=n(l.args,0,a);return u.length>0?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("DISTINCT"===l.selid){var u;if(u=void 0===l.args||0===l.args.length?P(a):n(l.args,0,a),0===u.length)return[];var m=P(u);return r+1+1>e.length?m:n(e,r+1,m)}if("AND"===l.selid){var m=!0;return l.args.forEach(function(e){m=m&&n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("OR"===l.selid){var m=!1;return l.args.forEach(function(e){m=m||n(e,0,a).length>0}),m?r+1+1>e.length?[a]:n(e,r+1,a):[]}if("ALL"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("ANY"===l.selid){var u=n(l.args[0],0,a);return 0===u.length?[]:r+1+1>e.length?[u[0]]:n(e,r+1,[u[0]])}if("UNIONALL"===l.selid){var u=[];return l.args.forEach(function(e){u=u.concat(n(e,0,a))}),0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("UNION"===l.selid){var u=[];l.args.forEach(function(e){u=u.concat(n(e,0,a))});var u=P(u);return 0===u.length?[]:r+1+1>e.length?u:n(e,r+1,u)}if("IF"===l.selid){var u=n(l.args,0,a);return 0===u.length?[]:r+1+1>e.length?[a]:n(e,r+1,a)}if("REPEAT"===l.selid){var v,S,A=l.args[0].value;S=l.args[1]?l.args[1].value:A,l.args[2]&&(v=l.args[2].variable);var y=[];if(0===A&&(r+1+1>e.length?y=[a]:(v&&(T.vars[v]=0),y=y.concat(n(e,r+1,a)))),S>0)for(var N=[{value:a,lvl:1}],C=0;N.length>0;){var u=N[0];if(N.shift(),u.lvl<=S){v&&(T.vars[v]=u.lvl);var R=n(l.sels,0,u.value);R.forEach(function(e){N.push({value:e,lvl:u.lvl+1})}),u.lvl>=A&&(r+1+1>e.length?y=y.concat(R):R.forEach(function(t){y=y.concat(n(e,r+1,t))}))}if(++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("OF"===l.selid){if(r+1+1>e.length)return[a];var O=[];return Object.keys(a).forEach(function(t){T.vars[l.args[0].variable]=t,O=O.concat(n(e,r+1,a[t]))}),O}if("TO"===l.selid){var w=T.vars[l.args[0]],I=[];if(I=void 0!==w?w.slice(0):[],I.push(a),r+1+1>e.length)return[a];T.vars[l.args[0]]=I;var O=n(e,r+1,a);return T.vars[l.args[0]]=w,O}if("ARRAY"===l.selid){var u=n(l.args,0,a);return u.length>0?(o=u,r+1+1>e.length?[o]:n(e,r+1,o)):[]}if("SUM"===l.selid){var u=n(l.args,0,a);if(!(u.length>0))return[];var o=u.reduce(function(e,t){return e+t},0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("AVG"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.reduce(function(e,t){return e+t},0)/u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("COUNT"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u.length,r+1+1>e.length?[o]:n(e,r+1,o)):[];if("FIRST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[0],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("LAST"===l.selid)return u=n(l.args,0,a),u.length>0?(o=u[u.length-1],r+1+1>e.length?[o]:n(e,r+1,o)):[];if("MIN"===l.selid){if(u=n(l.args,0,a),0===u.length)return[];var o=u.reduce(function(e,t){return Math.min(e,t)},1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("MAX"===l.selid){var u=n(l.args,0,a);if(0===u.length)return[];var o=u.reduce(function(e,t){return Math.max(e,t)},-1/0);return r+1+1>e.length?[o]:n(e,r+1,o)}if("PLUS"===l.selid){var y=[],N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N.shift();if(u=n(l.args,0,u),N=N.concat(u),r+1+1>e.length?y=y.concat(u):u.forEach(function(t){var a=n(e,r+1,t);y=y.concat(a)}),++C>1e5)throw new Error("Security brake. Number of iterations = "+C)}return y}if("STAR"===l.selid){var y=[];y=n(e,r+1,a);var N=n(l.args,0,a).slice();r+1+1>e.length?y=y.concat(N):N.forEach(function(t){y=y.concat(n(e,r+1,t))});for(var C=0;N.length>0;){var u=N[0];if(N.shift(),u=n(l.args,0,u),N=N.concat(u),r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),++C>1e5)throw new Error("Loop brake. Number of iterations = "+C)}return y}if("QUESTION"===l.selid){var y=[];y=y.concat(n(e,r+1,a));var u=n(l.args,0,a);return r+1+1<=e.length&&u.forEach(function(t){y=y.concat(n(e,r+1,t))}),y}if("WITH"!==l.selid){if("ROOT"===l.selid)return r+1+1>e.length?[a]:n(e,r+1,s);throw new Error("Wrong selector "+l.selid)}var u=n(l.args,0,a);if(0===u.length)return[];var c={status:1,values:u}}else{if(!l.srchid)throw new Error("Selector not found");var c=T.srch[l.srchid.toUpperCase()](a,l.args,i,t)}void 0===c&&(c={status:1,values:[a]});var m=[];if(1===c.status){var x=c.values;if(r+1+1>e.length)m=x;else for(var C=0;C0&&(o&&o[0]&&"PROP"===o[0].srchid&&o[0].args&&o[0].args[0]&&("XML"===o[0].args[0].toUpperCase()?(i.mode="XML",o.shift()):"HTML"===o[0].args[0].toUpperCase()?(i.mode="HTML",o.shift()):"JSON"===o[0].args[0].toUpperCase()&&(i.mode="JSON",o.shift())),o.length>0&&"VALUE"===o[0].srchid&&(i.value=!0,o.shift())),this.from instanceof X.Column){var u=this.from.databaseid||e;s=T.databases[u].tables[this.from.columnid].data}else if(this.from instanceof X.FuncValue&&T.from[this.from.funcid.toUpperCase()]){var c=this.from.args.map(function(e){var r=e.toJS();return new Function("params,alasql","var y;return "+r).bind(this)(t,T)});s=T.from[this.from.funcid.toUpperCase()].apply(this,c)}else if(void 0===this.from)s=T.databases[e].objects;else{var l=new Function("params,alasql","var y;return "+this.from.toJS());s=l(t,T),"object"==typeof Mongo&&"object"!=typeof Mongo.Collection&&s instanceof Mongo.Collection&&(s=s.find().fetch())}if(a=void 0!==o&&o.length>0?n(o,0,s):s,this.into){var h,d;void 0!==this.into.args[0]&&(h=new Function("params,alasql","var y;return "+this.into.args[0].toJS())(t,T)),void 0!==this.into.args[1]&&(d=new Function("params,alasql","var y;return "+this.into.args[1].toJS())(t,T)),a=T.into[this.into.funcid.toUpperCase()](h,d,a,[],r)}else i.value&&a.length>0&&(a=a[0]),r&&(a=r(a));return a}function i(e,t,r,n,a){e.sources.length;e.sourceslen=e.sources.length;var s=e.sourceslen;e.query=e,e.A=n,e.B=a,e.cb=r,e.oldscope=t,e.queriesfn&&(e.sourceslen+=e.queriesfn.length,s+=e.queriesfn.length,e.queriesdata=[],e.queriesfn.forEach(function(t,r){t.query.params=e.params,o([],-r-1,e)}));var i;i=t?_(t):{},e.scope=i;var c;return e.sources.forEach(function(t,r){t.query=e;var n=t.datafn(e,e.params,o,r,T);void 0!==n&&((e.intofn||e.intoallfn)&&Array.isArray(n)&&(n=n.length),c=n),t.queriesdata=e.queriesdata}),0!=e.sources.length&&0!==s||(c=u(e)),c}function o(e,t,r){if(t>=0){var n=r.sources[t];n.data=e,"function"==typeof n.data&&(n.getfn=n.data,n.dontcache=n.getfn.dontcache,"OUTER"!=n.joinmode&&"RIGHT"!=n.joinmode&&"ANTI"!=n.joinmode||(n.dontcache=!1),n.data={})}else r.queriesdata[-t-1]=G(e);if(!(--r.sourceslen>0))return u(r)}function u(e){var t,r=e.scope;z(e),e.data=[],e.xgroups={},e.groups=[];if(h(e,r,0),e.groupfn){if(e.data=[],0===e.groups.length){var n={};e.selectGroup.length>0&&e.selectGroup.forEach(function(e){"COUNT"==e.aggregatorid||"SUM"==e.aggregatorid?n[e.nick]=0:n[e.nick]=void 0}),e.groups=[n]}if(e.aggrKeys.length>0){var a="";e.aggrKeys.forEach(function(e){a+="g['"+e.nick+"']=alasql.aggr['"+e.funcid+"'](undefined,g['"+e.nick+"'],3);"});var s=new Function("g,params,alasql","var y;"+a)}for(var i=0,o=e.groups.length;i0){var g=e.removeKeys;if((t=g.length)>0)for(o=e.data.length,i=0;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return g.forEach(function(r){e.columnid==r&&(t=!0)}),!t}))}if(void 0!==e.removeLikeKeys&&e.removeLikeKeys.length>0){for(var m=e.removeLikeKeys,i=0,o=e.data.length;i0&&(e.columns=e.columns.filter(function(e){var t=!1;return m.forEach(function(r){T.utils.like(r,e.columnid)&&(t=!0)}),!t}))}if(e.pivotfn&&e.pivotfn(),e.unpivotfn&&e.unpivotfn(),e.intoallfn){var S=e.intoallfn(e.columns,e.cb,e.params,e.alasql);return S}if(e.intofn){for(o=e.data.length,i=0;i=e.sources.length)e.wherefn(t,e.params,T)&&(e.groupfn?e.groupfn(t,e.params,T):e.data.push(e.selectfn(t,e.params,T)));else if(e.sources[r].applyselect){var n=e.sources[r];n.applyselect(e.params,function(a){if(a.length>0)for(var s=0;s0){for(var a={},s=Math.min(t.length,T.options.columnlookup||10)-1;0<=s;s--)for(var i in t[s])a[i]=!0;n=Object.keys(a).map(function(e){return{columnid:e}})}else n=[];if("VALUE"===r)if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0],t=t[0][i]}else t=void 0;else if("ROW"===r)if(t.length>0){var i,o=[];for(var i in t[0])o.push(t[0][i]);t=o}else t=void 0;else if("COLUMN"===r){var u=[];if(t.length>0){var i;i=n&&n.length>0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0)i=n[0].columnid,d=n[1].columnid;else{var f=Object.keys(t[0]);i=f[0],d=f[1]}for(var s=0,c=t.length;s0?n[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;s0?i.forEach(function(i){if(r&&"underscore"==T.options.joinstar)a.push("'"+t+"_"+i.columnid+"':p['"+t+"']['"+i.columnid+"']");else if(r&&"json"==T.options.joinstar)n+="r['"+t+"']['"+i.columnid+"']=p['"+t+"']['"+i.columnid+"'];";else{var o="p['"+t+"']['"+i.columnid+"']";if(s[i.columnid]){var u=o+" !== undefined ? "+o+" : "+s[i.columnid].value;a[s[i.columnid].id]=s[i.columnid].key+u,s[i.columnid].value=u}else{var c="'"+i.columnid+"':";a.push(c+o),s[i.columnid]={id:a.length-1,value:o,key:c}}}e.selectColumns[C(i.columnid)]=!0;var l={columnid:i.columnid,dbtypeid:i.dbtypeid,dbsize:i.dbsize,dbprecision:i.dbprecision,dbenum:i.dbenum};e.columns.push(l),e.xcolumns[l.columnid]=l}):(n+='var w=p["'+t+'"];for(var k in w){r[k]=w[k]};',e.dirtyColumns=!0)}),{s:a.join(","),sp:n}}function p(e,t){if(Array.isArray(e)){for(var r=[[]],n=0;n",t+="table {border:1px black solid; border-collapse: collapse; border-spacing: 0px;}",t+="td,th {border:1px black solid; padding-left:5px; padding-right:5px}",t+="th {background-color: #EEE}",t+="",t+="";var r=[];for(var n in e[0])r.push(n);t+="#",r.forEach(function(e){t+=" "+e});for(var a=0,s=e.length;a"+(a+1),r.forEach(function(r){t+=" ",e[a][r]==+e[a][r]?(t+='',void 0===e[a][r]?t+="NULL":t+=e[a][r],t+="
"):void 0===e[a][r]?t+="NULL":"string"==typeof e[a][r]?t+=e[a][r]:t+=oe(e[a][r])});t+="
"}else t+=""+oe(e)+"
";return t}function g(e,t,r){if(!(r<=0)){var n=t-e.scrollTop,a=n/r*10;setTimeout(function(){e.scrollTop!==t&&(e.scrollTop=e.scrollTop+a,g(e,t,r-10))},10)}}function m(e,t,r,n,a,s){function i(e){for(var t="",r=0,n=10240;r0&&d[d.length-1]&&0==Object.keys(d[d.length-1]).length&&d.pop(),n&&(d=n(d,a,s))},function(e){throw e})}function S(e){function t(){if(i(/^<\?xml\s*/)){for(var e={attributes:{}};!o()&&!u("?>");){var t=a();if(!t)return e;e.attributes[t.name]=t.value}return i(/\?>\s*/),e}}function r(){var e=i(/^<([\w-:.]+)\s*/);if(e){for(var t={name:e[1],attributes:{},children:[]};!(o()||u(">")||u("?>")||u("/>"));){var s=a();if(!s)return t;t.attributes[s.name]=s.value}if(i(/^\s*\/>\s*/))return t;i(/\??>\s*/),t.content=n();for(var c;c=r();)t.children.push(c);return i(/^<\/[\w-:.]+>\s*/),t}}function n(){var e=i(/^([^<]*)/);return e?e[1]:""}function a(){var e=i(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(e)return{name:e[1],value:s(e[2])}}function s(e){return e.replace(/^['"]|['"]$/g,"")}function i(t){var r=e.match(t);if(r)return e=e.slice(r[0].length),r}function o(){return 0==e.length}function u(t){return 0==e.indexOf(t)}return e=e.trim(),e=e.replace(//g,""),function(){return{declaration:t(),root:r()}}()}var T=function(e,t,r,n){if(t=t||[],"function"!=typeof importScripts&&T.webworker){var a=T.lastid++;return T.buffer[a]=r,void T.webworker.postMessage({id:a,sql:e,params:t})}return 0===arguments.length?new X.Select({columns:[new X.Column({columnid:"*"})],from:[new X.ParamValue({param:0})]}):1===arguments.length&&e.constructor===Array?T.promise(e):("function"==typeof t&&(n=r,r=t,t=[]),"object"!=typeof t&&(t=[t]),"string"==typeof e&&"#"===e[0]&&"object"==typeof document?e=document.querySelector(e).textContent:"object"==typeof e&&e instanceof HTMLElement?e=e.textContent:"function"==typeof e&&(e=e.toString(),e=(/\/\*([\S\s]+)\*\//m.exec(e)||["","Function given as SQL. Plese Provide SQL string or have a /* ... */ syle comment with SQL in the function."])[1]),T.exec(e,t,r,n))};T.version="0.4.11-develop-df603f27undefined",T.debug=void 0;var A=function(){return null},y=function(){function e(){this.yy={}}var t=function(e,t,r,n){for(r=r||{},n=e.length;n--;r[e[n]]=t);return r
},r=[2,13],n=[1,104],a=[1,102],s=[1,103],i=[1,6],o=[1,42],u=[1,79],c=[1,76],l=[1,94],h=[1,93],d=[1,69],f=[1,101],p=[1,85],b=[1,64],E=[1,71],g=[1,84],m=[1,66],v=[1,70],S=[1,68],A=[1,61],y=[1,74],N=[1,62],C=[1,67],R=[1,83],w=[1,77],I=[1,86],x=[1,87],D=[1,81],k=[1,82],L=[1,80],$=[1,88],M=[1,89],U=[1,90],_=[1,91],F=[1,92],P=[1,98],q=[1,65],G=[1,78],V=[1,72],B=[1,96],j=[1,97],H=[1,63],J=[1,73],Y=[1,108],W=[1,107],X=[10,306,602,764],K=[10,306,310,602,764],Q=[1,115],z=[1,116],Z=[1,117],ee=[1,118],te=[1,119],re=[130,353,410],ne=[1,127],ae=[1,126],se=[1,134],ie=[1,164],oe=[1,175],ue=[1,178],ce=[1,173],le=[1,181],he=[1,185],de=[1,160],fe=[1,182],pe=[1,169],be=[1,171],Ee=[1,174],ge=[1,183],me=[1,166],ve=[1,193],Se=[1,188],Te=[1,189],Ae=[1,194],ye=[1,195],Ne=[1,196],Ce=[1,197],Re=[1,198],Oe=[1,199],we=[1,200],Ie=[1,201],xe=[1,202],De=[1,176],ke=[1,177],Le=[1,179],$e=[1,180],Me=[1,186],Ue=[1,192],_e=[1,184],Fe=[1,187],Pe=[1,172],qe=[1,170],Ge=[1,191],Ve=[1,203],Be=[2,4,5],je=[2,471],He=[1,206],Je=[1,211],Ye=[1,220],We=[1,216],Xe=[10,72,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],Ke=[2,4,5,10,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],Qe=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ze=[1,249],Ze=[1,256],et=[1,265],tt=[1,270],rt=[1,269],nt=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,168,169,179,180,181,183,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],at=[2,162],st=[1,281],it=[10,74,78,306,310,505,602,764],ot=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,193,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,302,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,344,356,368,369,370,373,374,386,389,396,400,401,402,403,404,405,406,408,409,417,418,420,424,426,433,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,514,515,516,517,602,764],ut=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],ct=[1,562],lt=[1,564],ht=[2,503],dt=[1,569],ft=[1,580],pt=[1,583],bt=[1,584],Et=[10,78,89,132,137,146,189,296,306,310,470,602,764],gt=[10,74,306,310,602,764],mt=[2,567],vt=[1,602],St=[2,4,5,156],Tt=[1,640],At=[1,612],yt=[1,646],Nt=[1,647],Ct=[1,620],Rt=[1,631],Ot=[1,618],wt=[1,626],It=[1,619],xt=[1,627],Dt=[1,629],kt=[1,621],Lt=[1,622],$t=[1,641],Mt=[1,638],Ut=[1,639],_t=[1,615],Ft=[1,617],Pt=[1,609],qt=[1,610],Gt=[1,611],Vt=[1,613],Bt=[1,614],jt=[1,616],Ht=[1,623],Jt=[1,624],Yt=[1,628],Wt=[1,630],Xt=[1,632],Kt=[1,633],Qt=[1,634],zt=[1,635],Zt=[1,636],er=[1,642],tr=[1,643],rr=[1,644],nr=[1,645],ar=[2,287],sr=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ir=[2,359],or=[1,668],ur=[1,678],cr=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,231,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],lr=[1,694],hr=[1,703],dr=[1,702],fr=[2,4,5,10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],pr=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],br=[2,202],Er=[1,725],gr=[10,72,78,93,98,118,128,162,168,169,183,232,245,247,306,310,602,764],mr=[2,163],vr=[1,728],Sr=[2,4,5,112],Tr=[1,741],Ar=[1,760],yr=[1,740],Nr=[1,739],Cr=[1,734],Rr=[1,735],Or=[1,737],wr=[1,738],Ir=[1,742],xr=[1,743],Dr=[1,744],kr=[1,745],Lr=[1,746],$r=[1,747],Mr=[1,748],Ur=[1,749],_r=[1,750],Fr=[1,751],Pr=[1,752],qr=[1,753],Gr=[1,754],Vr=[1,755],Br=[1,756],jr=[1,757],Hr=[1,759],Jr=[1,761],Yr=[1,762],Wr=[1,763],Xr=[1,764],Kr=[1,765],Qr=[1,766],zr=[1,767],Zr=[1,770],en=[1,771],tn=[1,772],rn=[1,773],nn=[1,774],an=[1,775],sn=[1,776],on=[1,777],un=[1,778],cn=[1,779],ln=[1,780],hn=[1,781],dn=[74,89,189],fn=[10,74,78,154,187,230,297,306,310,343,356,368,369,373,374,602,764],pn=[1,798],bn=[10,74,78,300,306,310,602,764],En=[1,799],gn=[1,805],mn=[1,806],vn=[1,810],Sn=[10,74,78,306,310,602,764],Tn=[2,4,5,77,131,132,137,143,145,149,152,154,156,179,180,181,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,312,317,420,424],An=[10,72,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],yn=[2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,149,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],Nn=[2,4,5,132,296],Cn=[1,844],Rn=[10,74,76,78,306,310,602,764],On=[2,738],wn=[10,74,76,78,132,139,141,145,152,306,310,420,424,602,764],In=[2,1161],xn=[10,74,76,78,139,141,145,152,306,310,420,424,602,764],Dn=[10,74,76,78,139,141,145,306,310,420,424,602,764],kn=[10,74,78,139,141,306,310,602,764],Ln=[10,78,89,132,146,189,296,306,310,470,602,764],$n=[335,338,339],Mn=[2,764],Un=[1,869],_n=[1,870],Fn=[1,871],Pn=[1,872],qn=[1,881],Gn=[1,880],Vn=[164,166,334],Bn=[2,444],jn=[1,936],Hn=[2,4,5,77,131,156,290,291,292,293],Jn=[1,951],Yn=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Wn=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Xn=[2,375],Kn=[1,958],Qn=[306,308,310],zn=[74,300],Zn=[74,300,426],ea=[1,965],ta=[2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ra=[74,426],na=[1,978],aa=[1,977],sa=[1,984],ia=[10,72,78,93,98,118,128,162,168,169,232,245,247,306,310,602,764],oa=[1,1010],ua=[10,72,78,306,310,602,764],ca=[1,1016],la=[1,1017],ha=[1,1018],da=[2,4,5,10,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,198,280,281,282,283,284,285,286,287,288,306,310,420,424,602,764],fa=[1,1068],pa=[1,1067],ba=[1,1081],Ea=[1,1080],ga=[1,1088],ma=[10,72,74,78,93,98,107,118,128,162,168,169,183,198,232,245,247,306,310,602,764],va=[1,1119],Sa=[10,78,89,146,189,306,310,470,602,764],Ta=[1,1139],Aa=[1,1138],ya=[1,1137],Na=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,230,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,297,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,343,356,368,369,373,374,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ca=[1,1153],Ra=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Oa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,315,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],wa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ia=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,118,122,124,128,129,130,131,132,134,135,137,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,313,314,315,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],xa=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,118,122,124,128,129,130,131,132,134,135,137,139,140,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,320,321,322,323,324,325,326,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Da=[2,406],ka=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,107,118,122,128,129,130,131,132,134,135,137,143,145,146,148,149,150,152,156,162,164,166,168,169,170,171,172,173,175,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,314,330,331,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],La=[2,285],$a=[2,4,5,10,53,72,74,76,77,78,89,93,95,98,99,107,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,426,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],Ma=[10,78,306,310,602,764],Ua=[1,1189],_a=[10,77,78,143,145,152,181,302,306,310,420,424,602,764],Fa=[10,74,78,306,308,310,464,602,764],Pa=[1,1200],qa=[10,72,78,118,128,162,168,169,232,245,247,306,310,602,764],Ga=[10,72,74,78,93,98,118,128,162,168,169,183,198,232,245,247,306,310,602,764],Va=[2,4,5,72,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],Ba=[2,4,5,72,74,76,77,78,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],ja=[2,1085],Ha=[2,4,5,72,74,76,77,112,115,116,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,185,187,280,281,282,283,284,285,286,287,288,420,424],Ja=[1,1252],Ya=[10,74,78,128,306,308,310,464,602,764],Wa=[115,116,124],Xa=[2,584],Ka=[1,1280],Qa=[76,139],za=[2,724],Za=[1,1297],es=[1,1298],ts=[2,4,5,10,53,72,76,89,124,146,156,189,230,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],rs=[2,330],ns=[1,1322],as=[1,1336],ss=[1,1338],is=[2,487],os=[74,78],us=[10,306,308,310,464,602,764],cs=[10,72,78,118,162,168,169,232,245,247,306,310,602,764],ls=[1,1354],hs=[1,1358],ds=[1,1359],fs=[1,1361],ps=[1,1362],bs=[1,1363],Es=[1,1364],gs=[1,1365],ms=[1,1366],vs=[1,1367],Ss=[1,1368],Ts=[10,72,74,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],As=[1,1393],ys=[10,72,78,118,162,168,169,245,247,306,310,602,764],Ns=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,232,245,247,306,310,602,764],Cs=[1,1490],Rs=[1,1492],Os=[2,4,5,77,143,145,152,156,181,290,291,292,293,302,420,424],ws=[1,1506],Is=[10,72,74,78,162,168,169,245,247,306,310,602,764],xs=[1,1524],Ds=[1,1526],ks=[1,1527],Ls=[1,1523],$s=[1,1522],Ms=[1,1521],Us=[1,1528],_s=[1,1518],Fs=[1,1519],Ps=[1,1520],qs=[1,1545],Gs=[2,4,5,10,53,72,89,124,146,156,189,266,267,290,306,310,335,338,339,396,400,401,404,406,408,409,417,418,434,436,437,439,440,441,442,443,447,448,451,452,505,507,508,517,602,764],Vs=[1,1556],Bs=[1,1564],js=[1,1563],Hs=[10,72,78,162,168,169,245,247,306,310,602,764],Js=[10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],Ys=[2,4,5,10,72,78,93,98,118,128,162,168,169,206,208,222,223,224,225,226,227,228,229,230,231,232,245,247,306,310,602,764],Ws=[1,1621],Xs=[1,1623],Ks=[1,1620],Qs=[1,1622],zs=[187,193,368,369,370,373],Zs=[2,515],ei=[1,1628],ti=[1,1647],ri=[10,72,78,162,168,169,306,310,602,764],ni=[1,1657],ai=[1,1658],si=[1,1659],ii=[1,1678],oi=[4,10,243,306,310,343,356,602,764],ui=[1,1726],ci=[10,72,74,78,118,162,168,169,239,245,247,306,310,602,764],li=[2,4,5,77],hi=[1,1820],di=[1,1832],fi=[1,1851],pi=[10,72,78,162,168,169,306,310,415,602,764],bi=[10,74,78,230,306,310,602,764],Ei={trace:function(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,NonReserved:6,LiteralWithSpaces:7,main:8,Statements:9,EOF:10,Statements_group0:11,AStatement:12,ExplainStatement:13,EXPLAIN:14,QUERY:15,PLAN:16,Statement:17,AlterTable:18,AttachDatabase:19,Call:20,CreateDatabase:21,CreateIndex:22,CreateGraph:23,CreateTable:24,CreateView:25,CreateEdge:26,CreateVertex:27,Declare:28,Delete:29,DetachDatabase:30,DropDatabase:31,DropIndex:32,DropTable:33,DropView:34,If:35,Insert:36,Merge:37,Reindex:38,RenameTable:39,Select:40,ShowCreateTable:41,ShowColumns:42,ShowDatabases:43,ShowIndex:44,ShowTables:45,TruncateTable:46,WithSelect:47,CreateTrigger:48,DropTrigger:49,BeginTransaction:50,CommitTransaction:51,RollbackTransaction:52,EndTransaction:53,UseDatabase:54,Update:55,JavaScript:56,Source:57,Assert:58,While:59,Continue:60,Break:61,BeginEnd:62,Print:63,Require:64,SetVariable:65,ExpressionStatement:66,AddRule:67,Query:68,Echo:69,CreateFunction:70,CreateAggregate:71,WITH:72,WithTablesList:73,COMMA:74,WithTable:75,AS:76,LPAR:77,RPAR:78,SelectClause:79,Select_option0:80,IntoClause:81,FromClause:82,Select_option1:83,WhereClause:84,GroupClause:85,OrderClause:86,LimitClause:87,UnionClause:88,SEARCH:89,Select_repetition0:90,Select_option2:91,PivotClause:92,PIVOT:93,Expression:94,FOR:95,PivotClause_option0:96,PivotClause_option1:97,UNPIVOT:98,IN:99,ColumnsList:100,PivotClause_option2:101,PivotClause2:102,AsList:103,AsLiteral:104,AsPart:105,RemoveClause:106,REMOVE:107,RemoveClause_option0:108,RemoveColumnsList:109,RemoveColumn:110,Column:111,LIKE:112,StringValue:113,ArrowDot:114,ARROW:115,DOT:116,SearchSelector:117,ORDER:118,BY:119,OrderExpressionsList:120,SearchSelector_option0:121,DOTDOT:122,CARET:123,EQ:124,SearchSelector_repetition_plus0:125,SearchSelector_repetition_plus1:126,SearchSelector_option1:127,WHERE:128,OF:129,CLASS:130,NUMBER:131,STRING:132,SLASH:133,VERTEX:134,EDGE:135,EXCLAMATION:136,SHARP:137,MODULO:138,GT:139,LT:140,GTGT:141,LTLT:142,DOLLAR:143,Json:144,AT:145,SET:146,SetColumnsList:147,TO:148,VALUE:149,ROW:150,ExprList:151,COLON:152,PlusStar:153,NOT:154,SearchSelector_repetition2:155,IF:156,SearchSelector_repetition3:157,Aggregator:158,SearchSelector_repetition4:159,SearchSelector_group0:160,SearchSelector_repetition5:161,UNION:162,SearchSelectorList:163,ALL:164,SearchSelector_repetition6:165,ANY:166,SearchSelector_repetition7:167,INTERSECT:168,EXCEPT:169,AND:170,OR:171,PATH:172,RETURN:173,ResultColumns:174,REPEAT:175,SearchSelector_repetition8:176,SearchSelectorList_repetition0:177,SearchSelectorList_repetition1:178,PLUS:179,STAR:180,QUESTION:181,SearchFrom:182,FROM:183,SelectModifier:184,DISTINCT:185,TopClause:186,UNIQUE:187,SelectClause_option0:188,SELECT:189,COLUMN:190,MATRIX:191,TEXTSTRING:192,INDEX:193,RECORDSET:194,TOP:195,NumValue:196,TopClause_option0:197,INTO:198,Table:199,FuncValue:200,ParamValue:201,VarValue:202,FromTablesList:203,JoinTablesList:204,ApplyClause:205,CROSS:206,APPLY:207,OUTER:208,FromTable:209,FromTable_option0:210,FromTable_option1:211,INDEXED:212,INSERTED:213,FromString:214,JoinTable:215,JoinMode:216,JoinTableAs:217,OnClause:218,JoinTableAs_option0:219,JoinTableAs_option1:220,JoinModeMode:221,NATURAL:222,JOIN:223,INNER:224,LEFT:225,RIGHT:226,FULL:227,SEMI:228,ANTI:229,ON:230,USING:231,GROUP:232,GroupExpressionsList:233,HavingClause:234,GroupExpression:235,GROUPING:236,ROLLUP:237,CUBE:238,HAVING:239,CORRESPONDING:240,OrderExpression:241,DIRECTION:242,COLLATE:243,NOCASE:244,LIMIT:245,OffsetClause:246,OFFSET:247,LimitClause_option0:248,FETCH:249,LimitClause_option1:250,LimitClause_option2:251,LimitClause_option3:252,ResultColumn:253,Star:254,AggrValue:255,Op:256,LogicValue:257,NullValue:258,ExistsValue:259,CaseValue:260,CastClause:261,ArrayValue:262,NewClause:263,Expression_group0:264,CURRENT_TIMESTAMP:265,JAVASCRIPT:266,CREATE:267,FUNCTION:268,AGGREGATE:269,NEW:270,CAST:271,ColumnType:272,CONVERT:273,PrimitiveValue:274,OverClause:275,OVER:276,OverPartitionClause:277,OverOrderByClause:278,PARTITION:279,SUM:280,COUNT:281,MIN:282,MAX:283,AVG:284,FIRST:285,LAST:286,AGGR:287,ARRAY:288,FuncValue_option0:289,REPLACE:290,DATEADD:291,DATEDIFF:292,INTERVAL:293,TRUE:294,FALSE:295,NSTRING:296,NULL:297,EXISTS:298,ARRAYLBRA:299,RBRA:300,ParamValue_group0:301,BRAQUESTION:302,CASE:303,WhensList:304,ElseClause:305,END:306,When:307,WHEN:308,THEN:309,ELSE:310,REGEXP:311,TILDA:312,GLOB:313,ESCAPE:314,NOT_LIKE:315,BARBAR:316,MINUS:317,AMPERSAND:318,BAR:319,GE:320,LE:321,EQEQ:322,EQEQEQ:323,NE:324,NEEQEQ:325,NEEQEQEQ:326,CondOp:327,AllSome:328,ColFunc:329,BETWEEN:330,NOT_BETWEEN:331,IS:332,DOUBLECOLON:333,SOME:334,UPDATE:335,SetColumn:336,SetColumn_group0:337,DELETE:338,INSERT:339,Into:340,Values:341,ValuesListsList:342,DEFAULT:343,VALUES:344,ValuesList:345,Value:346,DateValue:347,TemporaryClause:348,TableClass:349,IfNotExists:350,CreateTableDefClause:351,CreateTableOptionsClause:352,TABLE:353,CreateTableOptions:354,CreateTableOption:355,IDENTITY:356,TEMP:357,ColumnDefsList:358,ConstraintsList:359,Constraint:360,ConstraintName:361,PrimaryKey:362,ForeignKey:363,UniqueKey:364,IndexKey:365,Check:366,CONSTRAINT:367,CHECK:368,PRIMARY:369,KEY:370,PrimaryKey_option0:371,ColsList:372,FOREIGN:373,REFERENCES:374,ForeignKey_option0:375,OnForeignKeyClause:376,ParColsList:377,OnDeleteClause:378,OnUpdateClause:379,NO:380,ACTION:381,UniqueKey_option0:382,UniqueKey_option1:383,ColumnDef:384,ColumnConstraintsClause:385,ColumnConstraints:386,SingularColumnType:387,NumberMax:388,ENUM:389,MAXNUM:390,ColumnConstraintsList:391,ColumnConstraint:392,ParLiteral:393,ColumnConstraint_option0:394,ColumnConstraint_option1:395,DROP:396,DropTable_group0:397,IfExists:398,TablesList:399,ALTER:400,RENAME:401,ADD:402,MODIFY:403,ATTACH:404,DATABASE:405,DETACH:406,AsClause:407,USE:408,SHOW:409,VIEW:410,CreateView_option0:411,CreateView_option1:412,SubqueryRestriction:413,READ:414,ONLY:415,OPTION:416,SOURCE:417,ASSERT:418,JsonObject:419,ATLBRA:420,JsonArray:421,JsonValue:422,JsonPrimitiveValue:423,LCUR:424,JsonPropertiesList:425,RCUR:426,JsonElementsList:427,JsonProperty:428,OnOff:429,SetPropsList:430,AtDollar:431,SetProp:432,OFF:433,COMMIT:434,TRANSACTION:435,ROLLBACK:436,BEGIN:437,ElseStatement:438,WHILE:439,CONTINUE:440,BREAK:441,PRINT:442,REQUIRE:443,StringValuesList:444,PluginsList:445,Plugin:446,ECHO:447,DECLARE:448,DeclaresList:449,DeclareItem:450,TRUNCATE:451,MERGE:452,MergeInto:453,MergeUsing:454,MergeOn:455,MergeMatchedList:456,OutputClause:457,MergeMatched:458,MergeNotMatched:459,MATCHED:460,MergeMatchedAction:461,MergeNotMatchedAction:462,TARGET:463,OUTPUT:464,CreateVertex_option0:465,CreateVertex_option1:466,CreateVertex_option2:467,CreateVertexSet:468,SharpValue:469,CONTENT:470,CreateEdge_option0:471,GRAPH:472,GraphList:473,GraphVertexEdge:474,GraphElement:475,GraphVertexEdge_option0:476,GraphVertexEdge_option1:477,GraphElementVar:478,GraphVertexEdge_option2:479,GraphVertexEdge_option3:480,GraphVertexEdge_option4:481,GraphVar:482,GraphAsClause:483,GraphAtClause:484,GraphElement2:485,GraphElement2_option0:486,GraphElement2_option1:487,GraphElement2_option2:488,GraphElement2_option3:489,GraphElement_option0:490,GraphElement_option1:491,GraphElement_option2:492,SharpLiteral:493,GraphElement_option3:494,GraphElement_option4:495,GraphElement_option5:496,ColonLiteral:497,DeleteVertex:498,DeleteVertex_option0:499,DeleteEdge:500,DeleteEdge_option0:501,DeleteEdge_option1:502,DeleteEdge_option2:503,Term:504,COLONDASH:505,TermsList:506,QUESTIONDASH:507,CALL:508,TRIGGER:509,BeforeAfter:510,InsertDeleteUpdate:511,CreateTrigger_option0:512,CreateTrigger_option1:513,BEFORE:514,AFTER:515,INSTEAD:516,REINDEX:517,A:518,ABSENT:519,ABSOLUTE:520,ACCORDING:521,ADA:522,ADMIN:523,ALWAYS:524,ASC:525,ASSERTION:526,ASSIGNMENT:527,ATTRIBUTE:528,ATTRIBUTES:529,BASE64:530,BERNOULLI:531,BLOCKED:532,BOM:533,BREADTH:534,C:535,CASCADE:536,CATALOG:537,CATALOG_NAME:538,CHAIN:539,CHARACTERISTICS:540,CHARACTERS:541,CHARACTER_SET_CATALOG:542,CHARACTER_SET_NAME:543,CHARACTER_SET_SCHEMA:544,CLASS_ORIGIN:545,COBOL:546,COLLATION:547,COLLATION_CATALOG:548,COLLATION_NAME:549,COLLATION_SCHEMA:550,COLUMNS:551,COLUMN_NAME:552,COMMAND_FUNCTION:553,COMMAND_FUNCTION_CODE:554,COMMITTED:555,CONDITION_NUMBER:556,CONNECTION:557,CONNECTION_NAME:558,CONSTRAINTS:559,CONSTRAINT_CATALOG:560,CONSTRAINT_NAME:561,CONSTRAINT_SCHEMA:562,CONSTRUCTOR:563,CONTROL:564,CURSOR_NAME:565,DATA:566,DATETIME_INTERVAL_CODE:567,DATETIME_INTERVAL_PRECISION:568,DB:569,DEFAULTS:570,DEFERRABLE:571,DEFERRED:572,DEFINED:573,DEFINER:574,DEGREE:575,DEPTH:576,DERIVED:577,DESC:578,DESCRIPTOR:579,DIAGNOSTICS:580,DISPATCH:581,DOCUMENT:582,DOMAIN:583,DYNAMIC_FUNCTION:584,DYNAMIC_FUNCTION_CODE:585,EMPTY:586,ENCODING:587,ENFORCED:588,EXCLUDE:589,EXCLUDING:590,EXPRESSION:591,FILE:592,FINAL:593,FLAG:594,FOLLOWING:595,FORTRAN:596,FOUND:597,FS:598,G:599,GENERAL:600,GENERATED:601,GO:602,GOTO:603,GRANTED:604,HEX:605,HIERARCHY:606,ID:607,IGNORE:608,IMMEDIATE:609,IMMEDIATELY:610,IMPLEMENTATION:611,INCLUDING:612,INCREMENT:613,INDENT:614,INITIALLY:615,INPUT:616,INSTANCE:617,INSTANTIABLE:618,INTEGRITY:619,INVOKER:620,ISOLATION:621,K:622,KEY_MEMBER:623,KEY_TYPE:624,LENGTH:625,LEVEL:626,LIBRARY:627,LINK:628,LOCATION:629,LOCATOR:630,M:631,MAP:632,MAPPING:633,MAXVALUE:634,MESSAGE_LENGTH:635,MESSAGE_OCTET_LENGTH:636,MESSAGE_TEXT:637,MINVALUE:638,MORE:639,MUMPS:640,NAME:641,NAMES:642,NAMESPACE:643,NESTING:644,NEXT:645,NFC:646,NFD:647,NFKC:648,NFKD:649,NIL:650,NORMALIZED:651,NULLABLE:652,NULLS:653,OBJECT:654,OCTETS:655,OPTIONS:656,ORDERING:657,ORDINALITY:658,OTHERS:659,OVERRIDING:660,P:661,PAD:662,PARAMETER_MODE:663,PARAMETER_NAME:664,PARAMETER_ORDINAL_POSITION:665,PARAMETER_SPECIFIC_CATALOG:666,PARAMETER_SPECIFIC_NAME:667,PARAMETER_SPECIFIC_SCHEMA:668,PARTIAL:669,PASCAL:670,PASSING:671,PASSTHROUGH:672,PERMISSION:673,PLACING:674,PLI:675,PRECEDING:676,PRESERVE:677,PRIOR:678,PRIVILEGES:679,PUBLIC:680,RECOVERY:681,RELATIVE:682,REPEATABLE:683,REQUIRING:684,RESPECT:685,RESTART:686,RESTORE:687,RESTRICT:688,RETURNED_CARDINALITY:689,RETURNED_LENGTH:690,RETURNED_OCTET_LENGTH:691,RETURNED_SQLSTATE:692,RETURNING:693,ROLE:694,ROUTINE:695,ROUTINE_CATALOG:696,ROUTINE_NAME:697,ROUTINE_SCHEMA:698,ROW_COUNT:699,SCALE:700,SCHEMA:701,SCHEMA_NAME:702,SCOPE_CATALOG:703,SCOPE_NAME:704,SCOPE_SCHEMA:705,SECTION:706,SECURITY:707,SELECTIVE:708,SELF:709,SEQUENCE:710,SERIALIZABLE:711,SERVER:712,SERVER_NAME:713,SESSION:714,SETS:715,SIMPLE:716,SIZE:717,SPACE:718,SPECIFIC_NAME:719,STANDALONE:720,STATE:721,STATEMENT:722,STRIP:723,STRUCTURE:724,STYLE:725,SUBCLASS_ORIGIN:726,T:727,TABLE_NAME:728,TEMPORARY:729,TIES:730,TOKEN:731,TOP_LEVEL_COUNT:732,TRANSACTIONS_COMMITTED:733,TRANSACTIONS_ROLLED_BACK:734,TRANSACTION_ACTIVE:735,TRANSFORM:736,TRANSFORMS:737,TRIGGER_CATALOG:738,TRIGGER_NAME:739,TRIGGER_SCHEMA:740,TYPE:741,UNBOUNDED:742,UNCOMMITTED:743,UNDER:744,UNLINK:745,UNNAMED:746,UNTYPED:747,URI:748,USAGE:749,USER_DEFINED_TYPE_CATALOG:750,USER_DEFINED_TYPE_CODE:751,USER_DEFINED_TYPE_NAME:752,USER_DEFINED_TYPE_SCHEMA:753,VALID:754,VERSION:755,WHITESPACE:756,WORK:757,WRAPPER:758,WRITE:759,XMLDECLARATION:760,XMLSCHEMA:761,YES:762,ZONE:763,SEMICOLON:764,PERCENT:765,ROWS:766,FuncValue_option0_group0:767,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",10:"EOF",14:"EXPLAIN",15:"QUERY",16:"PLAN",53:"EndTransaction",72:"WITH",74:"COMMA",76:"AS",77:"LPAR",78:"RPAR",89:"SEARCH",93:"PIVOT",95:"FOR",98:"UNPIVOT",99:"IN",107:"REMOVE",112:"LIKE",115:"ARROW",116:"DOT",118:"ORDER",119:"BY",122:"DOTDOT",123:"CARET",124:"EQ",128:"WHERE",129:"OF",130:"CLASS",131:"NUMBER",132:"STRING",133:"SLASH",134:"VERTEX",135:"EDGE",136:"EXCLAMATION",137:"SHARP",138:"MODULO",139:"GT",140:"LT",141:"GTGT",142:"LTLT",143:"DOLLAR",145:"AT",146:"SET",148:"TO",149:"VALUE",150:"ROW",152:"COLON",154:"NOT",156:"IF",162:"UNION",164:"ALL",166:"ANY",168:"INTERSECT",169:"EXCEPT",170:"AND",171:"OR",172:"PATH",173:"RETURN",175:"REPEAT",179:"PLUS",180:"STAR",181:"QUESTION",183:"FROM",185:"DISTINCT",187:"UNIQUE",189:"SELECT",190:"COLUMN",191:"MATRIX",192:"TEXTSTRING",193:"INDEX",194:"RECORDSET",195:"TOP",198:"INTO",206:"CROSS",207:"APPLY",208:"OUTER",212:"INDEXED",213:"INSERTED",222:"NATURAL",223:"JOIN",224:"INNER",225:"LEFT",226:"RIGHT",227:"FULL",228:"SEMI",229:"ANTI",230:"ON",231:"USING",232:"GROUP",236:"GROUPING",237:"ROLLUP",238:"CUBE",239:"HAVING",240:"CORRESPONDING",242:"DIRECTION",243:"COLLATE",244:"NOCASE",245:"LIMIT",247:"OFFSET",249:"FETCH",265:"CURRENT_TIMESTAMP",266:"JAVASCRIPT",267:"CREATE",268:"FUNCTION",269:"AGGREGATE",270:"NEW",271:"CAST",273:"CONVERT",276:"OVER",279:"PARTITION",280:"SUM",281:"COUNT",282:"MIN",283:"MAX",284:"AVG",285:"FIRST",286:"LAST",287:"AGGR",288:"ARRAY",290:"REPLACE",291:"DATEADD",292:"DATEDIFF",293:"INTERVAL",294:"TRUE",295:"FALSE",296:"NSTRING",297:"NULL",298:"EXISTS",299:"ARRAYLBRA",300:"RBRA",302:"BRAQUESTION",303:"CASE",306:"END",308:"WHEN",309:"THEN",310:"ELSE",311:"REGEXP",312:"TILDA",313:"GLOB",314:"ESCAPE",315:"NOT_LIKE",316:"BARBAR",317:"MINUS",318:"AMPERSAND",319:"BAR",320:"GE",321:"LE",322:"EQEQ",323:"EQEQEQ",324:"NE",325:"NEEQEQ",326:"NEEQEQEQ",330:"BETWEEN",331:"NOT_BETWEEN",332:"IS",333:"DOUBLECOLON",334:"SOME",335:"UPDATE",338:"DELETE",339:"INSERT",343:"DEFAULT",344:"VALUES",347:"DateValue",353:"TABLE",356:"IDENTITY",357:"TEMP",367:"CONSTRAINT",368:"CHECK",369:"PRIMARY",370:"KEY",373:"FOREIGN",374:"REFERENCES",380:"NO",381:"ACTION",386:"ColumnConstraints",389:"ENUM",390:"MAXNUM",396:"DROP",400:"ALTER",401:"RENAME",402:"ADD",403:"MODIFY",404:"ATTACH",405:"DATABASE",406:"DETACH",408:"USE",409:"SHOW",410:"VIEW",414:"READ",415:"ONLY",416:"OPTION",417:"SOURCE",418:"ASSERT",420:"ATLBRA",424:"LCUR",426:"RCUR",433:"OFF",434:"COMMIT",435:"TRANSACTION",436:"ROLLBACK",437:"BEGIN",439:"WHILE",440:"CONTINUE",441:"BREAK",442:"PRINT",443:"REQUIRE",447:"ECHO",448:"DECLARE",451:"TRUNCATE",452:"MERGE",460:"MATCHED",463:"TARGET",464:"OUTPUT",470:"CONTENT",472:"GRAPH",505:"COLONDASH",507:"QUESTIONDASH",508:"CALL",509:"TRIGGER",514:"BEFORE",515:"AFTER",516:"INSTEAD",517:"REINDEX",518:"A",519:"ABSENT",520:"ABSOLUTE",521:"ACCORDING",522:"ADA",523:"ADMIN",524:"ALWAYS",525:"ASC",526:"ASSERTION",527:"ASSIGNMENT",528:"ATTRIBUTE",529:"ATTRIBUTES",530:"BASE64",531:"BERNOULLI",532:"BLOCKED",533:"BOM",534:"BREADTH",535:"C",536:"CASCADE",537:"CATALOG",538:"CATALOG_NAME",539:"CHAIN",540:"CHARACTERISTICS",541:"CHARACTERS",542:"CHARACTER_SET_CATALOG",543:"CHARACTER_SET_NAME",544:"CHARACTER_SET_SCHEMA",545:"CLASS_ORIGIN",546:"COBOL",547:"COLLATION",548:"COLLATION_CATALOG",549:"COLLATION_NAME",550:"COLLATION_SCHEMA",551:"COLUMNS",552:"COLUMN_NAME",
553:"COMMAND_FUNCTION",554:"COMMAND_FUNCTION_CODE",555:"COMMITTED",556:"CONDITION_NUMBER",557:"CONNECTION",558:"CONNECTION_NAME",559:"CONSTRAINTS",560:"CONSTRAINT_CATALOG",561:"CONSTRAINT_NAME",562:"CONSTRAINT_SCHEMA",563:"CONSTRUCTOR",564:"CONTROL",565:"CURSOR_NAME",566:"DATA",567:"DATETIME_INTERVAL_CODE",568:"DATETIME_INTERVAL_PRECISION",569:"DB",570:"DEFAULTS",571:"DEFERRABLE",572:"DEFERRED",573:"DEFINED",574:"DEFINER",575:"DEGREE",576:"DEPTH",577:"DERIVED",578:"DESC",579:"DESCRIPTOR",580:"DIAGNOSTICS",581:"DISPATCH",582:"DOCUMENT",583:"DOMAIN",584:"DYNAMIC_FUNCTION",585:"DYNAMIC_FUNCTION_CODE",586:"EMPTY",587:"ENCODING",588:"ENFORCED",589:"EXCLUDE",590:"EXCLUDING",591:"EXPRESSION",592:"FILE",593:"FINAL",594:"FLAG",595:"FOLLOWING",596:"FORTRAN",597:"FOUND",598:"FS",599:"G",600:"GENERAL",601:"GENERATED",602:"GO",603:"GOTO",604:"GRANTED",605:"HEX",606:"HIERARCHY",607:"ID",608:"IGNORE",609:"IMMEDIATE",610:"IMMEDIATELY",611:"IMPLEMENTATION",612:"INCLUDING",613:"INCREMENT",614:"INDENT",615:"INITIALLY",616:"INPUT",617:"INSTANCE",618:"INSTANTIABLE",619:"INTEGRITY",620:"INVOKER",621:"ISOLATION",622:"K",623:"KEY_MEMBER",624:"KEY_TYPE",625:"LENGTH",626:"LEVEL",627:"LIBRARY",628:"LINK",629:"LOCATION",630:"LOCATOR",631:"M",632:"MAP",633:"MAPPING",634:"MAXVALUE",635:"MESSAGE_LENGTH",636:"MESSAGE_OCTET_LENGTH",637:"MESSAGE_TEXT",638:"MINVALUE",639:"MORE",640:"MUMPS",641:"NAME",642:"NAMES",643:"NAMESPACE",644:"NESTING",645:"NEXT",646:"NFC",647:"NFD",648:"NFKC",649:"NFKD",650:"NIL",651:"NORMALIZED",652:"NULLABLE",653:"NULLS",654:"OBJECT",655:"OCTETS",656:"OPTIONS",657:"ORDERING",658:"ORDINALITY",659:"OTHERS",660:"OVERRIDING",661:"P",662:"PAD",663:"PARAMETER_MODE",664:"PARAMETER_NAME",665:"PARAMETER_ORDINAL_POSITION",666:"PARAMETER_SPECIFIC_CATALOG",667:"PARAMETER_SPECIFIC_NAME",668:"PARAMETER_SPECIFIC_SCHEMA",669:"PARTIAL",670:"PASCAL",671:"PASSING",672:"PASSTHROUGH",673:"PERMISSION",674:"PLACING",675:"PLI",676:"PRECEDING",677:"PRESERVE",678:"PRIOR",679:"PRIVILEGES",680:"PUBLIC",681:"RECOVERY",682:"RELATIVE",683:"REPEATABLE",684:"REQUIRING",685:"RESPECT",686:"RESTART",687:"RESTORE",688:"RESTRICT",689:"RETURNED_CARDINALITY",690:"RETURNED_LENGTH",691:"RETURNED_OCTET_LENGTH",692:"RETURNED_SQLSTATE",693:"RETURNING",694:"ROLE",695:"ROUTINE",696:"ROUTINE_CATALOG",697:"ROUTINE_NAME",698:"ROUTINE_SCHEMA",699:"ROW_COUNT",700:"SCALE",701:"SCHEMA",702:"SCHEMA_NAME",703:"SCOPE_CATALOG",704:"SCOPE_NAME",705:"SCOPE_SCHEMA",706:"SECTION",707:"SECURITY",708:"SELECTIVE",709:"SELF",710:"SEQUENCE",711:"SERIALIZABLE",712:"SERVER",713:"SERVER_NAME",714:"SESSION",715:"SETS",716:"SIMPLE",717:"SIZE",718:"SPACE",719:"SPECIFIC_NAME",720:"STANDALONE",721:"STATE",722:"STATEMENT",723:"STRIP",724:"STRUCTURE",725:"STYLE",726:"SUBCLASS_ORIGIN",727:"T",728:"TABLE_NAME",729:"TEMPORARY",730:"TIES",731:"TOKEN",732:"TOP_LEVEL_COUNT",733:"TRANSACTIONS_COMMITTED",734:"TRANSACTIONS_ROLLED_BACK",735:"TRANSACTION_ACTIVE",736:"TRANSFORM",737:"TRANSFORMS",738:"TRIGGER_CATALOG",739:"TRIGGER_NAME",740:"TRIGGER_SCHEMA",741:"TYPE",742:"UNBOUNDED",743:"UNCOMMITTED",744:"UNDER",745:"UNLINK",746:"UNNAMED",747:"UNTYPED",748:"URI",749:"USAGE",750:"USER_DEFINED_TYPE_CATALOG",751:"USER_DEFINED_TYPE_CODE",752:"USER_DEFINED_TYPE_NAME",753:"USER_DEFINED_TYPE_SCHEMA",754:"VALID",755:"VERSION",756:"WHITESPACE",757:"WORK",758:"WRAPPER",759:"WRITE",760:"XMLDECLARATION",761:"XMLSCHEMA",762:"YES",763:"ZONE",764:"SEMICOLON",765:"PERCENT",766:"ROWS"},productions_:[0,[3,1],[3,1],[3,2],[7,1],[7,2],[8,2],[9,3],[9,1],[9,1],[13,2],[13,4],[12,1],[17,0],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[47,3],[73,3],[73,1],[75,5],[40,10],[40,4],[92,8],[92,11],[102,4],[104,2],[104,1],[103,3],[103,1],[105,1],[105,3],[106,3],[109,3],[109,1],[110,1],[110,2],[114,1],[114,1],[117,1],[117,5],[117,5],[117,1],[117,2],[117,1],[117,2],[117,2],[117,3],[117,4],[117,4],[117,4],[117,4],[117,4],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,2],[117,2],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,2],[117,3],[117,4],[117,3],[117,1],[117,4],[117,2],[117,2],[117,4],[117,4],[117,4],[117,4],[117,4],[117,5],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,4],[117,6],[163,3],[163,1],[153,1],[153,1],[153,1],[182,2],[79,4],[79,4],[79,4],[79,3],[184,1],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[184,2],[186,3],[186,4],[186,0],[81,0],[81,2],[81,2],[81,2],[81,2],[81,2],[82,2],[82,3],[82,5],[82,0],[205,6],[205,7],[205,6],[205,7],[203,1],[203,3],[209,4],[209,5],[209,3],[209,3],[209,2],[209,3],[209,1],[209,3],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,1],[209,2],[209,3],[209,1],[209,2],[209,3],[214,1],[199,3],[199,1],[204,2],[204,2],[204,1],[204,1],[215,3],[217,1],[217,2],[217,3],[217,3],[217,2],[217,3],[217,4],[217,5],[217,1],[217,2],[217,3],[217,1],[217,2],[217,3],[216,1],[216,2],[221,1],[221,2],[221,2],[221,3],[221,2],[221,3],[221,2],[221,3],[221,2],[221,2],[221,2],[218,2],[218,2],[218,0],[84,0],[84,2],[85,0],[85,4],[233,1],[233,3],[235,5],[235,4],[235,4],[235,1],[234,0],[234,2],[88,0],[88,2],[88,3],[88,2],[88,2],[88,3],[88,4],[88,3],[88,3],[86,0],[86,3],[120,1],[120,3],[241,1],[241,2],[241,3],[241,4],[87,0],[87,3],[87,8],[246,0],[246,2],[174,3],[174,1],[253,3],[253,2],[253,3],[253,2],[253,3],[253,2],[253,1],[254,5],[254,3],[254,1],[111,5],[111,3],[111,3],[111,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,1],[94,3],[94,3],[94,3],[94,1],[94,1],[56,1],[70,5],[71,5],[263,2],[263,2],[261,6],[261,8],[261,6],[261,8],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[274,1],[255,5],[255,6],[255,6],[275,0],[275,4],[275,4],[275,5],[277,3],[278,3],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[158,1],[200,5],[200,3],[200,4],[200,4],[200,8],[200,8],[200,8],[200,8],[200,3],[151,1],[151,3],[196,1],[257,1],[257,1],[113,1],[113,1],[258,1],[202,2],[259,4],[262,3],[201,2],[201,2],[201,1],[201,1],[260,5],[260,4],[304,2],[304,1],[307,4],[305,2],[305,0],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,5],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,3],[256,6],[256,6],[256,3],[256,3],[256,2],[256,2],[256,2],[256,2],[256,2],[256,3],[256,5],[256,6],[256,5],[256,6],[256,4],[256,5],[256,3],[256,4],[256,3],[256,4],[256,3],[256,3],[256,3],[256,3],[256,3],[329,1],[329,1],[329,4],[327,1],[327,1],[327,1],[327,1],[327,1],[327,1],[328,1],[328,1],[328,1],[55,6],[55,4],[147,1],[147,3],[336,3],[336,4],[29,5],[29,3],[36,5],[36,4],[36,7],[36,6],[36,5],[36,4],[36,5],[36,8],[36,7],[36,4],[36,6],[36,7],[341,1],[341,1],[340,0],[340,1],[342,3],[342,1],[342,1],[342,5],[342,3],[342,3],[345,1],[345,3],[346,1],[346,1],[346,1],[346,1],[346,1],[346,1],[100,1],[100,3],[24,9],[24,5],[349,1],[349,1],[352,0],[352,1],[354,2],[354,1],[355,1],[355,3],[355,3],[355,3],[348,0],[348,1],[350,0],[350,3],[351,3],[351,1],[351,2],[359,1],[359,3],[360,2],[360,2],[360,2],[360,2],[360,2],[361,0],[361,2],[366,4],[362,6],[363,9],[377,3],[376,0],[376,2],[378,4],[379,4],[364,6],[365,5],[365,5],[372,1],[372,1],[372,3],[372,3],[358,1],[358,3],[384,3],[384,2],[384,1],[387,6],[387,4],[387,1],[387,4],[272,2],[272,1],[388,1],[388,1],[385,0],[385,1],[391,2],[391,1],[393,3],[392,2],[392,5],[392,3],[392,6],[392,1],[392,2],[392,4],[392,2],[392,1],[392,2],[392,1],[392,1],[392,3],[392,5],[33,4],[399,3],[399,1],[398,0],[398,2],[18,6],[18,6],[18,6],[18,8],[18,6],[39,5],[19,4],[19,7],[19,6],[19,9],[30,3],[21,4],[21,6],[21,9],[21,6],[407,0],[407,2],[54,3],[54,2],[31,4],[31,5],[31,5],[22,8],[22,9],[32,3],[43,2],[43,4],[43,3],[43,5],[45,2],[45,4],[45,4],[45,6],[42,4],[42,6],[44,4],[44,6],[41,4],[41,6],[25,11],[25,8],[413,3],[413,3],[413,5],[34,4],[66,2],[57,2],[58,2],[58,2],[58,4],[144,4],[144,2],[144,2],[144,2],[144,2],[144,1],[144,2],[144,2],[422,1],[422,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,1],[423,3],[419,3],[419,4],[419,2],[421,2],[421,3],[421,1],[425,3],[425,1],[428,3],[428,3],[428,3],[427,3],[427,1],[65,4],[65,3],[65,4],[65,5],[65,5],[65,6],[431,1],[431,1],[430,3],[430,2],[432,1],[432,1],[432,3],[429,1],[429,1],[51,2],[52,2],[50,2],[35,4],[35,3],[438,2],[59,3],[60,1],[61,1],[62,3],[63,2],[63,2],[64,2],[64,2],[446,1],[446,1],[69,2],[444,3],[444,1],[445,3],[445,1],[28,2],[449,1],[449,3],[450,3],[450,4],[450,5],[450,6],[46,3],[37,6],[453,1],[453,2],[454,2],[455,2],[456,2],[456,2],[456,1],[456,1],[458,4],[458,6],[461,1],[461,3],[459,5],[459,7],[459,7],[459,9],[459,7],[459,9],[462,3],[462,6],[462,3],[462,6],[457,0],[457,2],[457,5],[457,4],[457,7],[27,6],[469,2],[468,0],[468,2],[468,2],[468,1],[26,8],[23,3],[23,4],[473,3],[473,1],[474,3],[474,7],[474,6],[474,3],[474,4],[478,1],[478,1],[482,2],[483,3],[484,2],[485,4],[475,4],[475,3],[475,2],[475,1],[497,2],[493,2],[493,2],[498,4],[500,6],[67,3],[67,2],[506,3],[506,1],[504,1],[504,4],[68,2],[20,2],[48,9],[48,8],[48,9],[510,0],[510,1],[510,1],[510,1],[510,2],[511,1],[511,1],[511,1],[49,3],[38,2],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[11,1],[11,1],[80,0],[80,1],[83,0],[83,1],[90,0],[90,2],[91,0],[91,1],[96,0],[96,1],[97,0],[97,1],[101,0],[101,1],[108,0],[108,1],[121,0],[121,1],[125,1],[125,2],[126,1],[126,2],[127,0],[127,1],[155,0],[155,2],[157,0],[157,2],[159,0],[159,2],[160,1],[160,1],[161,0],[161,2],[165,0],[165,2],[167,0],[167,2],[176,0],[176,2],[177,0],[177,2],[178,0],[178,2],[188,0],[188,1],[197,0],[197,1],[210,0],[210,1],[211,0],[211,1],[219,0],[219,1],[220,0],[220,1],[248,0],[248,1],[250,0],[250,1],[251,0],[251,1],[252,0],[252,1],[264,1],[264,1],[767,1],[767,1],[289,0],[289,1],[301,1],[301,1],[337,1],[337,1],[371,0],[371,1],[375,0],[375,1],[382,0],[382,1],[383,0],[383,1],[394,0],[394,1],[395,0],[395,1],[397,1],[397,1],[411,0],[411,1],[412,0],[412,1],[465,0],[465,1],[466,0],[466,1],[467,0],[467,1],[471,0],[471,1],[476,0],[476,1],[477,0],[477,1],[479,0],[479,1],[480,0],[480,1],[481,0],[481,1],[486,0],[486,1],[487,0],[487,1],[488,0],[488,1],[489,0],[489,1],[490,0],[490,1],[491,0],[491,1],[492,0],[492,1],[494,0],[494,1],[495,0],[495,1],[496,0],[496,1],[499,0],[499,2],[501,0],[501,2],[502,0],[502,2],[503,0],[503,2],[512,0],[512,1],[513,0],[513,1]],performAction:function(e,t,r,n,a,s,i){var o=s.length-1;switch(a){case 1:T.options.casesensitive?this.$=s[o]:this.$=s[o].toLowerCase();break;case 2:this.$=O(s[o].substr(1,s[o].length-2));break;case 3:this.$=s[o].toLowerCase();break;case 4:this.$=s[o];break;case 5:this.$=s[o]?s[o-1]+" "+s[o]:s[o-1];break;case 6:return new n.Statements({statements:s[o-1]});case 7:this.$=s[o-2],s[o]&&s[o-2].push(s[o]);break;case 8:case 9:case 70:case 80:case 85:case 143:case 177:case 205:case 206:case 242:case 261:case 273:case 354:case 372:case 451:case 474:case 475:case 479:case 487:case 528:case 529:case 566:case 649:case 659:case 683:case 685:case 687:case 701:case 702:case 732:case 756:this.$=[s[o]];break;case 10:case 11:this.$=s[o],s[o].explain=!0;break;case 12:this.$=s[o],n.exists&&(this.$.exists=n.exists),delete n.exists,n.queries&&(this.$.queries=n.queries),delete n.queries;break;case 13:case 162:case 172:case 237:case 238:case 240:case 248:case 250:case 259:case 267:case 270:case 375:case 491:case 501:case 503:case 515:case 521:case 522:case 567:this.$=void 0;break;case 68:this.$=new n.WithSelect({withs:s[o-1],select:s[o]});break;case 69:case 565:s[o-2].push(s[o]),this.$=s[o-2];break;case 71:this.$={name:s[o-4],select:s[o-1]};break;case 72:n.extend(this.$,s[o-9]),n.extend(this.$,s[o-8]),n.extend(this.$,s[o-7]),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-5]),n.extend(this.$,s[o-4]),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]),this.$=s[o-9];break;case 73:this.$=new n.Search({selectors:s[o-2],from:s[o]}),n.extend(this.$,s[o-1]);break;case 74:this.$={pivot:{expr:s[o-5],columnid:s[o-3],inlist:s[o-2],as:s[o]}};break;case 75:this.$={unpivot:{tocolumnid:s[o-8],forcolumnid:s[o-6],inlist:s[o-3],as:s[o]}};break;case 76:case 520:case 549:case 585:case 619:case 636:case 637:case 640:case 662:this.$=s[o-1];break;case 77:case 78:case 86:case 147:case 185:case 247:case 280:case 288:case 289:case 290:case 291:case 292:case 293:case 294:case 295:case 296:case 297:case 298:case 299:case 300:case 301:case 304:case 305:case 320:case 321:case 322:case 323:case 324:case 325:case 374:case 440:case 441:case 442:case 443:case 444:case 445:case 516:case 542:case 546:case 548:case 623:case 624:case 625:case 626:case 627:case 628:case 632:case 634:case 635:case 644:case 660:case 661:case 723:case 738:case 739:case 741:case 742:case 748:case 749:this.$=s[o];break;case 79:case 84:case 731:case 755:this.$=s[o-2],this.$.push(s[o]);break;case 81:this.$={expr:s[o]};break;case 82:this.$={expr:s[o-2],as:s[o]};break;case 83:this.$={removecolumns:s[o]};break;case 87:this.$={like:s[o]};break;case 90:case 104:this.$={srchid:"PROP",args:[s[o]]};break;case 91:this.$={srchid:"ORDERBY",args:s[o-1]};break;case 92:var u=s[o-1];u||(u="ASC"),this.$={srchid:"ORDERBY",args:[{expression:new n.Column({columnid:"_"}),direction:u}]};break;case 93:this.$={srchid:"PARENT"};break;case 94:this.$={srchid:"APROP",args:[s[o]]};break;case 95:this.$={selid:"ROOT"};break;case 96:this.$={srchid:"EQ",args:[s[o]]};break;case 97:this.$={srchid:"LIKE",args:[s[o]]};break;case 98:case 99:this.$={selid:"WITH",args:s[o-1]};break;case 100:this.$={srchid:s[o-3].toUpperCase(),args:s[o-1]};break;case 101:this.$={srchid:"WHERE",args:[s[o-1]]};break;case 102:this.$={selid:"OF",args:[s[o-1]]};break;case 103:this.$={srchid:"CLASS",args:[s[o-1]]};break;case 105:this.$={srchid:"NAME",args:[s[o].substr(1,s[o].length-2)]};break;case 106:this.$={srchid:"CHILD"};break;case 107:this.$={srchid:"VERTEX"};break;case 108:this.$={srchid:"EDGE"};break;case 109:this.$={srchid:"REF"};break;case 110:this.$={srchid:"SHARP",args:[s[o]]};break;case 111:this.$={srchid:"ATTR",args:void 0===s[o]?void 0:[s[o]]};break;case 112:this.$={srchid:"ATTR"};break;case 113:this.$={srchid:"OUT"};break;case 114:this.$={srchid:"IN"};break;case 115:this.$={srchid:"OUTOUT"};break;case 116:this.$={srchid:"ININ"};break;case 117:this.$={srchid:"CONTENT"};break;case 118:this.$={srchid:"EX",args:[new n.Json({value:s[o]})]};break;case 119:this.$={srchid:"AT",args:[s[o]]};break;case 120:this.$={srchid:"AS",args:[s[o]]};break;case 121:this.$={srchid:"SET",args:s[o-1]};break;case 122:this.$={selid:"TO",args:[s[o]]};break;case 123:this.$={srchid:"VALUE"};break;case 124:this.$={srchid:"ROW",args:s[o-1]};break;case 125:this.$={srchid:"CLASS",args:[s[o]]};break;case 126:this.$={selid:s[o],args:[s[o-1]]};break;case 127:this.$={selid:"NOT",args:s[o-1]};break;case 128:this.$={selid:"IF",args:s[o-1]};break;case 129:this.$={selid:s[o-3],args:s[o-1]};break;case 130:this.$={selid:"DISTINCT",args:s[o-1]};break;case 131:this.$={selid:"UNION",args:s[o-1]};break;case 132:this.$={selid:"UNIONALL",args:s[o-1]};break;case 133:this.$={selid:"ALL",args:[s[o-1]]};break;case 134:this.$={selid:"ANY",args:[s[o-1]]};break;case 135:this.$={selid:"INTERSECT",args:s[o-1]};break;case 136:this.$={selid:"EXCEPT",args:s[o-1]};break;case 137:this.$={selid:"AND",args:s[o-1]};break;case 138:this.$={selid:"OR",args:s[o-1]};break;case 139:this.$={selid:"PATH",args:[s[o-1]]};break;case 140:this.$={srchid:"RETURN",args:s[o-1]};break;case 141:this.$={selid:"REPEAT",sels:s[o-3],args:s[o-1]};break;case 142:this.$=s[o-2],this.$.push(s[o]);break;case 144:this.$="PLUS";break;case 145:this.$="STAR";break;case 146:this.$="QUESTION";break;case 148:case 149:this.$=new n.Select({columns:s[o],distinct:!0}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-1]);break;case 150:this.$=new n.Select({columns:s[o],all:!0}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-1]);break;case 151:s[o]?(this.$=new n.Select({columns:s[o]}),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1])):this.$=new n.Select({columns:[new n.Column({columnid:"_"})],modifier:"COLUMN"});break;case 152:"SELECT"==s[o]?this.$=void 0:this.$={modifier:s[o]};break;case 153:this.$={modifier:"VALUE"};break;case 154:this.$={modifier:"ROW"};break;case 155:this.$={modifier:"COLUMN"};break;case 156:this.$={modifier:"MATRIX"};break;case 157:this.$={modifier:"TEXTSTRING"};break;case 158:this.$={modifier:"INDEX"};break;case 159:this.$={modifier:"RECORDSET"};break;case 160:this.$={top:s[o-1],percent:void 0!==s[o]||void 0};break;case 161:this.$={top:s[o-1]};break;case 163:case 330:case 523:case 524:case 724:this.$=void 0;break;case 164:case 165:case 166:case 167:this.$={into:s[o]};break;case 168:var c=s[o];c=c.substr(1,c.length-2);var l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();"#"==c[0]?this.$={into:new n.FuncValue({funcid:"HTML",args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}:"XLS"==l||"CSV"==l||"TAB"==l?this.$={into:new n.FuncValue({funcid:l,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}:"XLSX"!=h&&"JSON"!=h||(this.$={into:new n.FuncValue({funcid:h,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})});break;case 169:this.$={from:s[o]};break;case 170:this.$={from:s[o-1],joins:s[o]};break;case 171:this.$={from:s[o-2],joins:s[o-1]};break;case 173:this.$=new n.Apply({select:s[o-2],applymode:"CROSS",as:s[o]});break;case 174:this.$=new n.Apply({select:s[o-3],applymode:"CROSS",as:s[o]});break;case 175:this.$=new n.Apply({select:s[o-2],applymode:"OUTER",as:s[o]});break;case 176:this.$=new n.Apply({select:s[o-3],applymode:"OUTER",as:s[o]});break;case 178:case 243:case 452:case 530:case 531:this.$=s[o-2],s[o-2].push(s[o]);break;case 179:this.$=s[o-2],this.$.as=s[o];break;case 180:this.$=s[o-3],this.$.as=s[o];break;case 181:this.$=s[o-1],this.$.as="default";break;case 182:this.$=new n.Json({value:s[o-2]}),s[o-2].as=s[o];break;case 183:this.$=s[o-1],s[o-1].as=s[o];break;case 184:this.$=s[o-2],s[o-2].as=s[o];break;case 186:case 638:case 641:this.$=s[o-2];break;case 187:case 191:case 195:case 198:this.$=s[o-1],s[o-1].as=s[o];break;case 188:case 192:case 196:case 199:this.$=s[o-2],s[o-2].as=s[o];break;case 189:case 190:case 194:case 197:this.$=s[o],s[o].as="default";break;case 193:this.$={inserted:!0};break;case 200:var c=s[o];c=c.substr(1,c.length-2);var d,l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();if("#"==c[0])d=new n.FuncValue({funcid:"HTML",args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]});else if("XLS"==l||"CSV"==l||"TAB"==l)d=new n.FuncValue({funcid:l,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]});else{if("XLSX"!=h&&"JSON"!=h)throw new Error("Unknown string in FROM clause");d=new n.FuncValue({funcid:h,args:[new n.StringValue({value:c}),new n.Json({value:{headers:!0}})]})}this.$=d;break;case 201:"INFORMATION_SCHEMA"==s[o-2]?this.$=new n.FuncValue({funcid:s[o-2],args:[new n.StringValue({value:s[o]})]}):this.$=new n.Table({databaseid:s[o-2],tableid:s[o]});break;case 202:this.$=new n.Table({tableid:s[o]});break;case 203:case 204:this.$=s[o-1],s[o-1].push(s[o]);break;case 207:this.$=new n.Join(s[o-2]),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]);break;case 208:this.$={table:s[o]};break;case 209:this.$={table:s[o-1],as:s[o]};break;case 210:this.$={table:s[o-2],as:s[o]};break;case 211:this.$={json:new n.Json({value:s[o-2],as:s[o]})};break;case 212:this.$={param:s[o-1],as:s[o]};break;case 213:this.$={param:s[o-2],as:s[o]};break;case 214:this.$={select:s[o-2],as:s[o]};break;case 215:this.$={select:s[o-3],as:s[o]};break;case 216:this.$={func:s[o],as:"default"};break;case 217:this.$={func:s[o-1],as:s[o]};break;case 218:this.$={func:s[o-2],as:s[o]};break;case 219:this.$={variable:s[o],as:"default"};break;case 220:this.$={variable:s[o-1],as:s[o]};break;case 221:this.$={variable:s[o-2],as:s[o]};break;case 222:this.$={joinmode:s[o]};break;case 223:this.$={joinmode:s[o-1],natural:!0};break;case 224:case 225:this.$="INNER";break;case 226:case 227:this.$="LEFT";break;case 228:case 229:this.$="RIGHT";break;case 230:case 231:this.$="OUTER";break;case 232:this.$="SEMI";break;case 233:this.$="ANTI";break;case 234:this.$="CROSS";break;case 235:this.$={on:s[o]};break;case 236:case 697:this.$={using:s[o]};break;case 239:this.$={where:new n.Expression({expression:s[o]})};break;case 241:this.$={group:s[o-1]},n.extend(this.$,s[o]);break;case 244:this.$=new n.GroupExpression({type:"GROUPING SETS",group:s[o-1]});break;case 245:this.$=new n.GroupExpression({type:"ROLLUP",group:s[o-1]});break;case 246:this.$=new n.GroupExpression({type:"CUBE",group:s[o-1]});break;case 249:this.$={having:s[o]};break;case 251:this.$={union:s[o]};break;case 252:this.$={unionall:s[o]};break;case 253:this.$={except:s[o]};break;case 254:this.$={intersect:s[o]};break;case 255:this.$={union:s[o],corresponding:!0};break;case 256:this.$={unionall:s[o],corresponding:!0};break;case 257:this.$={except:s[o],corresponding:!0};break;case 258:this.$={intersect:s[o],corresponding:!0};break;case 260:this.$={order:s[o]};break;case 262:this.$=s[o-2],s[o-2].push(s[o]);break;case 263:this.$=new n.Expression({expression:s[o],direction:"ASC"});break;case 264:this.$=new n.Expression({expression:s[o-1],direction:s[o].toUpperCase()});break;case 265:this.$=new n.Expression({expression:s[o-2],direction:"ASC",nocase:!0});break;case 266:this.$=new n.Expression({expression:s[o-3],direction:s[o].toUpperCase(),nocase:!0});break;case 268:this.$={limit:s[o-1]},n.extend(this.$,s[o]);break;case 269:this.$={limit:s[o-2],offset:s[o-6]};break;case 271:this.$={offset:s[o]};break;case 272:case 509:case 533:case 648:case 658:case 682:case 684:case 688:s[o-2].push(s[o]),this.$=s[o-2];break;case 274:case 276:case 278:s[o-2].as=s[o],this.$=s[o-2];break;case 275:case 277:case 279:s[o-1].as=s[o],this.$=s[o-1];break;case 281:this.$=new n.Column({columid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 282:this.$=new n.Column({columnid:s[o],tableid:s[o-2]});break;case 283:this.$=new n.Column({columnid:s[o]});break;case 284:this.$=new n.Column({columnid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 285:case 286:this.$=new n.Column({columnid:s[o],tableid:s[o-2]});break;case 287:this.$=new n.Column({columnid:s[o]});break;case 302:this.$=new n.DomainValueValue;break;case 303:this.$=new n.Json({value:s[o]});break;case 306:case 307:case 308:n.queries||(n.queries=[]),n.queries.push(s[o-1]),s[o-1].queriesidx=n.queries.length,this.$=s[o-1];break;case 309:this.$=s[o];break;case 310:this.$=new n.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 311:this.$=new n.JavaScript({value:s[o].substr(2,s[o].length-4)});break;case 312:this.$=new n.JavaScript({value:'alasql.fn["'+s[o-2]+'"] = '+s[o].substr(2,s[o].length-4)});break;case 313:this.$=new n.JavaScript({value:'alasql.aggr["'+s[o-2]+'"] = '+s[o].substr(2,s[o].length-4)});break;case 314:this.$=new n.FuncValue({funcid:s[o],newid:!0});break;case 315:this.$=s[o],n.extend(this.$,{newid:!0});break;case 316:this.$=new n.Convert({expression:s[o-3]}),n.extend(this.$,s[o-1]);break;case 317:this.$=new n.Convert({expression:s[o-5],style:s[o-1]}),n.extend(this.$,s[o-3]);break;case 318:this.$=new n.Convert({expression:s[o-1]}),n.extend(this.$,s[o-3]);break;case 319:this.$=new n.Convert({expression:s[o-3],style:s[o-1]}),n.extend(this.$,s[o-5]);break;case 326:this.$=new n.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 327:s[o-2].length>1&&("MAX"==s[o-4].toUpperCase()||"MIN"==s[o-4].toUpperCase())?this.$=new n.FuncValue({funcid:s[o-4],args:s[o-2]}):this.$=new n.AggrValue({aggregatorid:s[o-4].toUpperCase(),expression:s[o-2].pop(),over:s[o]});break;case 328:this.$=new n.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],distinct:!0,over:s[o]});break;case 329:this.$=new n.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],over:s[o]});break;case 331:case 332:this.$=new n.Over,n.extend(this.$,s[o-1]);break;case 333:this.$=new n.Over,n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]);break;case 334:this.$={partition:s[o]};break;case 335:this.$={order:s[o]};break;case 336:this.$="SUM";break;case 337:this.$="COUNT";break;case 338:this.$="MIN";break;case 339:case 544:this.$="MAX";break;case 340:this.$="AVG";break;case 341:this.$="FIRST";break;case 342:this.$="LAST";break;case 343:this.$="AGGR";break;case 344:this.$="ARRAY";break;case 345:var f=s[o-4],p=s[o-1];p.length>1&&("MIN"==f.toUpperCase()||"MAX"==f.toUpperCase())?this.$=new n.FuncValue({funcid:f,args:p}):T.aggr[s[o-4]]?this.$=new n.AggrValue({aggregatorid:"REDUCE",funcid:f,expression:p.pop(),distinct:"DISTINCT"==s[o-2]}):this.$=new n.FuncValue({funcid:f,args:p});break;case 346:this.$=new n.FuncValue({funcid:s[o-2]});break;case 347:this.$=new n.FuncValue({funcid:"IIF",args:s[o-1]});break;case 348:this.$=new n.FuncValue({funcid:"REPLACE",args:s[o-1]});break;case 349:this.$=new n.FuncValue({funcid:"DATEADD",args:[new n.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 350:this.$=new n.FuncValue({funcid:"DATEADD",args:[s[o-5],s[o-3],s[o-1]]});break;case 351:this.$=new n.FuncValue({funcid:"DATEDIFF",args:[new n.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 352:this.$=new n.FuncValue({funcid:"DATEDIFF",args:[s[o-5],s[o-3],s[o-1]]});break;case 353:this.$=new n.FuncValue({funcid:"INTERVAL",args:[s[o-1],new n.StringValue({value:s[o].toLowerCase()})]});break;case 355:s[o-2].push(s[o]),this.$=s[o-2];break;case 356:this.$=new n.NumValue({value:+s[o]});break;case 357:this.$=new n.LogicValue({value:!0});break;case 358:this.$=new n.LogicValue({value:!1});break;case 359:this.$=new n.StringValue({value:s[o].substr(1,s[o].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 360:this.$=new n.StringValue({value:s[o].substr(2,s[o].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 361:this.$=new n.NullValue({value:void 0});break;case 362:this.$=new n.VarValue({variable:s[o]});break;case 363:n.exists||(n.exists=[]),this.$=new n.ExistsValue({value:s[o-1],existsidx:n.exists.length}),n.exists.push(s[o-1]);break;case 364:this.$=new n.ArrayValue({value:s[o-1]});break;case 365:case 366:this.$=new n.ParamValue({param:s[o]});break;case 367:void 0===n.question&&(n.question=0),this.$=new n.ParamValue({param:n.question++});break;case 368:void 0===n.question&&(n.question=0),this.$=new n.ParamValue({param:n.question++,array:!0});break;case 369:this.$=new n.CaseValue({expression:s[o-3],whens:s[o-2],elses:s[o-1]});break;case 370:this.$=new n.CaseValue({whens:s[o-2],elses:s[o-1]});break;case 371:case 699:case 700:this.$=s[o-1],this.$.push(s[o]);break;case 373:this.$={when:s[o-2],then:s[o]};break;case 376:case 377:this.$=new n.Op({left:s[o-2],op:"REGEXP",right:s[o]});break;case 378:this.$=new n.Op({left:s[o-2],op:"GLOB",right:s[o]});break;case 379:this.$=new n.Op({left:s[o-2],op:"LIKE",right:s[o]});break;case 380:this.$=new n.Op({left:s[o-4],op:"LIKE",right:s[o-2],escape:s[o]});break;case 381:this.$=new n.Op({left:s[o-2],op:"NOT LIKE",right:s[o]});break;case 382:this.$=new n.Op({left:s[o-4],op:"NOT LIKE",right:s[o-2],escape:s[o]});break;case 383:this.$=new n.Op({left:s[o-2],op:"||",right:s[o]});break;case 384:this.$=new n.Op({left:s[o-2],op:"+",right:s[o]});break;case 385:this.$=new n.Op({left:s[o-2],op:"-",right:s[o]});break;case 386:this.$=new n.Op({left:s[o-2],op:"*",right:s[o]});break;case 387:this.$=new n.Op({left:s[o-2],op:"/",right:s[o]});break;case 388:this.$=new n.Op({left:s[o-2],op:"%",right:s[o]});break;case 389:this.$=new n.Op({left:s[o-2],op:"^",right:s[o]});break;case 390:this.$=new n.Op({left:s[o-2],op:">>",right:s[o]});break;case 391:this.$=new n.Op({left:s[o-2],op:"<<",right:s[o]});break;case 392:this.$=new n.Op({left:s[o-2],op:"&",right:s[o]});break;case 393:this.$=new n.Op({left:s[o-2],op:"|",right:s[o]});break;case 394:case 395:case 397:this.$=new n.Op({left:s[o-2],op:"->",right:s[o]});break;case 396:this.$=new n.Op({left:s[o-4],op:"->",right:s[o-1]});break;case 398:case 399:case 401:this.$=new n.Op({left:s[o-2],op:"!",right:s[o]});break;case 400:this.$=new n.Op({left:s[o-4],op:"!",right:s[o-1]});break;case 402:this.$=new n.Op({left:s[o-2],op:">",right:s[o]});break;case 403:this.$=new n.Op({left:s[o-2],op:">=",right:s[o]});break;case 404:this.$=new n.Op({left:s[o-2],op:"<",right:s[o]});break;case 405:this.$=new n.Op({left:s[o-2],op:"<=",right:s[o]});break;case 406:this.$=new n.Op({left:s[o-2],op:"=",right:s[o]});break;case 407:this.$=new n.Op({left:s[o-2],op:"==",right:s[o]});break;case 408:this.$=new n.Op({left:s[o-2],op:"===",right:s[o]});break;case 409:this.$=new n.Op({left:s[o-2],op:"!=",right:s[o]});break;case 410:this.$=new n.Op({left:s[o-2],op:"!==",right:s[o]});break;case 411:this.$=new n.Op({left:s[o-2],op:"!===",right:s[o]});break;case 412:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1],queriesidx:n.queries.length}),n.queries.push(s[o-1]);break;case 413:this.$=new n.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1]});break;case 414:"BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new n.Op({left:s[o-2].left.left,op:"AND",right:new n.Op({left:s[o-2].left.right,op:"BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new n.Op({left:s[o-2].left,op:"BETWEEN",right1:s[o-2].right,right2:s[o]}):"NOT BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new n.Op({left:s[o-2].left.left,op:"AND",right:new n.Op({left:s[o-2].left.right,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new n.Op({left:s[o-2].left,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]}):this.$=new n.Op({left:s[o-2],op:"AND",right:s[o]});break;case 415:this.$=new n.Op({left:s[o-2],op:"OR",right:s[o]});break;case 416:this.$=new n.UniOp({op:"NOT",right:s[o]});break;case 417:this.$=new n.UniOp({op:"-",right:s[o]});break;case 418:this.$=new n.UniOp({op:"+",right:s[o]});break;case 419:this.$=new n.UniOp({op:"~",right:s[o]});break;case 420:this.$=new n.UniOp({op:"#",right:s[o]});break;case 421:this.$=new n.UniOp({right:s[o-1]});break;case 422:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-4],op:"IN",right:s[o-1],queriesidx:n.queries.length}),n.queries.push(s[o-1]);break;case 423:n.queries||(n.queries=[]),this.$=new n.Op({left:s[o-5],op:"NOT IN",right:s[o-1],queriesidx:n.queries.length}),
n.queries.push(s[o-1]);break;case 424:this.$=new n.Op({left:s[o-4],op:"IN",right:s[o-1]});break;case 425:this.$=new n.Op({left:s[o-5],op:"NOT IN",right:s[o-1]});break;case 426:this.$=new n.Op({left:s[o-3],op:"IN",right:[]});break;case 427:this.$=new n.Op({left:s[o-4],op:"NOT IN",right:[]});break;case 428:case 430:this.$=new n.Op({left:s[o-2],op:"IN",right:s[o]});break;case 429:case 431:this.$=new n.Op({left:s[o-3],op:"NOT IN",right:s[o]});break;case 432:this.$=new n.Op({left:s[o-2],op:"BETWEEN1",right:s[o]});break;case 433:this.$=new n.Op({left:s[o-2],op:"NOT BETWEEN1",right:s[o]});break;case 434:this.$=new n.Op({op:"IS",left:s[o-2],right:s[o]});break;case 435:this.$=new n.Op({op:"IS",left:s[o-2],right:new n.UniOp({op:"NOT",right:new n.NullValue({value:void 0})})});break;case 436:this.$=new n.Convert({expression:s[o-2]}),n.extend(this.$,s[o]);break;case 437:case 438:this.$=s[o];break;case 439:this.$=s[o-1];break;case 446:this.$="ALL";break;case 447:this.$="SOME";break;case 448:this.$="ANY";break;case 449:this.$=new n.Update({table:s[o-4],columns:s[o-2],where:s[o]});break;case 450:this.$=new n.Update({table:s[o-2],columns:s[o]});break;case 453:this.$=new n.SetColumn({column:s[o-2],expression:s[o]});break;case 454:this.$=new n.SetColumn({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 455:this.$=new n.Delete({table:s[o-2],where:s[o]});break;case 456:this.$=new n.Delete({table:s[o]});break;case 457:this.$=new n.Insert({into:s[o-2],values:s[o]});break;case 458:this.$=new n.Insert({into:s[o-1],values:s[o]});break;case 459:case 461:this.$=new n.Insert({into:s[o-2],values:s[o],orreplace:!0});break;case 460:case 462:this.$=new n.Insert({into:s[o-1],values:s[o],orreplace:!0});break;case 463:this.$=new n.Insert({into:s[o-2],default:!0});break;case 464:this.$=new n.Insert({into:s[o-5],columns:s[o-3],values:s[o]});break;case 465:this.$=new n.Insert({into:s[o-4],columns:s[o-2],values:s[o]});break;case 466:this.$=new n.Insert({into:s[o-1],select:s[o]});break;case 467:this.$=new n.Insert({into:s[o-1],select:s[o],orreplace:!0});break;case 468:this.$=new n.Insert({into:s[o-4],columns:s[o-2],select:s[o]});break;case 473:this.$=[s[o-1]];break;case 476:this.$=s[o-4],s[o-4].push(s[o-1]);break;case 477:case 478:case 480:case 488:this.$=s[o-2],s[o-2].push(s[o]);break;case 489:this.$=new n.CreateTable({table:s[o-4]}),n.extend(this.$,s[o-7]),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-5]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o]);break;case 490:this.$=new n.CreateTable({table:s[o]}),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,s[o-1]);break;case 492:this.$={class:!0};break;case 502:this.$={temporary:!0};break;case 504:this.$={ifnotexists:!0};break;case 505:this.$={columns:s[o-2],constraints:s[o]};break;case 506:this.$={columns:s[o]};break;case 507:this.$={as:s[o]};break;case 508:case 532:this.$=[s[o]];break;case 510:case 511:case 512:case 513:case 514:s[o].constraintid=s[o-1],this.$=s[o];break;case 517:this.$={type:"CHECK",expression:s[o-1]};break;case 518:this.$={type:"PRIMARY KEY",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 519:this.$={type:"FOREIGN KEY",columns:s[o-5],fktable:s[o-2],fkcolumns:s[o-1]};break;case 525:this.$={type:"UNIQUE",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 534:this.$=new n.ColumnDef({columnid:s[o-2]}),n.extend(this.$,s[o-1]),n.extend(this.$,s[o]);break;case 535:this.$=new n.ColumnDef({columnid:s[o-1]}),n.extend(this.$,s[o]);break;case 536:this.$=new n.ColumnDef({columnid:s[o],dbtypeid:""});break;case 537:this.$={dbtypeid:s[o-5],dbsize:s[o-3],dbprecision:+s[o-1]};break;case 538:this.$={dbtypeid:s[o-3],dbsize:s[o-1]};break;case 539:this.$={dbtypeid:s[o]};break;case 540:this.$={dbtypeid:"ENUM",enumvalues:s[o-1]};break;case 541:this.$=s[o-1],s[o-1].dbtypeid+="["+s[o]+"]";break;case 543:case 750:this.$=+s[o];break;case 545:this.$=void 0;break;case 547:n.extend(s[o-1],s[o]),this.$=s[o-1];break;case 550:this.$={primarykey:!0};break;case 551:case 552:this.$={foreignkey:{table:s[o-1],columnid:s[o]}};break;case 553:this.$={identity:{value:s[o-3],step:s[o-1]}};break;case 554:this.$={identity:{value:1,step:1}};break;case 555:case 557:this.$={default:s[o]};break;case 556:this.$={default:s[o-1]};break;case 558:this.$={null:!0};break;case 559:this.$={notnull:!0};break;case 560:this.$={check:s[o]};break;case 561:this.$={unique:!0};break;case 562:this.$={onupdate:s[o]};break;case 563:this.$={onupdate:s[o-1]};break;case 564:this.$=new n.DropTable({tables:s[o],type:s[o-2]}),n.extend(this.$,s[o-1]);break;case 568:this.$={ifexists:!0};break;case 569:this.$=new n.AlterTable({table:s[o-3],renameto:s[o]});break;case 570:this.$=new n.AlterTable({table:s[o-3],addcolumn:s[o]});break;case 571:this.$=new n.AlterTable({table:s[o-3],modifycolumn:s[o]});break;case 572:this.$=new n.AlterTable({table:s[o-5],renamecolumn:s[o-2],to:s[o]});break;case 573:this.$=new n.AlterTable({table:s[o-3],dropcolumn:s[o]});break;case 574:this.$=new n.AlterTable({table:s[o-2],renameto:s[o]});break;case 575:this.$=new n.AttachDatabase({databaseid:s[o],engineid:s[o-2].toUpperCase()});break;case 576:this.$=new n.AttachDatabase({databaseid:s[o-3],engineid:s[o-5].toUpperCase(),args:s[o-1]});break;case 577:this.$=new n.AttachDatabase({databaseid:s[o-2],engineid:s[o-4].toUpperCase(),as:s[o]});break;case 578:this.$=new n.AttachDatabase({databaseid:s[o-5],engineid:s[o-7].toUpperCase(),as:s[o],args:s[o-3]});break;case 579:this.$=new n.DetachDatabase({databaseid:s[o]});break;case 580:this.$=new n.CreateDatabase({databaseid:s[o]}),n.extend(this.$,s[o]);break;case 581:this.$=new n.CreateDatabase({engineid:s[o-4].toUpperCase(),databaseid:s[o-1],as:s[o]}),n.extend(this.$,s[o-2]);break;case 582:this.$=new n.CreateDatabase({engineid:s[o-7].toUpperCase(),databaseid:s[o-4],args:s[o-2],as:s[o]}),n.extend(this.$,s[o-5]);break;case 583:this.$=new n.CreateDatabase({engineid:s[o-4].toUpperCase(),as:s[o],args:[s[o-1]]}),n.extend(this.$,s[o-2]);break;case 584:this.$=void 0;break;case 586:case 587:this.$=new n.UseDatabase({databaseid:s[o]});break;case 588:this.$=new n.DropDatabase({databaseid:s[o]}),n.extend(this.$,s[o-1]);break;case 589:case 590:this.$=new n.DropDatabase({databaseid:s[o],engineid:s[o-3].toUpperCase()}),n.extend(this.$,s[o-1]);break;case 591:this.$=new n.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1]});break;case 592:this.$=new n.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1],unique:!0});break;case 593:this.$=new n.DropIndex({indexid:s[o]});break;case 594:this.$=new n.ShowDatabases;break;case 595:this.$=new n.ShowDatabases({like:s[o]});break;case 596:this.$=new n.ShowDatabases({engineid:s[o-1].toUpperCase()});break;case 597:this.$=new n.ShowDatabases({engineid:s[o-3].toUpperCase(),like:s[o]});break;case 598:this.$=new n.ShowTables;break;case 599:this.$=new n.ShowTables({like:s[o]});break;case 600:this.$=new n.ShowTables({databaseid:s[o]});break;case 601:this.$=new n.ShowTables({like:s[o],databaseid:s[o-2]});break;case 602:this.$=new n.ShowColumns({table:s[o]});break;case 603:this.$=new n.ShowColumns({table:s[o-2],databaseid:s[o]});break;case 604:this.$=new n.ShowIndex({table:s[o]});break;case 605:this.$=new n.ShowIndex({table:s[o-2],databaseid:s[o]});break;case 606:this.$=new n.ShowCreateTable({table:s[o]});break;case 607:this.$=new n.ShowCreateTable({table:s[o-2],databaseid:s[o]});break;case 608:this.$=new n.CreateTable({table:s[o-6],view:!0,select:s[o-1],viewcolumns:s[o-4]}),n.extend(this.$,s[o-9]),n.extend(this.$,s[o-7]);break;case 609:this.$=new n.CreateTable({table:s[o-3],view:!0,select:s[o-1]}),n.extend(this.$,s[o-6]),n.extend(this.$,s[o-4]);break;case 613:this.$=new n.DropTable({tables:s[o],view:!0}),n.extend(this.$,s[o-1]);break;case 614:case 760:this.$=new n.ExpressionStatement({expression:s[o]});break;case 615:this.$=new n.Source({url:s[o].value});break;case 616:this.$=new n.Assert({value:s[o]});break;case 617:this.$=new n.Assert({value:s[o].value});break;case 618:this.$=new n.Assert({value:s[o],message:s[o-2]});break;case 620:case 631:case 633:this.$=s[o].value;break;case 621:case 629:this.$=+s[o].value;break;case 622:this.$=!!s[o].value;break;case 630:this.$=""+s[o].value;break;case 639:this.$={};break;case 642:this.$=[];break;case 643:n.extend(s[o-2],s[o]),this.$=s[o-2];break;case 645:this.$={},this.$[s[o-2].substr(1,s[o-2].length-2)]=s[o];break;case 646:case 647:this.$={},this.$[s[o-2]]=s[o];break;case 650:this.$=new n.SetVariable({variable:s[o-2].toLowerCase(),value:s[o]});break;case 651:this.$=new n.SetVariable({variable:s[o-1].toLowerCase(),value:s[o]});break;case 652:this.$=new n.SetVariable({variable:s[o-2],expression:s[o]});break;case 653:this.$=new n.SetVariable({variable:s[o-3],props:s[o-2],expression:s[o]});break;case 654:this.$=new n.SetVariable({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 655:this.$=new n.SetVariable({variable:s[o-3],props:s[o-2],expression:s[o],method:s[o-4]});break;case 656:this.$="@";break;case 657:this.$="$";break;case 663:this.$=!0;break;case 664:this.$=!1;break;case 665:this.$=new n.CommitTransaction;break;case 666:this.$=new n.RollbackTransaction;break;case 667:this.$=new n.BeginTransaction;break;case 668:this.$=new n.If({expression:s[o-2],thenstat:s[o-1],elsestat:s[o]}),s[o-1].exists&&(this.$.exists=s[o-1].exists),s[o-1].queries&&(this.$.queries=s[o-1].queries);break;case 669:this.$=new n.If({expression:s[o-1],thenstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 670:this.$=s[o];break;case 671:this.$=new n.While({expression:s[o-1],loopstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 672:this.$=new n.Continue;break;case 673:this.$=new n.Break;break;case 674:this.$=new n.BeginEnd({statements:s[o-1]});break;case 675:this.$=new n.Print({exprs:s[o]});break;case 676:this.$=new n.Print({select:s[o]});break;case 677:this.$=new n.Require({paths:s[o]});break;case 678:this.$=new n.Require({plugins:s[o]});break;case 679:case 680:this.$=s[o].toUpperCase();break;case 681:this.$=new n.Echo({expr:s[o]});break;case 686:this.$=new n.Declare({declares:s[o]});break;case 689:this.$={variable:s[o-1]},n.extend(this.$,s[o]);break;case 690:this.$={variable:s[o-2]},n.extend(this.$,s[o]);break;case 691:this.$={variable:s[o-3],expression:s[o]},n.extend(this.$,s[o-2]);break;case 692:this.$={variable:s[o-4],expression:s[o]},n.extend(this.$,s[o-2]);break;case 693:this.$=new n.TruncateTable({table:s[o]});break;case 694:this.$=new n.Merge,n.extend(this.$,s[o-4]),n.extend(this.$,s[o-3]),n.extend(this.$,s[o-2]),n.extend(this.$,{matches:s[o-1]}),n.extend(this.$,s[o]);break;case 695:case 696:this.$={into:s[o]};break;case 698:this.$={on:s[o]};break;case 703:this.$={matched:!0,action:s[o]};break;case 704:this.$={matched:!0,expr:s[o-2],action:s[o]};break;case 705:this.$={delete:!0};break;case 706:this.$={update:s[o]};break;case 707:case 708:this.$={matched:!1,bytarget:!0,action:s[o]};break;case 709:case 710:this.$={matched:!1,bytarget:!0,expr:s[o-2],action:s[o]};break;case 711:this.$={matched:!1,bysource:!0,action:s[o]};break;case 712:this.$={matched:!1,bysource:!0,expr:s[o-2],action:s[o]};break;case 713:this.$={insert:!0,values:s[o]};break;case 714:this.$={insert:!0,values:s[o],columns:s[o-3]};break;case 715:this.$={insert:!0,defaultvalues:!0};break;case 716:this.$={insert:!0,defaultvalues:!0,columns:s[o-3]};break;case 718:this.$={output:{columns:s[o]}};break;case 719:this.$={output:{columns:s[o-3],intovar:s[o],method:s[o-1]}};break;case 720:this.$={output:{columns:s[o-2],intotable:s[o]}};break;case 721:this.$={output:{columns:s[o-5],intotable:s[o-3],intocolumns:s[o-1]}};break;case 722:this.$=new n.CreateVertex({class:s[o-3],sharp:s[o-2],name:s[o-1]}),n.extend(this.$,s[o]);break;case 725:this.$={sets:s[o]};break;case 726:this.$={content:s[o]};break;case 727:this.$={select:s[o]};break;case 728:this.$=new n.CreateEdge({from:s[o-3],to:s[o-1],name:s[o-5]}),n.extend(this.$,s[o]);break;case 729:this.$=new n.CreateGraph({graph:s[o]});break;case 730:this.$=new n.CreateGraph({from:s[o]});break;case 733:this.$=s[o-2],s[o-1]&&(this.$.json=new n.Json({value:s[o-1]})),s[o]&&(this.$.as=s[o]);break;case 734:this.$={source:s[o-6],target:s[o]},s[o-3]&&(this.$.json=new n.Json({value:s[o-3]})),s[o-2]&&(this.$.as=s[o-2]),n.extend(this.$,s[o-4]);break;case 735:this.$={source:s[o-5],target:s[o]},s[o-2]&&(this.$.json=new n.Json({value:s[o-3]})),s[o-1]&&(this.$.as=s[o-2]);break;case 736:this.$={source:s[o-2],target:s[o]};break;case 740:this.$={vars:s[o],method:s[o-1]};break;case 743:case 744:var b=s[o-1];this.$={prop:s[o-3],sharp:s[o-2],name:void 0===b?void 0:b.substr(1,b.length-2),class:s[o]};break;case 745:var E=s[o-1];this.$={sharp:s[o-2],name:void 0===E?void 0:E.substr(1,E.length-2),class:s[o]};break;case 746:var g=s[o-1];this.$={name:void 0===g?void 0:g.substr(1,g.length-2),class:s[o]};break;case 747:this.$={class:s[o]};break;case 753:this.$=new n.AddRule({left:s[o-2],right:s[o]});break;case 754:this.$=new n.AddRule({right:s[o]});break;case 757:this.$=new n.Term({termid:s[o]});break;case 758:this.$=new n.Term({termid:s[o-3],args:s[o-1]});break;case 761:this.$=new n.CreateTrigger({trigger:s[o-6],when:s[o-5],action:s[o-4],table:s[o-2],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 762:this.$=new n.CreateTrigger({trigger:s[o-5],when:s[o-4],action:s[o-3],table:s[o-1],funcid:s[o]});break;case 763:this.$=new n.CreateTrigger({trigger:s[o-6],when:s[o-4],action:s[o-3],table:s[o-5],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 764:case 765:case 767:this.$="AFTER";break;case 766:this.$="BEFORE";break;case 768:this.$="INSTEADOF";break;case 769:this.$="INSERT";break;case 770:this.$="DELETE";break;case 771:this.$="UPDATE";break;case 772:this.$=new n.DropTrigger({trigger:s[o]});break;case 773:this.$=new n.Reindex({indexid:s[o]});break;case 1047:case 1067:case 1069:case 1071:case 1075:case 1077:case 1079:case 1081:case 1083:case 1085:this.$=[];break;case 1048:case 1062:case 1064:case 1068:case 1070:case 1072:case 1076:case 1078:case 1080:case 1082:case 1084:case 1086:s[o-1].push(s[o]);break;case 1061:case 1063:this.$=[s[o]]}},table:[t([10,602,764],r,{8:1,9:2,12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,2:n,4:a,5:s,14:i,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),{1:[3]},{10:[1,105],11:106,602:Y,764:W},t(X,[2,8]),t(X,[2,9]),t(K,[2,12]),t(X,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:109,2:n,4:a,5:s,15:[1,110],53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(K,[2,14]),t(K,[2,15]),t(K,[2,16]),t(K,[2,17]),t(K,[2,18]),t(K,[2,19]),t(K,[2,20]),t(K,[2,21]),t(K,[2,22]),t(K,[2,23]),t(K,[2,24]),t(K,[2,25]),t(K,[2,26]),t(K,[2,27]),t(K,[2,28]),t(K,[2,29]),t(K,[2,30]),t(K,[2,31]),t(K,[2,32]),t(K,[2,33]),t(K,[2,34]),t(K,[2,35]),t(K,[2,36]),t(K,[2,37]),t(K,[2,38]),t(K,[2,39]),t(K,[2,40]),t(K,[2,41]),t(K,[2,42]),t(K,[2,43]),t(K,[2,44]),t(K,[2,45]),t(K,[2,46]),t(K,[2,47]),t(K,[2,48]),t(K,[2,49]),t(K,[2,50]),t(K,[2,51]),t(K,[2,52]),t(K,[2,53]),t(K,[2,54]),t(K,[2,55]),t(K,[2,56]),t(K,[2,57]),t(K,[2,58]),t(K,[2,59]),t(K,[2,60]),t(K,[2,61]),t(K,[2,62]),t(K,[2,63]),t(K,[2,64]),t(K,[2,65]),t(K,[2,66]),t(K,[2,67]),{353:[1,111]},{2:n,3:112,4:a,5:s},{2:n,3:114,4:a,5:s,156:Q,200:113,290:z,291:Z,292:ee,293:te},t(re,[2,501],{3:121,348:125,2:n,4:a,5:s,134:ne,135:ae,187:[1,123],193:[1,122],268:[1,129],269:[1,130],357:[1,131],405:[1,120],472:[1,124],509:[1,128]}),{145:se,449:132,450:133},{183:[1,135]},{405:[1,136]},{2:n,3:138,4:a,5:s,130:[1,144],193:[1,139],353:[1,143],397:140,405:[1,137],410:[1,141],509:[1,142]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:145,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Be,je,{340:204,171:[1,205],198:He}),t(Be,je,{340:207,198:He}),{2:n,3:219,4:a,5:s,77:Je,132:Ye,143:le,144:212,145:he,152:fe,156:Q,181:ge,198:[1,210],199:213,200:215,201:214,202:217,209:209,213:We,214:218,290:z,291:Z,292:ee,293:te,302:_e,419:190,420:Ge,424:Ve,453:208},{2:n,3:221,4:a,5:s},{353:[1,222]},t(Xe,[2,1043],{80:223,106:224,107:[1,225]}),t(Ke,[2,1047],{90:226}),{2:n,3:230,4:a,5:s,190:[1,228],193:[1,231],267:[1,227],353:[1,232],405:[1,229]},{353:[1,233]},{2:n,3:236,4:a,5:s,73:234,75:235},t([306,602,764],r,{12:3,13:4,17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,9:238,2:n,4:a,5:s,14:i,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,435:[1,237],436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),{435:[1,239]},{435:[1,240]},{2:n,3:242,4:a,5:s,405:[1,241]},{2:n,3:244,4:a,5:s,199:243},t(Qe,[2,311]),{113:245,132:ue,296:Le},{2:n,3:114,4:a,5:s,113:251,131:oe,132:[1,248],143:le,144:246,145:ze,152:fe,156:Q,181:ge,196:250,200:255,201:254,257:252,258:253,265:Ze,274:247,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,302:_e,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:257,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(K,[2,672]),t(K,[2,673]),{2:n,3:168,4:a,5:s,40:259,56:165,77:ie,79:75,89:c,94:260,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,151:258,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,184:99,189:f,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:266,4:a,5:s,113:263,132:ue,296:Le,444:261,445:262,446:264,447:et},{2:n,3:267,4:a,5:s,143:tt,145:rt,431:268},{2:n,3:168,4:a,5:s,56:165,77:ie,94:271,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{505:[1,272]},{2:n,3:100,4:a,5:s,504:274,506:273},{2:n,3:114,4:a,5:s,156:Q,200:275,290:z,291:Z,292:ee,293:te},{2:n,3:168,4:a,5:s,56:165,77:ie,94:276,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(nt,at,{186:280,164:[1,279],185:[1,277],187:[1,278],195:st}),t(it,[2,757],{77:[1,282]}),t([2,4,5,10,72,77,78,93,98,107,118,128,131,132,137,143,145,152,154,156,162,164,168,169,179,180,181,183,185,187,195,198,232,245,247,265,266,270,271,273,280,281,282,283,284,285,286,287,288,290,291,292,293,294,295,296,297,298,299,302,303,306,310,312,317,420,424,602,764],[2,152],{149:[1,283],150:[1,284],190:[1,285],191:[1,286],192:[1,287],193:[1,288],194:[1,289]}),t(ot,[2,1]),t(ot,[2,2]),{6:290,131:[1,439],172:[1,462],245:[1,411],285:[1,373],286:[1,407],370:[1,404],381:[1,295],402:[1,297],410:[1,549],414:[1,471],416:[1,443],417:[1,509],433:[1,442],435:[1,525],440:[1,342],460:[1,418],464:[1,448],470:[1,341],514:[1,307],515:[1,299],516:[1,399],518:[1,291],519:[1,292],520:[1,293],521:[1,294],522:[1,296],523:[1,298],524:[1,300],525:[1,301],526:[1,302],527:[1,303],528:[1,304],529:[1,305],530:[1,306],531:[1,308],532:[1,309],533:[1,310],534:[1,311],535:[1,312],536:[1,313],537:[1,314],538:[1,315],539:[1,316],540:[1,317],541:[1,318],542:[1,319],543:[1,320],544:[1,321],545:[1,322],546:[1,323],547:[1,324],548:[1,325],549:[1,326],550:[1,327],551:[1,328],552:[1,329],553:[1,330],554:[1,331],555:[1,332],556:[1,333],557:[1,334],558:[1,335],559:[1,336],560:[1,337],561:[1,338],562:[1,339],563:[1,340],564:[1,343],565:[1,344],566:[1,345],567:[1,346],568:[1,347],569:[1,348],570:[1,349],571:[1,350],572:[1,351],573:[1,352],574:[1,353],575:[1,354],576:[1,355],577:[1,356],578:[1,357],579:[1,358],580:[1,359],581:[1,360],582:[1,361],583:[1,362],584:[1,363],585:[1,364],586:[1,365],587:[1,366],588:[1,367],589:[1,368],590:[1,369],591:[1,370],592:[1,371],593:[1,372],594:[1,374],595:[1,375],596:[1,376],597:[1,377],598:[1,378],599:[1,379],600:[1,380],601:[1,381],602:[1,382],603:[1,383],604:[1,384],605:[1,385],606:[1,386],607:[1,387],608:[1,388],609:[1,389],610:[1,390],611:[1,391],612:[1,392],613:[1,393],614:[1,394],615:[1,395],616:[1,396],617:[1,397],618:[1,398],619:[1,400],620:[1,401],621:[1,402],622:[1,403],623:[1,405],624:[1,406],625:[1,408],626:[1,409],627:[1,410],628:[1,412],629:[1,413],630:[1,414],631:[1,415],632:[1,416],633:[1,417],634:[1,419],635:[1,420],636:[1,421],637:[1,422],638:[1,423],639:[1,424],640:[1,425],641:[1,426],642:[1,427],643:[1,428],644:[1,429],645:[1,430],646:[1,431],647:[1,432],648:[1,433],649:[1,434],650:[1,435],651:[1,436],652:[1,437],653:[1,438],654:[1,440],655:[1,441],656:[1,444],657:[1,445],658:[1,446],659:[1,447],660:[1,449],661:[1,450],662:[1,451],663:[1,452],664:[1,453],665:[1,454],666:[1,455],667:[1,456],668:[1,457],669:[1,458],670:[1,459],671:[1,460],672:[1,461],673:[1,463],674:[1,464],675:[1,465],676:[1,466],677:[1,467],678:[1,468],679:[1,469],680:[1,470],681:[1,472],682:[1,473],683:[1,474],684:[1,475],685:[1,476],686:[1,477],687:[1,478],688:[1,479],689:[1,480],690:[1,481],691:[1,482],692:[1,483],693:[1,484],694:[1,485],695:[1,486],696:[1,487],697:[1,488],698:[1,489],699:[1,490],700:[1,491],701:[1,492],702:[1,493],703:[1,494],704:[1,495],705:[1,496],706:[1,497],707:[1,498],708:[1,499],709:[1,500],710:[1,501],711:[1,502],712:[1,503],713:[1,504],714:[1,505],715:[1,506],716:[1,507],717:[1,508],718:[1,510],719:[1,511],720:[1,512],721:[1,513],722:[1,514],723:[1,515],724:[1,516],725:[1,517],726:[1,518],727:[1,519],728:[1,520],729:[1,521],730:[1,522],731:[1,523],732:[1,524],733:[1,526],734:[1,527],735:[1,528],736:[1,529],737:[1,530],738:[1,531],739:[1,532],740:[1,533],741:[1,534],742:[1,535],743:[1,536],744:[1,537],745:[1,538],746:[1,539],747:[1,540],748:[1,541],749:[1,542],750:[1,543],751:[1,544],752:[1,545],753:[1,546],754:[1,547],755:[1,548],756:[1,550],757:[1,551],758:[1,552],759:[1,553],760:[1,554],761:[1,555],762:[1,556],763:[1,557]},{1:[2,6]},t(X,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:558,2:n,4:a,5:s,53:o,72:u,89:c,124:l,146:h,156:d,189:f,266:p,267:b,290:E,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(ut,[2,1041]),t(ut,[2,1042]),t(X,[2,10]),{16:[1,559]},{2:n,3:244,4:a,5:s,199:560},{405:[1,561]},t(K,[2,760]),{77:ct},{77:[1,563]},{77:lt},{77:[1,565]},{77:[1,566]},{2:n,3:168,4:a,5:s,56:165,77:ie,94:567,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},t(Be,ht,{350:568,156:dt}),{405:[1,570]},{2:n,3:571,4:a,5:s},{193:[1,572]},{2:n,3:578,4:a,5:s,132:ft,137:pt,143:tt,145:rt,152:bt,183:[1,574],431:585,473:573,474:575,475:576,478:577,482:582,493:579,497:581},{130:[1,589],349:586,353:[1,588],410:[1,587]},{113:591,132:ue,183:[2,1141],296:Le,471:590},t(Et,[2,1135],{465:592,3:593,2:n,4:a,5:s}),{2:n,3:594,4:a,5:s},{4:[1,595]},{4:[1,596]},t(re,[2,502]),t(K,[2,686],{74:[1,597]}),t(gt,[2,687]),{2:n,3:598,4:a,5:s},{2:n,3:244,4:a,5:s,199:599},{2:n,3:600,4:a,5:s},t(Be,mt,{398:601,156:vt}),{405:[1,603]},{2:n,3:604,4:a,5:s},t(Be,mt,{398:605,156:vt}),t(Be,mt,{398:606,156:vt}),{2:n,3:607,4:a,5:s},t(St,[2,1129]),t(St,[2,1130]),t(K,r,{17:5,18:7,19:8,20:9,21:10,22:11,23:12,24:13,25:14,26:15,27:16,28:17,29:18,30:19,31:20,32:21,33:22,34:23,35:24,36:25,37:26,38:27,39:28,40:29,41:30,42:31,43:32,44:33,45:34,46:35,47:36,48:37,49:38,50:39,51:40,52:41,54:43,55:44,56:45,57:46,58:47,59:48,60:49,61:50,62:51,63:52,64:53,65:54,66:55,67:56,68:57,69:58,70:59,71:60,79:75,504:95,184:99,3:100,12:608,114:625,327:637,2:n,4:a,5:s,53:o,72:u,89:c,99:Tt,112:At,115:yt,116:Nt,123:Ct,124:Rt,133:Ot,136:wt,138:It,139:xt,140:Dt,141:kt,142:Lt,146:h,154:$t,156:d,170:Mt,171:Ut,179:_t,180:Ft,189:f,266:p,267:b,290:E,311:Pt,312:qt,313:Gt,315:Vt,316:Bt,317:jt,318:Ht,319:Jt,320:Yt,321:Wt,322:Xt,323:Kt,324:Qt,325:zt,326:Zt,330:er,331:tr,332:rr,333:nr,335:g,338:m,339:v,396:S,400:A,401:y,404:N,406:C,408:R,409:w,417:I,418:x,434:D,436:k,437:L,439:$,440:M,441:U,442:_,443:F,447:P,448:q,451:G,452:V,505:B,507:j,508:H,517:J}),t(Qe,[2,288]),t(Qe,[2,289]),t(Qe,[2,290]),t(Qe,[2,291]),t(Qe,[2,292]),t(Qe,[2,293]),t(Qe,[2,294]),t(Qe,[2,295]),t(Qe,[2,296]),t(Qe,[2,297]),t(Qe,[2,298]),t(Qe,[2,299]),t(Qe,[2,300]),t(Qe,[2,301]),t(Qe,[2,302]),t(Qe,[2,303]),t(Qe,[2,304]),t(Qe,[2,305]),{2:n,3:168,4:a,5:s,26:654,27:653,36:649,40:648,56:165,77:ie,79:75,89:c,94:651,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,184:99,189:f,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,264:650,265:me,266:p,267:[1,655],270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:[1,652],291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,339:v,419:190,420:Ge,424:Ve},t(Qe,[2,309]),t(Qe,[2,310]),{77:[1,656]},t([2,4,5,10,53,72,74,76,78,89,93,95,98,99,107,112,115,118,122,123,124,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,145,146,148,149,150,152,154,156,162,164,166,168,169,170,171,172,173,175,179,180,181,183,185,187,189,198,206,208,222,223,224,225,226,227,228,229,232,239,242,243,245,247,266,267,280,281,282,283,284,285,286,287,288,290,296,300,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,330,331,332,333,335,338,339,396,400,401,404,406,408,409,417,418,420,424,434,436,437,439,440,441,442,443,447,448,451,452,464,470,505,507,508,517,602,764],ar,{77:ct,116:[1,657]}),{2:n,3:168,4:a,5:s,56:165,77:ie,94:658,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:659,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:660,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:661,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve},{2:n,3:168,4:a,5:s,56:165,77:ie,94:662,111:149,113:153,131:oe,132:ue,137:ce,143:le,144:161,145:he,149:de,152:fe,154:pe,156:Q,158:167,179:be,180:Ee,181:ge,196:151,200:147,201:155,202:156,254:150,255:146,256:148,257:152,258:154,259:157,260:158,261:159,262:162,263:163,265:me,266:p,270:ve,271:Se,273:Te,280:Ae,281:ye,282:Ne,283:Ce,284:Re,285:Oe,286:we,287:Ie,288:xe,290:z,291:Z,292:ee,293:te,294:De,295:ke,296:Le,297:$e,298:Me,299:Ue,302:_e,303:Fe,312:Pe,317:qe,419:190,420:Ge,424:Ve
diff --git a/src/39dojoin.js b/src/39dojoin.js
index b1ee637e4e..a5bacb2e9d 100755
--- a/src/39dojoin.js
+++ b/src/39dojoin.js
@@ -158,50 +158,46 @@ function doJoin(query, scope, h) {
// STEP 2
- if (h + 1 < query.sources.length) {
- if (
- nextsource.joinmode == 'OUTER' ||
- nextsource.joinmode == 'RIGHT' ||
- nextsource.joinmode == 'ANTI'
- ) {
- scope[source.alias] = {};
-
- var j = 0;
- var jlen = nextsource.data.length;
- var dataw;
-
- while (
- (dataw = nextsource.data[j]) ||
- (nextsource.getfn && (dataw = nextsource.getfn(j))) ||
- j < jlen
+ if (h == 0) {
+ for (var nh = h + 1; nh < query.sources.length; nh++) {
+ if (
+ nextsource.joinmode == 'OUTER' ||
+ nextsource.joinmode == 'RIGHT' ||
+ nextsource.joinmode == 'ANTI'
) {
- if (nextsource.getfn && !nextsource.dontcache) {
- nextsource.data[j] = dataw;
- }
+ scope[source.alias] = {};
+
+ var j = 0;
+ var jlen = nextsource.data.length;
+ var dataw;
+
+ while (
+ (dataw = nextsource.data[j]) ||
+ (nextsource.getfn && (dataw = nextsource.getfn(j))) ||
+ j < jlen
+ ) {
+ if (nextsource.getfn && !nextsource.dontcache) {
+ nextsource.data[j] = dataw;
+ }
- // console.log(169,dataw._rightjoin,scope);
- if (dataw._rightjoin) {
- delete dataw._rightjoin;
- } else {
- // delete dataw._rightjoin;
- // console.log(163,h,scope);
- if (h == 0) {
- scope[nextsource.alias] = dataw;
- doJoin(query, scope, h + 2);
+ // console.log(169,dataw._rightjoin,scope);
+ if (dataw._rightjoin) {
+ delete dataw._rightjoin;
} else {
- //scope[nextsource.alias] = dataw;
- //doJoin(query, scope, h+2);
- // console.log(169,scope);
+ // delete dataw._rightjoin;
+ // console.log(163,h,scope);
+ scope[nextsource.alias] = dataw;
+ doJoin(query, scope, nh + 1);
}
+ j++;
}
- j++;
+ // debugger;
+ } else {
+ //console.log(180,scope);
}
- // debugger;
- } else {
- //console.log(180,scope);
+ source = query.sources[nh];
+ nextsource = query.sources[nh + 1];
}
- } else {
- // console.log(179,scope);
}
scope[tableid] = undefined;
@@ -210,7 +206,7 @@ function doJoin(query, scope, h) {
if(h+1 < query.sources.length) {
var nextsource = query.sources[h+1];
- if(nextsource.joinmode == "OUTER" || nextsource.joinmode == "RIGHT"
+ if(nextsource.joinmode == "OUTER" || nextsource.joinmode == "RIGHT"
|| nextsource.joinmode == "ANTI") {
@@ -224,7 +220,7 @@ function doJoin(query, scope, h) {
//debugger;
// var source = query.sources[h];
-// var tableid = source.alias || source.tableid;
+// var tableid = source.alias || source.tableid;
// var data = source.data;
// Reduce data for looping if there is optimization hint
@@ -254,7 +250,7 @@ function doJoin(query, scope, h) {
// scope[tableid] = {};
// console.log(scope);
doJoin(query,scope,h+2);
- }
+ }
};
// Additional join for LEFT JOINS
diff --git a/test/test800.js b/test/test800.js
index b48cb52821..7eddf5bff2 100644
--- a/test/test800.js
+++ b/test/test800.js
@@ -6,6 +6,15 @@ if (typeof exports === 'object') {
}
describe('Test 800 - OUTER JOIN missing ids', function() {
+ before(function() {
+ alasql('CREATE DATABASE test800;USE test800');
+ });
+
+ after(function() {
+ alasql.options.modifier = undefined;
+ alasql('DROP DATABASE test800');
+ });
+
it('1. ARRAY()', function(done) {
var t1 = [
{id: '1', a: 'one'},
diff --git a/test/test801.js b/test/test801.js
new file mode 100644
index 0000000000..95eb70de7b
--- /dev/null
+++ b/test/test801.js
@@ -0,0 +1,55 @@
+if (typeof exports === 'object') {
+ var assert = require('assert');
+ var alasql = require('..');
+} else {
+ __dirname = '.';
+}
+
+describe('Test 801 - OUTER JOIN of 4 tables', function() {
+ it('1. ARRAY()', function(done) {
+ var t1 = [
+ {id: '1', a: 'one'},
+ {id: '2', a: 'two'},
+ {id: '3', a: 'three'},
+ {id: '4', a: 'four'}
+ ];
+ var t2 = [
+ {id: '1', b: 'A'},
+ {id: '2', b: 'B'},
+ {id: '5', b: 'E'},
+ {id: '6', b: 'F'}
+ ];
+ var t3 = [
+ {id: '1', c: 'I'},
+ {id: '4', c: 'IV'},
+ {id: '5', c: 'V'},
+ {id: '7', c: 'VII'},
+ {id: '8', c: 'VIII'}
+ ];
+ var t4 = [
+ {id: '1', d: 'a'},
+ {id: '8', d: 'h'},
+ {id: '9', d: 'i'}
+ ];
+
+ var res = alasql('SELECT * FROM ? T1 ' +
+ 'OUTER JOIN ? T2 ON T1.id = T2.id ' +
+ 'OUTER JOIN ? T3 ON T1.id = T3.id OR T2.id = T3.id ' +
+ 'OUTER JOIN ? T4 ON T1.id = T4.id OR T2.id = T4.id OR T3.id = T4.id', [t1, t2, t3, t4]);
+
+ var expected = [
+ {id: '1', a: 'one', b: 'A', c: 'I', d: 'a'},
+ {id: '2', a: 'two', b: 'B'},
+ {id: '3', a: 'three'},
+ {id: '4', a: 'four', c: 'IV'},
+ {id: '5', b: 'E', c: 'V'},
+ {id: '6', b: 'F'},
+ {id: '7', c: 'VII'},
+ {id: '8', c: 'VIII', d: 'h'},
+ {id: '9', d: 'i'}
+ ];
+
+ assert.deepEqual(res, expected);
+ done();
+ });
+});