Comparing version 0.5.7 to 0.6.0
@@ -0,24 +1,3 @@ | ||
import { Artifact, Script } from '@cashscript/utils'; | ||
import { Ast } from '../ast/AST'; | ||
import { Script } from '../generation/Script'; | ||
export interface AbiInput { | ||
name: string; | ||
type: string; | ||
} | ||
export interface AbiFunction { | ||
name: string; | ||
covenant: boolean; | ||
inputs: AbiInput[]; | ||
} | ||
export interface Artifact { | ||
contractName: string; | ||
constructorInputs: AbiInput[]; | ||
abi: AbiFunction[]; | ||
bytecode: string; | ||
source: string; | ||
compiler: { | ||
name: string; | ||
version: string; | ||
}; | ||
updatedAt: string; | ||
} | ||
export declare function generateArtifact(ast: Ast, script: Script, source: string): Artifact; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.generateArtifact = void 0; | ||
const utils_1 = require("@cashscript/utils"); | ||
const __1 = require(".."); | ||
const util_1 = require("../util"); | ||
function generateArtifact(ast, script, source) { | ||
@@ -17,3 +18,3 @@ const { contract } = ast; | ||
})); | ||
const bytecode = util_1.Data.scriptToAsm(script); | ||
const bytecode = utils_1.scriptToAsm(script); | ||
return { | ||
@@ -20,0 +21,0 @@ contractName: contract.name, |
@@ -0,1 +1,2 @@ | ||
import { Type } from '@cashscript/utils'; | ||
import { TimeOp, PreimageField } from './Globals'; | ||
@@ -5,3 +6,2 @@ import AstVisitor from './AstVisitor'; | ||
import { Location } from './Location'; | ||
import { Type } from './Type'; | ||
import { SymbolTable, Symbol } from './SymbolTable'; | ||
@@ -8,0 +8,0 @@ export declare type Ast = SourceFileNode; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const Type_1 = require("./Type"); | ||
exports.HexLiteralNode = exports.StringLiteralNode = exports.IntLiteralNode = exports.BoolLiteralNode = exports.LiteralNode = exports.IdentifierNode = exports.ArrayNode = exports.UnaryOpNode = exports.BinaryOpNode = exports.TupleIndexOpNode = exports.InstantiationNode = exports.FunctionCallNode = exports.CastNode = exports.ExpressionNode = exports.BlockNode = exports.BranchNode = exports.RequireNode = exports.TimeOpNode = exports.AssignNode = exports.VariableDefinitionNode = exports.StatementNode = exports.ParameterNode = exports.FunctionDefinitionNode = exports.ContractNode = exports.SourceFileNode = exports.Node = void 0; | ||
const utils_1 = require("@cashscript/utils"); | ||
class Node { | ||
@@ -221,3 +222,3 @@ } | ||
this.value = value; | ||
this.type = Type_1.PrimitiveType.BOOL; | ||
this.type = utils_1.PrimitiveType.BOOL; | ||
} | ||
@@ -233,3 +234,3 @@ accept(visitor) { | ||
this.value = value; | ||
this.type = Type_1.PrimitiveType.INT; | ||
this.type = utils_1.PrimitiveType.INT; | ||
} | ||
@@ -246,3 +247,3 @@ accept(visitor) { | ||
this.quote = quote; | ||
this.type = Type_1.PrimitiveType.STRING; | ||
this.type = utils_1.PrimitiveType.STRING; | ||
} | ||
@@ -258,3 +259,3 @@ accept(visitor) { | ||
this.value = value; | ||
this.type = new Type_1.BytesType(value.byteLength); | ||
this.type = new utils_1.BytesType(value.byteLength); | ||
} | ||
@@ -261,0 +262,0 @@ accept(visitor) { |
@@ -39,3 +39,4 @@ import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor'; | ||
createStringLiteral(ctx: LiteralContext): StringLiteralNode; | ||
createDateLiteral(ctx: LiteralContext): IntLiteralNode; | ||
createHexLiteral(ctx: LiteralContext): HexLiteralNode; | ||
} |
@@ -7,2 +7,3 @@ "use strict"; | ||
const libauth_1 = require("@bitauth/libauth"); | ||
const utils_1 = require("@cashscript/utils"); | ||
const AbstractParseTreeVisitor_1 = require("antlr4ts/tree/AbstractParseTreeVisitor"); | ||
@@ -16,3 +17,2 @@ const semver_1 = __importDefault(require("semver")); | ||
const Errors_1 = require("../Errors"); | ||
const Type_1 = require("./Type"); | ||
class AstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor { | ||
@@ -74,3 +74,3 @@ constructor(tree) { | ||
visitParameter(ctx) { | ||
const type = Type_1.parseType(ctx.typeName().text); | ||
const type = utils_1.parseType(ctx.typeName().text); | ||
const name = ctx.Identifier().text; | ||
@@ -82,3 +82,3 @@ const parameter = new AST_1.ParameterNode(type, name); | ||
visitVariableDefinition(ctx) { | ||
const type = Type_1.parseType(ctx.typeName().text); | ||
const type = utils_1.parseType(ctx.typeName().text); | ||
const name = ctx.Identifier().text; | ||
@@ -128,3 +128,3 @@ const expression = this.visit(ctx.expression()); | ||
visitCast(ctx) { | ||
const type = Type_1.parseType(ctx.typeName().text); | ||
const type = utils_1.parseType(ctx.typeName().text); | ||
const expression = this.visit(ctx._castable); | ||
@@ -208,2 +208,5 @@ const size = ctx._size && this.visit(ctx._size); | ||
} | ||
if (ctx.DateLiteral()) { | ||
return this.createDateLiteral(ctx); | ||
} | ||
if (ctx.HexLiteral()) { | ||
@@ -239,2 +242,16 @@ return this.createHexLiteral(ctx); | ||
} | ||
createDateLiteral(ctx) { | ||
const rawString = ctx.DateLiteral().text; | ||
const stringValue = rawString.substring(6, rawString.length - 2).trim(); | ||
if (!/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d$/.test(stringValue)) { | ||
throw new Errors_1.ParseError('Date should be in format `YYYY-MM-DDThh:mm:ss`', Location_1.Location.fromCtx(ctx)); | ||
} | ||
const timestamp = Math.round(Date.parse(stringValue) / 1000); | ||
if (Number.isNaN(timestamp)) { | ||
throw new Errors_1.ParseError(`Incorrectly formatted date "${stringValue}"`, Location_1.Location.fromCtx(ctx)); | ||
} | ||
const intLiteral = new AST_1.IntLiteralNode(timestamp); | ||
intLiteral.location = Location_1.Location.fromCtx(ctx); | ||
return intLiteral; | ||
} | ||
createHexLiteral(ctx) { | ||
@@ -241,0 +258,0 @@ const hexString = ctx.HexLiteral().text; |
@@ -14,3 +14,3 @@ "use strict"; | ||
visitOptionalList(nodes) { | ||
return nodes && nodes.map((n) => this.visit(n)); | ||
return nodes && this.visitList(nodes); | ||
} | ||
@@ -17,0 +17,0 @@ } |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.GLOBAL_SYMBOL_TABLE = exports.PreimageField = exports.Class = exports.TimeOp = exports.GlobalFunction = exports.NumberUnit = void 0; | ||
const utils_1 = require("@cashscript/utils"); | ||
const SymbolTable_1 = require("./SymbolTable"); | ||
const Type_1 = require("./Type"); | ||
exports.NumberUnit = { | ||
@@ -58,29 +59,29 @@ SATOSHIS: 1, | ||
// Preimage fields | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.VERSION, new Type_1.BytesType(4))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.HASHPREVOUTS, new Type_1.BytesType(32))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.HASHSEQUENCE, new Type_1.BytesType(32))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.OUTPOINT, new Type_1.BytesType(36))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.BYTECODE, new Type_1.BytesType())); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.VALUE, new Type_1.BytesType(8))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.SEQUENCE, new Type_1.BytesType(4))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.HASHOUTPUTS, new Type_1.BytesType(32))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.LOCKTIME, new Type_1.BytesType(4))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.HASHTYPE, new Type_1.BytesType(4))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.VERSION, new utils_1.BytesType(4))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.HASHPREVOUTS, new utils_1.BytesType(32))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.HASHSEQUENCE, new utils_1.BytesType(32))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.OUTPOINT, new utils_1.BytesType(36))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.BYTECODE, new utils_1.BytesType())); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.VALUE, new utils_1.BytesType(8))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.SEQUENCE, new utils_1.BytesType(4))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.HASHOUTPUTS, new utils_1.BytesType(32))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.LOCKTIME, new utils_1.BytesType(4))); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.global(PreimageField.HASHTYPE, new utils_1.BytesType(4))); | ||
// Classes | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.class(Class.OUTPUT_P2SH, new Type_1.BytesType(32), [new Type_1.BytesType(8), new Type_1.BytesType(20)])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.class(Class.OUTPUT_P2PKH, new Type_1.BytesType(34), [new Type_1.BytesType(8), new Type_1.BytesType(20)])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.class(Class.OUTPUT_NULLDATA, new Type_1.BytesType(), [new Type_1.ArrayType(new Type_1.BytesType())])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.class(Class.OUTPUT_P2SH, new utils_1.BytesType(32), [new utils_1.BytesType(8), new utils_1.BytesType(20)])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.class(Class.OUTPUT_P2PKH, new utils_1.BytesType(34), [new utils_1.BytesType(8), new utils_1.BytesType(20)])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.class(Class.OUTPUT_NULLDATA, new utils_1.BytesType(), [new utils_1.ArrayType(new utils_1.BytesType())])); | ||
// Global functions | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.ABS, Type_1.PrimitiveType.INT, [Type_1.PrimitiveType.INT])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.MIN, Type_1.PrimitiveType.INT, [Type_1.PrimitiveType.INT, Type_1.PrimitiveType.INT])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.MAX, Type_1.PrimitiveType.INT, [Type_1.PrimitiveType.INT, Type_1.PrimitiveType.INT])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.WITHIN, Type_1.PrimitiveType.BOOL, [Type_1.PrimitiveType.INT, Type_1.PrimitiveType.INT, Type_1.PrimitiveType.INT])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.RIPEMD160, new Type_1.BytesType(20), [Type_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.SHA1, new Type_1.BytesType(20), [Type_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.SHA256, new Type_1.BytesType(32), [Type_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.HASH160, new Type_1.BytesType(20), [Type_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.HASH256, new Type_1.BytesType(32), [Type_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.CHECKSIG, Type_1.PrimitiveType.BOOL, [Type_1.PrimitiveType.SIG, Type_1.PrimitiveType.PUBKEY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.CHECKMULTISIG, Type_1.PrimitiveType.BOOL, [new Type_1.ArrayType(Type_1.PrimitiveType.SIG), new Type_1.ArrayType(Type_1.PrimitiveType.PUBKEY)])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.CHECKDATASIG, Type_1.PrimitiveType.BOOL, [Type_1.PrimitiveType.DATASIG, new Type_1.BytesType(), Type_1.PrimitiveType.PUBKEY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.ABS, utils_1.PrimitiveType.INT, [utils_1.PrimitiveType.INT])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.MIN, utils_1.PrimitiveType.INT, [utils_1.PrimitiveType.INT, utils_1.PrimitiveType.INT])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.MAX, utils_1.PrimitiveType.INT, [utils_1.PrimitiveType.INT, utils_1.PrimitiveType.INT])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.WITHIN, utils_1.PrimitiveType.BOOL, [utils_1.PrimitiveType.INT, utils_1.PrimitiveType.INT, utils_1.PrimitiveType.INT])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.RIPEMD160, new utils_1.BytesType(20), [utils_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.SHA1, new utils_1.BytesType(20), [utils_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.SHA256, new utils_1.BytesType(32), [utils_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.HASH160, new utils_1.BytesType(20), [utils_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.HASH256, new utils_1.BytesType(32), [utils_1.PrimitiveType.ANY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.CHECKSIG, utils_1.PrimitiveType.BOOL, [utils_1.PrimitiveType.SIG, utils_1.PrimitiveType.PUBKEY])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.CHECKMULTISIG, utils_1.PrimitiveType.BOOL, [new utils_1.ArrayType(utils_1.PrimitiveType.SIG), new utils_1.ArrayType(utils_1.PrimitiveType.PUBKEY)])); | ||
exports.GLOBAL_SYMBOL_TABLE.set(SymbolTable_1.Symbol.function(GlobalFunction.CHECKDATASIG, utils_1.PrimitiveType.BOOL, [utils_1.PrimitiveType.DATASIG, new utils_1.BytesType(), utils_1.PrimitiveType.PUBKEY])); | ||
//# sourceMappingURL=Globals.js.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Point = exports.Location = void 0; | ||
class Location { | ||
@@ -11,3 +12,3 @@ constructor(start, end) { | ||
const stop = ((_a = ctx.stop) === null || _a === void 0 ? void 0 : _a.text) ? ctx.stop : ctx.start; | ||
const textLength = (_b = stop.text, (_b !== null && _b !== void 0 ? _b : '')).length; | ||
const textLength = ((_b = stop.text) !== null && _b !== void 0 ? _b : '').length; | ||
const start = new Point(ctx.start.line, ctx.start.charPositionInLine); | ||
@@ -19,3 +20,3 @@ const end = new Point(stop.line, stop.charPositionInLine + textLength); | ||
var _a; | ||
const textLength = (_a = token.text, (_a !== null && _a !== void 0 ? _a : '')).length; | ||
const textLength = ((_a = token.text) !== null && _a !== void 0 ? _a : '').length; | ||
const start = new Point(token.line, token.charPositionInLine); | ||
@@ -22,0 +23,0 @@ const end = new Point(token.line, token.charPositionInLine + textLength); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.BinaryOperator = exports.UnaryOperator = void 0; | ||
var UnaryOperator; | ||
@@ -4,0 +5,0 @@ (function (UnaryOperator) { |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.getVersionOpFromCtx = exports.getPragmaName = exports.VersionOp = exports.PragmaName = void 0; | ||
var PragmaName; | ||
@@ -4,0 +5,0 @@ (function (PragmaName) { |
@@ -0,3 +1,3 @@ | ||
import { Type } from '@cashscript/utils'; | ||
import { VariableDefinitionNode, ParameterNode, IdentifierNode, Node } from './AST'; | ||
import { Type } from './Type'; | ||
export declare class Symbol { | ||
@@ -4,0 +4,0 @@ name: string; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.SymbolTable = exports.SymbolType = exports.Symbol = void 0; | ||
class Symbol { | ||
@@ -48,6 +49,4 @@ constructor(name, type, symbolType, definition, parameters) { | ||
get(name) { | ||
var _a; | ||
let symbol = this.symbols.get(name); | ||
symbol = (symbol !== null && symbol !== void 0 ? symbol : (_a = this.parent) === null || _a === void 0 ? void 0 : _a.get(name)); | ||
return symbol; | ||
var _a, _b; | ||
return (_a = this.symbols.get(name)) !== null && _a !== void 0 ? _a : (_b = this.parent) === null || _b === void 0 ? void 0 : _b.get(name); | ||
} | ||
@@ -54,0 +53,0 @@ getFromThis(name) { |
import { ANTLRErrorListener, RecognitionException, Recognizer } from 'antlr4ts'; | ||
/** | ||
* ANTLR Error Listener that immediately throws on error. This is used so that | ||
* ANTLR doesn't attempt any error recovery during lexing/parsing and fails early. | ||
*/ | ||
export default class ThrowingErrorListener implements ANTLRErrorListener<any> { | ||
static readonly INSTANCE: ThrowingErrorListener; | ||
syntaxError<T>(recognizer: Recognizer<T, any>, offendingSymbol: T, line: number, charPositionInLine: number, msg: string, e?: RecognitionException): void; | ||
syntaxError<T>(recognizer: Recognizer<T, any>, offendingSymbol: T, line: number, charPositionInLine: number, message: string, e?: RecognitionException): void; | ||
} |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const Errors_1 = require("../Errors"); | ||
const Location_1 = require("./Location"); | ||
/** | ||
* ANTLR Error Listener that immediately throws on error. This is used so that | ||
* ANTLR doesn't attempt any error recovery during lexing/parsing and fails early. | ||
*/ | ||
class ThrowingErrorListener { | ||
syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { | ||
throw new Errors_1.ParseError(`line ${line}:${charPositionInLine} ${msg}`); | ||
syntaxError(recognizer, offendingSymbol, line, charPositionInLine, message, e) { | ||
const capitalisedMessage = message.charAt(0).toUpperCase() + message.slice(1); | ||
throw new Errors_1.ParseError(capitalisedMessage, new Location_1.Point(line, charPositionInLine)); | ||
} | ||
@@ -11,0 +14,0 @@ } |
@@ -8,2 +8,3 @@ #! /usr/bin/env node | ||
const libauth_1 = require("@bitauth/libauth"); | ||
const utils_1 = require("@cashscript/utils"); | ||
const commander_1 = require("commander"); | ||
@@ -13,3 +14,2 @@ const fs_1 = __importDefault(require("fs")); | ||
const _1 = require("."); | ||
const util_1 = require("./util"); | ||
commander_1.program | ||
@@ -25,6 +25,2 @@ .storeOptionsAsProperties(false) | ||
.option('-s, --size', 'Display the size in bytes of the compiled bytecode.') | ||
.option('-a, --args <args...>', 'List of constructor arguments to pass into the contract. ' | ||
+ 'Can only be used in combination with either the --hex or --asm flags. ' | ||
+ 'When compiling to a JSON artifact, contract instantiation should be done through the CashScript SDK. ' | ||
+ 'Note that NO type checking is performed by the cashc CLI, so it is safer to use the CashScript SDK.') | ||
.parse(); | ||
@@ -42,26 +38,6 @@ const opts = commander_1.program.opts(); | ||
try { | ||
const artifact = _1.CashCompiler.compileFile(sourceFile); | ||
const script = util_1.Data.asmToScript(artifact.bytecode); | ||
// Parse any provided args and add these to the front of the script | ||
if (opts.args) { | ||
opts.args.forEach((arg) => { | ||
if (arg === 'true') { | ||
script.unshift(util_1.Data.encodeBool(true)); | ||
} | ||
else if (arg === 'false') { | ||
script.unshift(util_1.Data.encodeBool(false)); | ||
} | ||
else if (arg.startsWith('0x')) { | ||
script.unshift(libauth_1.hexToBin(arg.substring(2))); | ||
} | ||
else if (!Number.isNaN(Number(arg))) { | ||
script.unshift(util_1.Data.encodeInt(Number(arg))); | ||
} | ||
else { | ||
script.unshift(util_1.Data.encodeString(arg)); | ||
} | ||
}); | ||
} | ||
const opcount = util_1.countOpcodes(script); | ||
const bytesize = util_1.calculateBytesize(script); | ||
const artifact = _1.compileFile(sourceFile); | ||
const script = utils_1.asmToScript(artifact.bytecode); | ||
const opcount = utils_1.countOpcodes(script); | ||
const bytesize = utils_1.calculateBytesize(script); | ||
if (opcount > 201) { | ||
@@ -74,7 +50,7 @@ console.warn('Warning: Your contract\'s opcount is over the limit of 201 and will not be accepted by the BCH network'); | ||
if (opts.asm) { | ||
console.log(util_1.Data.scriptToAsm(script)); | ||
console.log(utils_1.scriptToAsm(script)); | ||
return; | ||
} | ||
if (opts.hex) { | ||
console.log(libauth_1.binToHex(util_1.Data.scriptToBytecode(script))); | ||
console.log(libauth_1.binToHex(utils_1.scriptToBytecode(script))); | ||
return; | ||
@@ -98,3 +74,3 @@ } | ||
} | ||
_1.Artifacts.export(artifact, outputFile); | ||
utils_1.exportArtifact(artifact, outputFile); | ||
} | ||
@@ -101,0 +77,0 @@ else { |
@@ -1,4 +0,5 @@ | ||
import { IdentifierNode, FunctionDefinitionNode, VariableDefinitionNode, ParameterNode, Node, FunctionCallNode, BinaryOpNode, UnaryOpNode, TimeOpNode, CastNode, AssignNode, BranchNode, ArrayNode, TupleIndexOpNode, RequireNode, InstantiationNode } from './ast/AST'; | ||
import { Type, PrimitiveType } from './ast/Type'; | ||
import { Type, PrimitiveType } from '@cashscript/utils'; | ||
import { IdentifierNode, FunctionDefinitionNode, VariableDefinitionNode, ParameterNode, Node, FunctionCallNode, BinaryOpNode, UnaryOpNode, TimeOpNode, CastNode, AssignNode, BranchNode, ArrayNode, TupleIndexOpNode, RequireNode, InstantiationNode, StatementNode, ContractNode } from './ast/AST'; | ||
import { Symbol, SymbolType } from './ast/SymbolTable'; | ||
import { Location, Point } from './ast/Location'; | ||
export declare class CashScriptError extends Error { | ||
@@ -9,2 +10,3 @@ node: Node; | ||
export declare class ParseError extends Error { | ||
constructor(message: string, location?: Point | Location); | ||
} | ||
@@ -34,6 +36,18 @@ export declare class UndefinedReferenceError extends CashScriptError { | ||
} | ||
export declare class EmptyContractError extends CashScriptError { | ||
node: ContractNode; | ||
constructor(node: ContractNode); | ||
} | ||
export declare class EmptyFunctionError extends CashScriptError { | ||
node: FunctionDefinitionNode; | ||
constructor(node: FunctionDefinitionNode); | ||
} | ||
export declare class FinalRequireStatementError extends CashScriptError { | ||
node: StatementNode; | ||
constructor(node: StatementNode); | ||
} | ||
export declare class TypeError extends CashScriptError { | ||
actual?: PrimitiveType | import("./ast/Type").ArrayType | import("./ast/Type").TupleType | import("./ast/Type").BytesType | Type[] | undefined; | ||
expected?: PrimitiveType | import("./ast/Type").ArrayType | import("./ast/Type").TupleType | import("./ast/Type").BytesType | Type[] | undefined; | ||
constructor(node: Node, actual?: PrimitiveType | import("./ast/Type").ArrayType | import("./ast/Type").TupleType | import("./ast/Type").BytesType | Type[] | undefined, expected?: PrimitiveType | import("./ast/Type").ArrayType | import("./ast/Type").TupleType | import("./ast/Type").BytesType | Type[] | undefined, message?: string); | ||
actual?: PrimitiveType | import("@cashscript/utils").ArrayType | import("@cashscript/utils").TupleType | import("@cashscript/utils").BytesType | Type[] | undefined; | ||
expected?: PrimitiveType | import("@cashscript/utils").ArrayType | import("@cashscript/utils").TupleType | import("@cashscript/utils").BytesType | Type[] | undefined; | ||
constructor(node: Node, actual?: PrimitiveType | import("@cashscript/utils").ArrayType | import("@cashscript/utils").TupleType | import("@cashscript/utils").BytesType | Type[] | undefined, expected?: PrimitiveType | import("@cashscript/utils").ArrayType | import("@cashscript/utils").TupleType | import("@cashscript/utils").BytesType | Type[] | undefined, message?: string); | ||
} | ||
@@ -40,0 +54,0 @@ export declare class InvalidParameterTypeError extends TypeError { |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.UnverifiedCovenantError = exports.VersionError = exports.IndexOutOfBoundsError = exports.ArrayElementError = exports.ConstantConditionError = exports.AssignTypeError = exports.CastSizeError = exports.CastTypeError = exports.UnsupportedTypeError = exports.UnequalTypeError = exports.InvalidParameterTypeError = exports.TypeError = exports.FinalRequireStatementError = exports.EmptyFunctionError = exports.EmptyContractError = exports.UnusedVariableError = exports.VariableRedefinitionError = exports.FunctionRedefinitionError = exports.RedefinitionError = exports.InvalidSymbolTypeError = exports.UndefinedReferenceError = exports.ParseError = exports.CashScriptError = void 0; | ||
const utils_1 = require("@cashscript/utils"); | ||
const AST_1 = require("./ast/AST"); | ||
const Type_1 = require("./ast/Type"); | ||
const Location_1 = require("./ast/Location"); | ||
class CashScriptError extends Error { | ||
@@ -17,2 +19,10 @@ constructor(node, message) { | ||
class ParseError extends Error { | ||
constructor(message, location) { | ||
const start = location instanceof Location_1.Point ? location : location === null || location === void 0 ? void 0 : location.start; | ||
if (start) { | ||
message += ` at ${start}`; | ||
} | ||
super(message); | ||
this.name = this.constructor.name; | ||
} | ||
} | ||
@@ -60,5 +70,26 @@ exports.ParseError = ParseError; | ||
exports.UnusedVariableError = UnusedVariableError; | ||
class EmptyContractError extends CashScriptError { | ||
constructor(node) { | ||
super(node, `Contract ${node.name} contains no functions`); | ||
this.node = node; | ||
} | ||
} | ||
exports.EmptyContractError = EmptyContractError; | ||
class EmptyFunctionError extends CashScriptError { | ||
constructor(node) { | ||
super(node, `Function ${node.name} contains no statements`); | ||
this.node = node; | ||
} | ||
} | ||
exports.EmptyFunctionError = EmptyFunctionError; | ||
class FinalRequireStatementError extends CashScriptError { | ||
constructor(node) { | ||
super(node, 'Final statement is expected to be a require() statement'); | ||
this.node = node; | ||
} | ||
} | ||
exports.FinalRequireStatementError = FinalRequireStatementError; | ||
class TypeError extends CashScriptError { | ||
constructor(node, actual, expected, message) { | ||
super(node, (message !== null && message !== void 0 ? message : `Found type '${actual}' where type '${expected}' was expected`)); | ||
super(node, message !== null && message !== void 0 ? message : `Found type '${actual}' where type '${expected}' was expected`); | ||
this.actual = actual; | ||
@@ -87,3 +118,3 @@ this.expected = expected; | ||
if (node instanceof AST_1.BinaryOpNode && node.operator.startsWith('.')) { | ||
if (expected === Type_1.PrimitiveType.INT) { | ||
if (expected === utils_1.PrimitiveType.INT) { | ||
super(node, actual, expected, `Tried to call member 'split' with unsupported parameter type '${actual}'`); | ||
@@ -90,0 +121,0 @@ } |
@@ -0,5 +1,5 @@ | ||
import { Script } from '@cashscript/utils'; | ||
import { ContractNode, ParameterNode, VariableDefinitionNode, FunctionDefinitionNode, AssignNode, IdentifierNode, BranchNode, CastNode, FunctionCallNode, UnaryOpNode, BinaryOpNode, BoolLiteralNode, IntLiteralNode, HexLiteralNode, StringLiteralNode, TimeOpNode, ArrayNode, TupleIndexOpNode, RequireNode, SourceFileNode, Node, InstantiationNode } from '../ast/AST'; | ||
import AstTraversal from '../ast/AstTraversal'; | ||
import { PreimageField } from '../ast/Globals'; | ||
import { Script } from './Script'; | ||
export default class GenerateTargetTraversal extends AstTraversal { | ||
@@ -22,2 +22,3 @@ output: Script; | ||
decodePreimage(fields: PreimageField[]): void; | ||
removeFinalVerify(): void; | ||
cleanStack(): void; | ||
@@ -24,0 +25,0 @@ visitParameter(node: ParameterNode): Node; |
@@ -7,10 +7,9 @@ "use strict"; | ||
const libauth_1 = require("@bitauth/libauth"); | ||
const utils_1 = require("@cashscript/utils"); | ||
const AST_1 = require("../ast/AST"); | ||
const AstTraversal_1 = __importDefault(require("../ast/AstTraversal")); | ||
const Globals_1 = require("../ast/Globals"); | ||
const Type_1 = require("../ast/Type"); | ||
const Script_1 = require("./Script"); | ||
const util_1 = require("../util"); | ||
const preimage_1 = require("./preimage"); | ||
const Operator_1 = require("../ast/Operator"); | ||
const utils_2 = require("./utils"); | ||
class GenerateTargetTraversal extends AstTraversal_1.default { | ||
@@ -61,3 +60,3 @@ constructor() { | ||
// Minimally encode output by going Script -> ASM -> Script | ||
this.output = util_1.Data.asmToScript(util_1.Data.scriptToAsm(this.output)); | ||
this.output = utils_1.asmToScript(utils_1.scriptToAsm(this.output)); | ||
return node; | ||
@@ -75,23 +74,23 @@ } | ||
const selectorIndex = this.getStackIndex('$$'); | ||
this.emit(util_1.Data.encodeInt(selectorIndex)); | ||
this.emit(utils_1.encodeInt(selectorIndex)); | ||
if (i === node.functions.length - 1) { | ||
this.emit(Script_1.Op.OP_ROLL); | ||
this.emit(utils_1.Op.OP_ROLL); | ||
this.removeFromStack(selectorIndex); | ||
} | ||
else { | ||
this.emit(Script_1.Op.OP_PICK); | ||
this.emit(utils_1.Op.OP_PICK); | ||
} | ||
// All functions are if-else statements, except the final one which is | ||
// enforced with NUMEQUALVERIFY | ||
this.emit(util_1.Data.encodeInt(i)); | ||
this.emit(Script_1.Op.OP_NUMEQUAL); | ||
this.emit(utils_1.encodeInt(i)); | ||
this.emit(utils_1.Op.OP_NUMEQUAL); | ||
if (i < node.functions.length - 1) { | ||
this.emit(Script_1.Op.OP_IF); | ||
this.emit(utils_1.Op.OP_IF); | ||
} | ||
else { | ||
this.emit(Script_1.Op.OP_VERIFY); | ||
this.emit(utils_1.Op.OP_VERIFY); | ||
} | ||
f = this.visit(f); | ||
if (i < node.functions.length - 1) { | ||
this.emit(Script_1.Op.OP_ELSE); | ||
this.emit(utils_1.Op.OP_ELSE); | ||
} | ||
@@ -102,3 +101,3 @@ this.stack = [...stackCopy]; | ||
for (let i = 0; i < node.functions.length - 1; i += 1) { | ||
this.emit(Script_1.Op.OP_ENDIF); | ||
this.emit(utils_1.Op.OP_ENDIF); | ||
} | ||
@@ -116,13 +115,3 @@ } | ||
node.body = this.visit(node.body); | ||
// Remove final OP_VERIFY | ||
// If the final opcodes are OP_CHECK{LOCKTIME|SEQUENCE}VERIFY OP_DROP | ||
// Or if the final opcode is OP_ENDIF | ||
// Or if the remaining stack size >=5 (2DROP 2DROP 1 < NIP NIP NIP NIP) | ||
// then push it back to the script, and push OP_TRUE (OP_1) to the stack | ||
const finalOp = this.output.pop(); | ||
this.pushToStack('(value)'); | ||
if (finalOp === Script_1.Op.OP_DROP || finalOp === Script_1.Op.OP_ENDIF || (finalOp && this.stack.length >= 5)) { | ||
this.emit(finalOp); | ||
this.emit(Script_1.Op.OP_1); | ||
} | ||
this.removeFinalVerify(); | ||
this.cleanStack(); | ||
@@ -134,4 +123,4 @@ return node; | ||
this.pushToStack('$preimage', true); | ||
this.emit(util_1.Data.encodeInt(this.getStackIndex('$preimage'))); | ||
this.emit(Script_1.Op.OP_PICK); | ||
this.emit(utils_1.encodeInt(this.getStackIndex('$preimage'))); | ||
this.emit(utils_1.Op.OP_PICK); | ||
const cuts = { | ||
@@ -150,8 +139,8 @@ fromStart: 0, | ||
if (start !== 0) { | ||
this.emit(util_1.Data.encodeInt(start)); | ||
this.emit(Script_1.Op.OP_SPLIT); | ||
this.emit(Script_1.Op.OP_NIP); | ||
this.emit(utils_1.encodeInt(start)); | ||
this.emit(utils_1.Op.OP_SPLIT); | ||
this.emit(utils_1.Op.OP_NIP); | ||
} | ||
this.emit(util_1.Data.encodeInt(part.size)); | ||
this.emit(Script_1.Op.OP_SPLIT); | ||
this.emit(utils_1.encodeInt(part.size)); | ||
this.emit(utils_1.Op.OP_SPLIT); | ||
this.pushToStack(field); | ||
@@ -166,10 +155,10 @@ cuts.fromStart = part.fromStart + part.size; | ||
// See ReplaceBytecodeNop.ts | ||
this.emit(Script_1.Op.OP_NOP); | ||
this.emit(util_1.Data.encodeInt(start)); | ||
this.emit(Script_1.Op.OP_SPLIT); | ||
this.emit(Script_1.Op.OP_NIP); | ||
this.emit(Script_1.Op.OP_SIZE); | ||
this.emit(util_1.Data.encodeInt(part.size)); | ||
this.emit(Script_1.Op.OP_SUB); | ||
this.emit(Script_1.Op.OP_SPLIT); | ||
this.emit(utils_1.Op.OP_NOP); | ||
this.emit(utils_1.encodeInt(start)); | ||
this.emit(utils_1.Op.OP_SPLIT); | ||
this.emit(utils_1.Op.OP_NIP); | ||
this.emit(utils_1.Op.OP_SIZE); | ||
this.emit(utils_1.encodeInt(part.size)); | ||
this.emit(utils_1.Op.OP_SUB); | ||
this.emit(utils_1.Op.OP_SPLIT); | ||
this.pushToStack(Globals_1.PreimageField.BYTECODE); | ||
@@ -190,12 +179,12 @@ cuts.fromStart = 0; | ||
if (end > 0) { | ||
this.emit(Script_1.Op.OP_SIZE); | ||
this.emit(util_1.Data.encodeInt(end)); | ||
this.emit(Script_1.Op.OP_SUB); | ||
this.emit(Script_1.Op.OP_SPLIT); | ||
this.emit(Script_1.Op.OP_NIP); | ||
this.emit(utils_1.Op.OP_SIZE); | ||
this.emit(utils_1.encodeInt(end)); | ||
this.emit(utils_1.Op.OP_SUB); | ||
this.emit(utils_1.Op.OP_SPLIT); | ||
this.emit(utils_1.Op.OP_NIP); | ||
} | ||
else if (start !== 0) { | ||
this.emit(util_1.Data.encodeInt(start)); | ||
this.emit(Script_1.Op.OP_SPLIT); | ||
this.emit(Script_1.Op.OP_NIP); | ||
this.emit(utils_1.encodeInt(start)); | ||
this.emit(utils_1.Op.OP_SPLIT); | ||
this.emit(utils_1.Op.OP_NIP); | ||
} | ||
@@ -205,4 +194,4 @@ this.pushToStack(field); | ||
return; | ||
this.emit(util_1.Data.encodeInt(part.size)); | ||
this.emit(Script_1.Op.OP_SPLIT); | ||
this.emit(utils_1.encodeInt(part.size)); | ||
this.emit(utils_1.Op.OP_SPLIT); | ||
cuts.fromStart = part.fromStart + part.size; | ||
@@ -213,5 +202,27 @@ cuts.fromEnd = part.fromEnd - part.size; | ||
if (!fields.includes(Globals_1.PreimageField.HASHTYPE)) { | ||
this.emit(Script_1.Op.OP_DROP); | ||
this.emit(utils_1.Op.OP_DROP); | ||
} | ||
} | ||
removeFinalVerify() { | ||
// After EnsureFinalRequireTraversal, we know that the final opcodes are either | ||
// "OP_VERIFY", "OP_CHECK{LOCKTIME|SEQUENCE}VERIFY OP_DROP" or "OP_ENDIF" | ||
const finalOp = this.output.pop(); | ||
// If the final op is OP_VERIFY and the stack size is less than 4 we remove it from the script | ||
// - We have the stack size check because it is more efficient to use 2DROP rather than NIP | ||
// if >= 4 elements are left (5 including final value) (e.g. 2DROP 2DROP 1 < NIP NIP NIP NIP) | ||
if (finalOp === utils_1.Op.OP_VERIFY && this.stack.length < 4) { | ||
// Since the final value is no longer popped from the stack by OP_VERIFY, | ||
// we add it back to the stack | ||
this.pushToStack('(value)'); | ||
} | ||
else { | ||
this.emit(finalOp); | ||
// At this point there is no verification value left on the stack: | ||
// - scoped stack is cleared inside branch ended by OP_ENDIF | ||
// - OP_CHECK{LOCKTIME|SEQUENCE}VERIFY OP_DROP does not leave a verification value | ||
// so we add OP_1 to the script (indicating success) | ||
this.emit(utils_1.Op.OP_1); | ||
this.pushToStack('(value)'); | ||
} | ||
} | ||
cleanStack() { | ||
@@ -221,3 +232,3 @@ // Keep final verification value, OP_NIP the other stack values | ||
for (let i = 0; i < stackSize - 1; i += 1) { | ||
this.emit(Script_1.Op.OP_NIP); | ||
this.emit(utils_1.Op.OP_NIP); | ||
this.nipFromStack(); | ||
@@ -251,13 +262,13 @@ } | ||
emitReplace(index) { | ||
this.emit(util_1.Data.encodeInt(index)); | ||
this.emit(Script_1.Op.OP_ROLL); | ||
this.emit(Script_1.Op.OP_DROP); | ||
this.emit(utils_1.encodeInt(index)); | ||
this.emit(utils_1.Op.OP_ROLL); | ||
this.emit(utils_1.Op.OP_DROP); | ||
for (let i = 0; i < index - 1; i += 1) { | ||
this.emit(Script_1.Op.OP_SWAP); | ||
this.emit(utils_1.Op.OP_SWAP); | ||
if (i < index - 2) { | ||
this.emit(Script_1.Op.OP_TOALTSTACK); | ||
this.emit(utils_1.Op.OP_TOALTSTACK); | ||
} | ||
} | ||
for (let i = 0; i < index - 2; i += 1) { | ||
this.emit(Script_1.Op.OP_FROMALTSTACK); | ||
this.emit(utils_1.Op.OP_FROMALTSTACK); | ||
} | ||
@@ -267,3 +278,3 @@ } | ||
node.expression = this.visit(node.expression); | ||
this.emit(Script_1.toOps.fromTimeOp(node.timeOp)); | ||
this.emit(utils_2.compileTimeOp(node.timeOp)); | ||
this.popFromStack(); | ||
@@ -277,3 +288,3 @@ return node; | ||
this.isCheckSigVerify = false; | ||
this.emit(Script_1.Op.OP_VERIFY); | ||
this.emit(utils_1.Op.OP_VERIFY); | ||
this.popFromStack(); | ||
@@ -293,3 +304,3 @@ return node; | ||
this.scopeDepth += 1; | ||
this.emit(Script_1.Op.OP_IF); | ||
this.emit(utils_1.Op.OP_IF); | ||
let stackDepth = this.stack.length; | ||
@@ -299,3 +310,3 @@ node.ifBlock = this.visit(node.ifBlock); | ||
if (node.elseBlock) { | ||
this.emit(Script_1.Op.OP_ELSE); | ||
this.emit(utils_1.Op.OP_ELSE); | ||
stackDepth = this.stack.length; | ||
@@ -305,3 +316,3 @@ node.elseBlock = this.visit(node.elseBlock); | ||
} | ||
this.emit(Script_1.Op.OP_ENDIF); | ||
this.emit(utils_1.Op.OP_ENDIF); | ||
this.scopeDepth -= 1; | ||
@@ -313,3 +324,3 @@ return node; | ||
for (let i = 0; i < dropCount; i += 1) { | ||
this.emit(Script_1.Op.OP_DROP); | ||
this.emit(utils_1.Op.OP_DROP); | ||
this.popFromStack(); | ||
@@ -323,6 +334,6 @@ } | ||
node.size = this.visit(node.size); | ||
this.emit(Script_1.Op.OP_NUM2BIN); | ||
this.emit(utils_1.Op.OP_NUM2BIN); | ||
this.popFromStack(); | ||
} | ||
this.emit(Script_1.toOps.fromCast(node.expression.type, node.type)); | ||
this.emit(utils_2.compileCast(node.expression.type, node.type)); | ||
this.popFromStack(); | ||
@@ -339,3 +350,3 @@ this.pushToStack('(value)'); | ||
this.verifyCovenant(); | ||
this.emit(Script_1.toOps.fromFunction(node.identifier.name)); | ||
this.emit(utils_2.compileGlobalFunction(node.identifier.name)); | ||
this.popFromStack(node.parameters.length); | ||
@@ -346,5 +357,5 @@ this.pushToStack('(value)'); | ||
visitMultiSig(node) { | ||
this.emit(util_1.Data.encodeBool(false)); | ||
this.emit(utils_1.encodeBool(false)); | ||
node.parameters = this.visitList(node.parameters); | ||
this.emit(Script_1.Op.OP_CHECKMULTISIG); | ||
this.emit(utils_1.Op.OP_CHECKMULTISIG); | ||
const sigs = node.parameters[0]; | ||
@@ -369,17 +380,17 @@ const pks = node.parameters[1]; | ||
// Duplicate [s, pk] that are on stack | ||
this.emit(Script_1.Op.OP_2DUP); | ||
this.emit(utils_1.Op.OP_2DUP); | ||
this.pushToStack('(value)'); | ||
this.pushToStack('(value)'); | ||
// Turn sig into datasig | ||
this.emit([Script_1.Op.OP_SWAP, Script_1.Op.OP_SIZE, Script_1.Op.OP_1SUB, Script_1.Op.OP_SPLIT, Script_1.Op.OP_DROP]); | ||
this.emit([utils_1.Op.OP_SWAP, utils_1.Op.OP_SIZE, utils_1.Op.OP_1SUB, utils_1.Op.OP_SPLIT, utils_1.Op.OP_DROP]); | ||
// Retrieve preimage from stack and hash it | ||
const preimageIndex = this.getStackIndex('$preimage'); | ||
this.removeFromStack(preimageIndex); | ||
this.emit(util_1.Data.encodeInt(preimageIndex)); | ||
this.emit(Script_1.Op.OP_ROLL); | ||
this.emit(Script_1.Op.OP_SHA256); | ||
this.emit(utils_1.encodeInt(preimageIndex)); | ||
this.emit(utils_1.Op.OP_ROLL); | ||
this.emit(utils_1.Op.OP_SHA256); | ||
this.pushToStack('(value)'); | ||
// Order arguments and perform OP_CHECKDATASIGVERIFY | ||
this.emit(Script_1.Op.OP_ROT); | ||
this.emit(Script_1.Op.OP_CHECKDATASIGVERIFY); | ||
this.emit(utils_1.Op.OP_ROT); | ||
this.emit(utils_1.Op.OP_CHECKDATASIGVERIFY); | ||
this.popFromStack(3); | ||
@@ -394,9 +405,9 @@ this.covenantNeedsToBeVerified = false; | ||
this.emit(libauth_1.hexToBin('1976a914')); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_CAT); | ||
// <pkh> | ||
this.visit(node.parameters[1]); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_CAT); | ||
// OP_EQUAL OP_CHECKSIG | ||
this.emit(libauth_1.hexToBin('88ac')); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_CAT); | ||
this.popFromStack(2); | ||
@@ -409,9 +420,9 @@ } | ||
this.emit(libauth_1.hexToBin('17a914')); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_CAT); | ||
// <script hash> | ||
this.visit(node.parameters[1]); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_CAT); | ||
// OP_EQUAL | ||
this.emit(libauth_1.hexToBin('87')); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_CAT); | ||
this.popFromStack(2); | ||
@@ -432,3 +443,3 @@ } | ||
// Push the element's size (and calculate VarInt) | ||
this.emit(Script_1.Op.OP_SIZE); | ||
this.emit(utils_1.Op.OP_SIZE); | ||
if (el instanceof AST_1.HexLiteralNode) { | ||
@@ -438,4 +449,4 @@ // If the argument is a literal, we know its size | ||
this.emit(libauth_1.hexToBin('4c')); | ||
this.emit(Script_1.Op.OP_SWAP); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_SWAP); | ||
this.emit(utils_1.Op.OP_CAT); | ||
} | ||
@@ -445,22 +456,22 @@ } | ||
// If the argument is not a literal, the script needs to check size | ||
this.emit(Script_1.Op.OP_DUP); | ||
this.emit(util_1.Data.encodeInt(75)); | ||
this.emit(Script_1.Op.OP_GREATERTHAN); | ||
this.emit(Script_1.Op.OP_IF); | ||
this.emit(utils_1.Op.OP_DUP); | ||
this.emit(utils_1.encodeInt(75)); | ||
this.emit(utils_1.Op.OP_GREATERTHAN); | ||
this.emit(utils_1.Op.OP_IF); | ||
this.emit(libauth_1.hexToBin('4c')); | ||
this.emit(Script_1.Op.OP_SWAP); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(Script_1.Op.OP_ENDIF); | ||
this.emit(utils_1.Op.OP_SWAP); | ||
this.emit(utils_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_ENDIF); | ||
} | ||
// Concat size and arguments | ||
this.emit(Script_1.Op.OP_SWAP); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_SWAP); | ||
this.emit(utils_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_CAT); | ||
this.popFromStack(); | ||
}); | ||
// <VarInt total script size> | ||
this.emit(Script_1.Op.OP_SIZE); | ||
this.emit(Script_1.Op.OP_SWAP); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(Script_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_SIZE); | ||
this.emit(utils_1.Op.OP_SWAP); | ||
this.emit(utils_1.Op.OP_CAT); | ||
this.emit(utils_1.Op.OP_CAT); | ||
this.popFromStack(2); | ||
@@ -477,7 +488,7 @@ } | ||
if (node.index === 0) { | ||
this.emit(Script_1.Op.OP_DROP); | ||
this.emit(utils_1.Op.OP_DROP); | ||
this.popFromStack(); | ||
} | ||
else if (node.index === 1) { | ||
this.emit(Script_1.Op.OP_NIP); | ||
this.emit(utils_1.Op.OP_NIP); | ||
this.nipFromStack(); | ||
@@ -490,3 +501,4 @@ } | ||
node.right = this.visit(node.right); | ||
this.emit(Script_1.toOps.fromBinaryOp(node.operator, Type_1.resultingType(node.left.type, node.right.type) === Type_1.PrimitiveType.INT)); | ||
const isNumeric = utils_1.resultingType(node.left.type, node.right.type) === utils_1.PrimitiveType.INT; | ||
this.emit(utils_2.compileBinaryOp(node.operator, isNumeric)); | ||
this.popFromStack(2); | ||
@@ -500,3 +512,3 @@ this.pushToStack('(value)'); | ||
node.expression = this.visit(node.expression); | ||
this.emit(Script_1.toOps.fromUnaryOp(node.operator)); | ||
this.emit(utils_2.compileUnaryOp(node.operator)); | ||
this.popFromStack(); | ||
@@ -508,3 +520,3 @@ this.pushToStack('(value)'); | ||
node.elements = this.visitList(node.elements); | ||
this.emit(util_1.Data.encodeInt(node.elements.length)); | ||
this.emit(utils_1.encodeInt(node.elements.length)); | ||
this.pushToStack('(value)'); | ||
@@ -515,11 +527,11 @@ return node; | ||
const stackIndex = this.getStackIndex(node.name); | ||
this.emit(util_1.Data.encodeInt(stackIndex)); | ||
this.emit(utils_1.encodeInt(stackIndex)); | ||
// If the final use is inside an if-statement, we still OP_PICK it | ||
// We do this so that there's no difference in stack depths between execution paths | ||
if (this.isOpRoll(node)) { | ||
this.emit(Script_1.Op.OP_ROLL); | ||
this.emit(utils_1.Op.OP_ROLL); | ||
this.removeFromStack(stackIndex); | ||
} | ||
else { | ||
this.emit(Script_1.Op.OP_PICK); | ||
this.emit(utils_1.Op.OP_PICK); | ||
} | ||
@@ -533,3 +545,3 @@ this.pushToStack('(value)'); | ||
visitBoolLiteral(node) { | ||
this.emit(util_1.Data.encodeBool(node.value)); | ||
this.emit(utils_1.encodeBool(node.value)); | ||
this.pushToStack('(value)'); | ||
@@ -539,3 +551,3 @@ return node; | ||
visitIntLiteral(node) { | ||
this.emit(util_1.Data.encodeInt(node.value)); | ||
this.emit(utils_1.encodeInt(node.value)); | ||
this.pushToStack('(value)'); | ||
@@ -545,3 +557,3 @@ return node; | ||
visitStringLiteral(node) { | ||
this.emit(util_1.Data.encodeString(node.value)); | ||
this.emit(utils_1.encodeString(node.value)); | ||
this.pushToStack('(value)'); | ||
@@ -548,0 +560,0 @@ return node; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.PreimageParts = void 0; | ||
const Globals_1 = require("../ast/Globals"); | ||
@@ -4,0 +5,0 @@ exports.PreimageParts = { |
@@ -56,9 +56,10 @@ import { ATN } from "antlr4ts/atn/ATN"; | ||
static readonly StringLiteral = 50; | ||
static readonly HexLiteral = 51; | ||
static readonly TxVar = 52; | ||
static readonly PreimageField = 53; | ||
static readonly Identifier = 54; | ||
static readonly WHITESPACE = 55; | ||
static readonly COMMENT = 56; | ||
static readonly LINE_COMMENT = 57; | ||
static readonly DateLiteral = 51; | ||
static readonly HexLiteral = 52; | ||
static readonly TxVar = 53; | ||
static readonly PreimageField = 54; | ||
static readonly Identifier = 55; | ||
static readonly WHITESPACE = 56; | ||
static readonly COMMENT = 57; | ||
static readonly LINE_COMMENT = 58; | ||
static readonly channelNames: string[]; | ||
@@ -65,0 +66,0 @@ static readonly modeNames: string[]; |
"use strict"; | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.7.3-SNAPSHOT | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.9.0-SNAPSHOT | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __importStar = (this && this.__importStar) || function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; | ||
result["default"] = mod; | ||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.CashScriptLexer = void 0; | ||
const ATNDeserializer_1 = require("antlr4ts/atn/ATNDeserializer"); | ||
@@ -95,9 +108,10 @@ const Lexer_1 = require("antlr4ts/Lexer"); | ||
CashScriptLexer.StringLiteral = 50; | ||
CashScriptLexer.HexLiteral = 51; | ||
CashScriptLexer.TxVar = 52; | ||
CashScriptLexer.PreimageField = 53; | ||
CashScriptLexer.Identifier = 54; | ||
CashScriptLexer.WHITESPACE = 55; | ||
CashScriptLexer.COMMENT = 56; | ||
CashScriptLexer.LINE_COMMENT = 57; | ||
CashScriptLexer.DateLiteral = 51; | ||
CashScriptLexer.HexLiteral = 52; | ||
CashScriptLexer.TxVar = 53; | ||
CashScriptLexer.PreimageField = 54; | ||
CashScriptLexer.Identifier = 55; | ||
CashScriptLexer.WHITESPACE = 56; | ||
CashScriptLexer.COMMENT = 57; | ||
CashScriptLexer.LINE_COMMENT = 58; | ||
// tslint:disable:no-trailing-whitespace | ||
@@ -118,4 +132,4 @@ CashScriptLexer.channelNames = [ | ||
"T__41", "T__42", "VersionLiteral", "BooleanLiteral", "NumberUnit", "NumberLiteral", | ||
"Bytes", "Bound", "StringLiteral", "HexLiteral", "TxVar", "PreimageField", | ||
"Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", | ||
"Bytes", "Bound", "StringLiteral", "DateLiteral", "HexLiteral", "TxVar", | ||
"PreimageField", "Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", | ||
]; | ||
@@ -138,8 +152,8 @@ CashScriptLexer._LITERAL_NAMES = [ | ||
undefined, undefined, "VersionLiteral", "BooleanLiteral", "NumberUnit", | ||
"NumberLiteral", "Bytes", "Bound", "StringLiteral", "HexLiteral", "TxVar", | ||
"PreimageField", "Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", | ||
"NumberLiteral", "Bytes", "Bound", "StringLiteral", "DateLiteral", "HexLiteral", | ||
"TxVar", "PreimageField", "Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", | ||
]; | ||
CashScriptLexer.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(CashScriptLexer._LITERAL_NAMES, CashScriptLexer._SYMBOLIC_NAMES, []); | ||
CashScriptLexer._serializedATNSegments = 2; | ||
CashScriptLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02;\u0271\b\x01" + | ||
CashScriptLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02<\u027C\b\x01" + | ||
"\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" + | ||
@@ -153,284 +167,288 @@ "\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" + | ||
"+\t+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" + | ||
"4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x03\x02\x03\x02\x03" + | ||
"\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03\x04\x03" + | ||
"4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x03\x02\x03" + | ||
"\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03" + | ||
"\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03" + | ||
"\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\b\x03\b\x03\t" + | ||
"\x03\t\x03\n\x03\n\x03\n\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03" + | ||
"\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F" + | ||
"\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x11" + | ||
"\x03\x11\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13" + | ||
"\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03\x15" + | ||
"\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x17\x03\x17\x03\x18\x03\x18" + | ||
"\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19" + | ||
"\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A" + | ||
"\x03\x1A\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D" + | ||
"\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03 \x03 \x03" + | ||
"!\x03!\x03!\x03\"\x03\"\x03\"\x03#\x03#\x03$\x03$\x03%\x03%\x03%\x03&" + | ||
"\x03&\x03&\x03\'\x03\'\x03\'\x03\'\x03(\x03(\x03(\x03(\x03(\x03)\x03)" + | ||
"\x03)\x03)\x03)\x03)\x03)\x03*\x03*\x03*\x03*\x03*\x03*\x03*\x03+\x03" + | ||
"+\x03+\x03+\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03-\x06-\u0126\n" + | ||
"-\r-\x0E-\u0127\x03-\x03-\x06-\u012C\n-\r-\x0E-\u012D\x03-\x03-\x06-\u0132" + | ||
"\n-\r-\x0E-\u0133\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x05.\u013F" + | ||
"\n.\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"\x04\x03\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\b\x03" + | ||
"\b\x03\t\x03\t\x03\n\x03\n\x03\n\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03" + | ||
"\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0F\x03\x0F" + | ||
"\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10" + | ||
"\x03\x11\x03\x11\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13" + | ||
"\x03\x13\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15" + | ||
"\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x17\x03\x17\x03\x18" + | ||
"\x03\x18\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19" + | ||
"\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A" + | ||
"\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1D" + | ||
"\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03 " + | ||
"\x03 \x03!\x03!\x03!\x03\"\x03\"\x03\"\x03#\x03#\x03$\x03$\x03%\x03%\x03" + | ||
"%\x03&\x03&\x03&\x03\'\x03\'\x03\'\x03\'\x03(\x03(\x03(\x03(\x03(\x03" + | ||
")\x03)\x03)\x03)\x03)\x03)\x03)\x03*\x03*\x03*\x03*\x03*\x03*\x03*\x03" + | ||
"+\x03+\x03+\x03+\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03-\x06-\u0128" + | ||
"\n-\r-\x0E-\u0129\x03-\x03-\x06-\u012E\n-\r-\x0E-\u012F\x03-\x03-\x06" + | ||
"-\u0134\n-\r-\x0E-\u0135\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x03." + | ||
"\x05.\u0141\n.\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/" + | ||
"\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"/\x03/\x05/\u017A\n/\x030\x050\u017D\n0\x030\x060\u0180\n0\r0\x0E0\u0181" + | ||
"\x030\x030\x060\u0186\n0\r0\x0E0\u0187\x050\u018A\n0\x031\x031\x031\x03" + | ||
"1\x031\x031\x031\x051\u0193\n1\x032\x032\x072\u0197\n2\f2\x0E2\u019A\v" + | ||
"2\x033\x033\x033\x033\x073\u01A0\n3\f3\x0E3\u01A3\v3\x033\x033\x033\x03" + | ||
"3\x033\x073\u01AA\n3\f3\x0E3\u01AD\v3\x033\x053\u01B0\n3\x034\x034\x03" + | ||
"4\x074\u01B5\n4\f4\x0E4\u01B8\v4\x035\x035\x035\x035\x035\x035\x035\x03" + | ||
"5\x035\x035\x035\x035\x035\x055\u01C7\n5\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x056\u0249\n6\x03" + | ||
"7\x037\x077\u024D\n7\f7\x0E7\u0250\v7\x038\x068\u0253\n8\r8\x0E8\u0254" + | ||
"\x038\x038\x039\x039\x039\x039\x079\u025D\n9\f9\x0E9\u0260\v9\x039\x03" + | ||
"9\x039\x039\x039\x03:\x03:\x03:\x03:\x07:\u026B\n:\f:\x0E:\u026E\v:\x03" + | ||
":\x03:\x05\u01A1\u01AB\u025E\x02\x02;\x03\x02\x03\x05\x02\x04\x07\x02" + | ||
"\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02" + | ||
"\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12" + | ||
"#\x02\x13%\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191\x02" + | ||
"\x1A3\x02\x1B5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02\"C" + | ||
"\x02#E\x02$G\x02%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-Y\x02" + | ||
".[\x02/]\x020_\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x029q\x02" + | ||
":s\x02;\x03\x02\x0E\x03\x022;\x03\x02//\x04\x02GGgg\x03\x023;\x05\x02" + | ||
"\f\f\x0F\x0F$$\x05\x02\f\f\x0F\x0F))\x04\x02ZZzz\x05\x022;CHch\x04\x02" + | ||
"C\\c|\x06\x022;C\\aac|\x05\x02\v\f\x0E\x0F\"\"\x04\x02\f\f\x0F\x0F\x02" + | ||
"\u0298\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02" + | ||
"\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02\x02" + | ||
"\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02" + | ||
"\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02" + | ||
"\x02\x02\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02" + | ||
"\x02\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02" + | ||
"\'\x03\x02\x02\x02\x02)\x03\x02\x02\x02\x02+\x03\x02\x02\x02\x02-\x03" + | ||
"\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02\x02\x023\x03\x02\x02" + | ||
"\x02\x025\x03\x02\x02\x02\x027\x03\x02\x02\x02\x029\x03\x02\x02\x02\x02" + | ||
";\x03\x02\x02\x02\x02=\x03\x02\x02\x02\x02?\x03\x02\x02\x02\x02A\x03\x02" + | ||
"\x02\x02\x02C\x03\x02\x02\x02\x02E\x03\x02\x02\x02\x02G\x03\x02\x02\x02" + | ||
"\x02I\x03\x02\x02\x02\x02K\x03\x02\x02\x02\x02M\x03\x02\x02\x02\x02O\x03" + | ||
"\x02\x02\x02\x02Q\x03\x02\x02\x02\x02S\x03\x02\x02\x02\x02U\x03\x02\x02" + | ||
"\x02\x02W\x03\x02\x02\x02\x02Y\x03\x02\x02\x02\x02[\x03\x02\x02\x02\x02" + | ||
"]\x03\x02\x02\x02\x02_\x03\x02\x02\x02\x02a\x03\x02\x02\x02\x02c\x03\x02" + | ||
"\x02\x02\x02e\x03\x02\x02\x02\x02g\x03\x02\x02\x02\x02i\x03\x02\x02\x02" + | ||
"\x02k\x03\x02\x02\x02\x02m\x03\x02\x02\x02\x02o\x03\x02\x02\x02\x02q\x03" + | ||
"\x02\x02\x02\x02s\x03\x02\x02\x02\x03u\x03\x02\x02\x02\x05|\x03\x02\x02" + | ||
"\x02\x07~\x03\x02\x02\x02\t\x89\x03\x02\x02\x02\v\x8B\x03\x02\x02\x02" + | ||
"\r\x8D\x03\x02\x02\x02\x0F\x90\x03\x02\x02\x02\x11\x92\x03\x02\x02\x02" + | ||
"\x13\x94\x03\x02\x02\x02\x15\x97\x03\x02\x02\x02\x17\x99\x03\x02\x02\x02" + | ||
"\x19\xA2\x03\x02\x02\x02\x1B\xA4\x03\x02\x02\x02\x1D\xA6\x03\x02\x02\x02" + | ||
"\x1F\xAF\x03\x02\x02\x02!\xB1\x03\x02\x02\x02#\xB3\x03\x02\x02\x02%\xB5" + | ||
"\x03\x02\x02\x02\'\xBD\x03\x02\x02\x02)\xC0\x03\x02\x02\x02+\xC5\x03\x02" + | ||
"\x02\x02-\xC9\x03\x02\x02\x02/\xCB\x03\x02\x02\x021\xCD\x03\x02\x02\x02" + | ||
"3\xD8\x03\x02\x02\x025\xE0\x03\x02\x02\x027\xE2\x03\x02\x02\x029\xE4\x03" + | ||
"\x02\x02\x02;\xEB\x03\x02\x02\x02=\xED\x03\x02\x02\x02?\xEF\x03\x02\x02" + | ||
"\x02A\xF1\x03\x02\x02\x02C\xF4\x03\x02\x02\x02E\xF7\x03\x02\x02\x02G\xF9" + | ||
"\x03\x02\x02\x02I\xFB\x03\x02\x02\x02K\xFE\x03\x02\x02\x02M\u0101\x03" + | ||
"\x02\x02\x02O\u0105\x03\x02\x02\x02Q\u010A\x03\x02\x02\x02S\u0111\x03" + | ||
"\x02\x02\x02U\u0118\x03\x02\x02\x02W\u011C\x03\x02\x02\x02Y\u0125\x03" + | ||
"\x02\x02\x02[\u013E\x03\x02\x02\x02]\u0179\x03\x02\x02\x02_\u017C\x03" + | ||
"\x02\x02\x02a\u018B\x03\x02\x02\x02c\u0194\x03\x02\x02\x02e\u01AF\x03" + | ||
"\x02\x02\x02g\u01B1\x03\x02\x02\x02i\u01C6\x03\x02\x02\x02k\u0248\x03" + | ||
"\x02\x02\x02m\u024A\x03\x02\x02\x02o\u0252\x03\x02\x02\x02q\u0258\x03" + | ||
"\x02\x02\x02s\u0266\x03\x02\x02\x02uv\x07r\x02\x02vw\x07t\x02\x02wx\x07" + | ||
"c\x02\x02xy\x07i\x02\x02yz\x07o\x02\x02z{\x07c\x02\x02{\x04\x03\x02\x02" + | ||
"\x02|}\x07=\x02\x02}\x06\x03\x02\x02\x02~\x7F\x07e\x02\x02\x7F\x80\x07" + | ||
"c\x02\x02\x80\x81\x07u\x02\x02\x81\x82\x07j\x02\x02\x82\x83\x07u\x02\x02" + | ||
"\x83\x84\x07e\x02\x02\x84\x85\x07t\x02\x02\x85\x86\x07k\x02\x02\x86\x87" + | ||
"\x07r\x02\x02\x87\x88\x07v\x02\x02\x88\b\x03\x02\x02\x02\x89\x8A\x07`" + | ||
"\x02\x02\x8A\n\x03\x02\x02\x02\x8B\x8C\x07\x80\x02\x02\x8C\f\x03\x02\x02" + | ||
"\x02\x8D\x8E\x07@\x02\x02\x8E\x8F\x07?\x02\x02\x8F\x0E\x03\x02\x02\x02" + | ||
"\x90\x91\x07@\x02\x02\x91\x10\x03\x02\x02\x02\x92\x93\x07>\x02\x02\x93" + | ||
"\x12\x03\x02\x02\x02\x94\x95\x07>\x02\x02\x95\x96\x07?\x02\x02\x96\x14" + | ||
"\x03\x02\x02\x02\x97\x98\x07?\x02\x02\x98\x16\x03\x02\x02\x02\x99\x9A" + | ||
"\x07e\x02\x02\x9A\x9B\x07q\x02\x02\x9B\x9C\x07p\x02\x02\x9C\x9D\x07v\x02" + | ||
"\x02\x9D\x9E\x07t\x02\x02\x9E\x9F\x07c\x02\x02\x9F\xA0\x07e\x02\x02\xA0" + | ||
"\xA1\x07v\x02\x02\xA1\x18\x03\x02\x02\x02\xA2\xA3\x07}\x02\x02\xA3\x1A" + | ||
"\x03\x02\x02\x02\xA4\xA5\x07\x7F\x02\x02\xA5\x1C\x03\x02\x02\x02\xA6\xA7" + | ||
"\x07h\x02\x02\xA7\xA8\x07w\x02\x02\xA8\xA9\x07p\x02\x02\xA9\xAA\x07e\x02" + | ||
"\x02\xAA\xAB\x07v\x02\x02\xAB\xAC\x07k\x02\x02\xAC\xAD\x07q\x02\x02\xAD" + | ||
"\xAE\x07p\x02\x02\xAE\x1E\x03\x02\x02\x02\xAF\xB0\x07*\x02\x02\xB0 \x03" + | ||
"\x02\x02\x02\xB1\xB2\x07.\x02\x02\xB2\"\x03\x02\x02\x02\xB3\xB4\x07+\x02" + | ||
"\x02\xB4$\x03\x02\x02\x02\xB5\xB6\x07t\x02\x02\xB6\xB7\x07g\x02\x02\xB7" + | ||
"\xB8\x07s\x02\x02\xB8\xB9\x07w\x02\x02\xB9\xBA\x07k\x02\x02\xBA\xBB\x07" + | ||
"t\x02\x02\xBB\xBC\x07g\x02\x02\xBC&\x03\x02\x02\x02\xBD\xBE\x07k\x02\x02" + | ||
"\xBE\xBF\x07h\x02\x02\xBF(\x03\x02\x02\x02\xC0\xC1\x07g\x02\x02\xC1\xC2" + | ||
"\x07n\x02\x02\xC2\xC3\x07u\x02\x02\xC3\xC4\x07g\x02\x02\xC4*\x03\x02\x02" + | ||
"\x02\xC5\xC6\x07p\x02\x02\xC6\xC7\x07g\x02\x02\xC7\xC8\x07y\x02\x02\xC8" + | ||
",\x03\x02\x02\x02\xC9\xCA\x07]\x02\x02\xCA.\x03\x02\x02\x02\xCB\xCC\x07" + | ||
"_\x02\x02\xCC0\x03\x02\x02\x02\xCD\xCE\x070\x02\x02\xCE\xCF\x07t\x02\x02" + | ||
"\xCF\xD0\x07g\x02\x02\xD0\xD1\x07x\x02\x02\xD1\xD2\x07g\x02\x02\xD2\xD3" + | ||
"\x07t\x02\x02\xD3\xD4\x07u\x02\x02\xD4\xD5\x07g\x02\x02\xD5\xD6\x07*\x02" + | ||
"\x02\xD6\xD7\x07+\x02\x02\xD72\x03\x02\x02\x02\xD8\xD9\x070\x02\x02\xD9" + | ||
"\xDA\x07n\x02\x02\xDA\xDB\x07g\x02\x02\xDB\xDC\x07p\x02\x02\xDC\xDD\x07" + | ||
"i\x02\x02\xDD\xDE\x07v\x02\x02\xDE\xDF\x07j\x02\x02\xDF4\x03\x02\x02\x02" + | ||
"\xE0\xE1\x07#\x02\x02\xE16\x03\x02\x02\x02\xE2\xE3\x07/\x02\x02\xE38\x03" + | ||
"\x02\x02\x02\xE4\xE5\x070\x02\x02\xE5\xE6\x07u\x02\x02\xE6\xE7\x07r\x02" + | ||
"\x02\xE7\xE8\x07n\x02\x02\xE8\xE9\x07k\x02\x02\xE9\xEA\x07v\x02\x02\xEA" + | ||
":\x03\x02\x02\x02\xEB\xEC\x071\x02\x02\xEC<\x03\x02\x02\x02\xED\xEE\x07" + | ||
"\'\x02\x02\xEE>\x03\x02\x02\x02\xEF\xF0\x07-\x02\x02\xF0@\x03\x02\x02" + | ||
"\x02\xF1\xF2\x07?\x02\x02\xF2\xF3\x07?\x02\x02\xF3B\x03\x02\x02\x02\xF4" + | ||
"\xF5\x07#\x02\x02\xF5\xF6\x07?\x02\x02\xF6D\x03\x02\x02\x02\xF7\xF8\x07" + | ||
"(\x02\x02\xF8F\x03\x02\x02\x02\xF9\xFA\x07~\x02\x02\xFAH\x03\x02\x02\x02" + | ||
"\xFB\xFC\x07(\x02\x02\xFC\xFD\x07(\x02\x02\xFDJ\x03\x02\x02\x02\xFE\xFF" + | ||
"\x07~\x02\x02\xFF\u0100\x07~\x02\x02\u0100L\x03\x02\x02\x02\u0101\u0102" + | ||
"\x07k\x02\x02\u0102\u0103\x07p\x02\x02\u0103\u0104\x07v\x02\x02\u0104" + | ||
"N\x03\x02\x02\x02\u0105\u0106\x07d\x02\x02\u0106\u0107\x07q\x02\x02\u0107" + | ||
"\u0108\x07q\x02\x02\u0108\u0109\x07n\x02\x02\u0109P\x03\x02\x02\x02\u010A" + | ||
"\u010B\x07u\x02\x02\u010B\u010C\x07v\x02\x02\u010C\u010D\x07t\x02\x02" + | ||
"\u010D\u010E\x07k\x02\x02\u010E\u010F\x07p\x02\x02\u010F\u0110\x07i\x02" + | ||
"\x02\u0110R\x03\x02\x02\x02\u0111\u0112\x07r\x02\x02\u0112\u0113\x07w" + | ||
"\x02\x02\u0113\u0114\x07d\x02\x02\u0114\u0115\x07m\x02\x02\u0115\u0116" + | ||
"\x07g\x02\x02\u0116\u0117\x07{\x02\x02\u0117T\x03\x02\x02\x02\u0118\u0119" + | ||
"\x07u\x02\x02\u0119\u011A\x07k\x02\x02\u011A\u011B\x07i\x02\x02\u011B" + | ||
"V\x03\x02\x02\x02\u011C\u011D\x07f\x02\x02\u011D\u011E\x07c\x02\x02\u011E" + | ||
"\u011F\x07v\x02\x02\u011F\u0120\x07c\x02\x02\u0120\u0121\x07u\x02\x02" + | ||
"\u0121\u0122\x07k\x02\x02\u0122\u0123\x07i\x02\x02\u0123X\x03\x02\x02" + | ||
"\x02\u0124\u0126\t\x02\x02\x02\u0125\u0124\x03\x02\x02\x02\u0126\u0127" + | ||
"\x03\x02\x02\x02\u0127\u0125\x03\x02\x02\x02\u0127\u0128\x03\x02\x02\x02" + | ||
"\u0128\u0129\x03\x02\x02\x02\u0129\u012B\x070\x02\x02\u012A\u012C\t\x02" + | ||
"\x02\x02\u012B\u012A\x03\x02\x02\x02\u012C\u012D\x03\x02\x02\x02\u012D" + | ||
"\u012B\x03\x02\x02\x02\u012D\u012E\x03\x02\x02\x02\u012E\u012F\x03\x02" + | ||
"\x02\x02\u012F\u0131\x070\x02\x02\u0130\u0132\t\x02\x02\x02\u0131\u0130" + | ||
"\x03\x02\x02\x02\u0132\u0133\x03\x02\x02\x02\u0133\u0131\x03\x02\x02\x02" + | ||
"\u0133\u0134\x03\x02\x02\x02\u0134Z\x03\x02\x02\x02\u0135\u0136\x07v\x02" + | ||
"\x02\u0136\u0137\x07t\x02\x02\u0137\u0138\x07w\x02\x02\u0138\u013F\x07" + | ||
"g\x02\x02\u0139\u013A\x07h\x02\x02\u013A\u013B\x07c\x02\x02\u013B\u013C" + | ||
"\x07n\x02\x02\u013C\u013D\x07u\x02\x02\u013D\u013F\x07g\x02\x02\u013E" + | ||
"\u0135\x03\x02\x02\x02\u013E\u0139\x03\x02\x02\x02\u013F\\\x03\x02\x02" + | ||
"\x02\u0140\u0141\x07u\x02\x02\u0141\u0142\x07c\x02\x02\u0142\u0143\x07" + | ||
"v\x02\x02\u0143\u0144\x07q\x02\x02\u0144\u0145\x07u\x02\x02\u0145\u0146" + | ||
"\x07j\x02\x02\u0146\u0147\x07k\x02\x02\u0147\u017A\x07u\x02\x02\u0148" + | ||
"\u0149\x07u\x02\x02\u0149\u014A\x07c\x02\x02\u014A\u014B\x07v\x02\x02" + | ||
"\u014B\u017A\x07u\x02\x02\u014C\u014D\x07h\x02\x02\u014D\u014E\x07k\x02" + | ||
"\x02\u014E\u014F\x07p\x02\x02\u014F\u0150\x07p\x02\x02\u0150\u0151\x07" + | ||
"g\x02\x02\u0151\u017A\x07{\x02\x02\u0152\u0153\x07d\x02\x02\u0153\u0154" + | ||
"\x07k\x02\x02\u0154\u0155\x07v\x02\x02\u0155\u017A\x07u\x02\x02\u0156" + | ||
"\u0157\x07d\x02\x02\u0157\u0158\x07k\x02\x02\u0158\u0159\x07v\x02\x02" + | ||
"\u0159\u015A\x07e\x02\x02\u015A\u015B\x07q\x02\x02\u015B\u015C\x07k\x02" + | ||
"\x02\u015C\u017A\x07p\x02\x02\u015D\u015E\x07u\x02\x02\u015E\u015F\x07" + | ||
"g\x02\x02\u015F\u0160\x07e\x02\x02\u0160\u0161\x07q\x02\x02\u0161\u0162" + | ||
"\x07p\x02\x02\u0162\u0163\x07f\x02\x02\u0163\u017A\x07u\x02\x02\u0164" + | ||
"\u0165\x07o\x02\x02\u0165\u0166\x07k\x02\x02\u0166\u0167\x07p\x02\x02" + | ||
"\u0167\u0168\x07w\x02\x02\u0168\u0169\x07v\x02\x02\u0169\u016A\x07g\x02" + | ||
"\x02\u016A\u017A\x07u\x02\x02\u016B\u016C\x07j\x02\x02\u016C\u016D\x07" + | ||
"q\x02\x02\u016D\u016E\x07w\x02\x02\u016E\u016F\x07t\x02\x02\u016F\u017A" + | ||
"\x07u\x02\x02\u0170\u0171\x07f\x02\x02\u0171\u0172\x07c\x02\x02\u0172" + | ||
"\u0173\x07{\x02\x02\u0173\u017A\x07u\x02\x02\u0174\u0175\x07y\x02\x02" + | ||
"\u0175\u0176\x07g\x02\x02\u0176\u0177\x07g\x02\x02\u0177\u0178\x07m\x02" + | ||
"\x02\u0178\u017A\x07u\x02\x02\u0179\u0140\x03\x02\x02\x02\u0179\u0148" + | ||
"\x03\x02\x02\x02\u0179\u014C\x03\x02\x02\x02\u0179\u0152\x03\x02\x02\x02" + | ||
"\u0179\u0156\x03\x02\x02\x02\u0179\u015D\x03\x02\x02\x02\u0179\u0164\x03" + | ||
"\x02\x02\x02\u0179\u016B\x03\x02\x02\x02\u0179\u0170\x03\x02\x02\x02\u0179" + | ||
"\u0174\x03\x02\x02\x02\u017A^\x03\x02\x02\x02\u017B\u017D\t\x03\x02\x02" + | ||
"\u017C\u017B\x03\x02\x02\x02\u017C\u017D\x03\x02\x02\x02\u017D\u017F\x03" + | ||
"\x02\x02\x02\u017E\u0180\t\x02\x02\x02\u017F\u017E\x03\x02\x02\x02\u0180" + | ||
"\u0181\x03\x02\x02\x02\u0181\u017F\x03\x02\x02\x02\u0181\u0182\x03\x02" + | ||
"\x02\x02\u0182\u0189\x03\x02\x02\x02\u0183\u0185\t\x04\x02\x02\u0184\u0186" + | ||
"\t\x02\x02\x02\u0185\u0184\x03\x02\x02\x02\u0186\u0187\x03\x02\x02\x02" + | ||
"\u0187\u0185\x03\x02\x02\x02\u0187\u0188\x03\x02\x02\x02\u0188\u018A\x03" + | ||
"\x02\x02\x02\u0189\u0183\x03\x02\x02\x02\u0189\u018A\x03\x02\x02\x02\u018A" + | ||
"`\x03\x02\x02\x02\u018B\u018C\x07d\x02\x02\u018C\u018D\x07{\x02\x02\u018D" + | ||
"\u018E\x07v\x02\x02\u018E\u018F\x07g\x02\x02\u018F\u0190\x07u\x02\x02" + | ||
"\u0190\u0192\x03\x02\x02\x02\u0191\u0193\x05c2\x02\u0192\u0191\x03\x02" + | ||
"\x02\x02\u0192\u0193\x03\x02\x02\x02\u0193b\x03\x02\x02\x02\u0194\u0198" + | ||
"\t\x05\x02\x02\u0195\u0197\t\x02\x02\x02\u0196\u0195\x03\x02\x02\x02\u0197" + | ||
"\u019A\x03\x02\x02\x02\u0198\u0196\x03\x02\x02\x02\u0198\u0199\x03\x02" + | ||
"\x02\x02\u0199d\x03\x02\x02\x02\u019A\u0198\x03\x02\x02\x02\u019B\u01A1" + | ||
"\x07$\x02\x02\u019C\u019D\x07^\x02\x02\u019D\u01A0\x07$\x02\x02\u019E" + | ||
"\u01A0\n\x06\x02\x02\u019F\u019C\x03\x02\x02\x02\u019F\u019E\x03\x02\x02" + | ||
"\x02\u01A0\u01A3\x03\x02\x02\x02\u01A1\u01A2\x03\x02\x02\x02\u01A1\u019F" + | ||
"\x03\x02\x02\x02\u01A2\u01A4\x03\x02\x02\x02\u01A3\u01A1\x03\x02\x02\x02" + | ||
"\u01A4\u01B0\x07$\x02\x02\u01A5\u01AB\x07)\x02\x02\u01A6\u01A7\x07^\x02" + | ||
"\x02\u01A7\u01AA\x07)\x02\x02\u01A8\u01AA\n\x07\x02\x02\u01A9\u01A6\x03" + | ||
"\x02\x02\x02\u01A9\u01A8\x03\x02\x02\x02\u01AA\u01AD\x03\x02\x02\x02\u01AB" + | ||
"\u01AC\x03\x02\x02\x02\u01AB\u01A9\x03\x02\x02\x02\u01AC\u01AE\x03\x02" + | ||
"\x02\x02\u01AD\u01AB\x03\x02\x02\x02\u01AE\u01B0\x07)\x02\x02\u01AF\u019B" + | ||
"\x03\x02\x02\x02\u01AF\u01A5\x03\x02\x02\x02\u01B0f\x03\x02\x02\x02\u01B1" + | ||
"\u01B2\x072\x02\x02\u01B2\u01B6\t\b\x02\x02\u01B3\u01B5\t\t\x02\x02\u01B4" + | ||
"\u01B3\x03\x02\x02\x02\u01B5\u01B8\x03\x02\x02\x02\u01B6\u01B4\x03\x02" + | ||
"\x02\x02\u01B6\u01B7\x03\x02\x02\x02\u01B7h\x03\x02\x02\x02\u01B8\u01B6" + | ||
"\x03\x02\x02\x02\u01B9\u01BA\x07v\x02\x02\u01BA\u01BB\x07z\x02\x02\u01BB" + | ||
"\u01BC\x070\x02\x02\u01BC\u01BD\x07c\x02\x02\u01BD\u01BE\x07i\x02\x02" + | ||
"\u01BE\u01C7\x07g\x02\x02\u01BF\u01C0\x07v\x02\x02\u01C0\u01C1\x07z\x02" + | ||
"\x02\u01C1\u01C2\x070\x02\x02\u01C2\u01C3\x07v\x02\x02\u01C3\u01C4\x07" + | ||
"k\x02\x02\u01C4\u01C5\x07o\x02\x02\u01C5\u01C7\x07g\x02\x02\u01C6\u01B9" + | ||
"\x03\x02\x02\x02\u01C6\u01BF\x03\x02\x02\x02\u01C7j\x03\x02\x02\x02\u01C8" + | ||
"\u01C9\x07v\x02\x02\u01C9\u01CA\x07z\x02\x02\u01CA\u01CB\x070\x02\x02" + | ||
"\u01CB\u01CC\x07x\x02\x02\u01CC\u01CD\x07g\x02\x02\u01CD\u01CE\x07t\x02" + | ||
"\x02\u01CE\u01CF\x07u\x02\x02\u01CF\u01D0\x07k\x02\x02\u01D0\u01D1\x07" + | ||
"q\x02\x02\u01D1\u0249\x07p\x02\x02\u01D2\u01D3\x07v\x02\x02\u01D3\u01D4" + | ||
"\x07z\x02\x02\u01D4\u01D5\x070\x02\x02\u01D5\u01D6\x07j\x02\x02\u01D6" + | ||
"\u01D7\x07c\x02\x02\u01D7\u01D8\x07u\x02\x02\u01D8\u01D9\x07j\x02\x02" + | ||
"\u01D9\u01DA\x07R\x02\x02\u01DA\u01DB\x07t\x02\x02\u01DB\u01DC\x07g\x02" + | ||
"\x02\u01DC\u01DD\x07x\x02\x02\u01DD\u01DE\x07q\x02\x02\u01DE\u01DF\x07" + | ||
"w\x02\x02\u01DF\u01E0\x07v\x02\x02\u01E0\u0249\x07u\x02\x02\u01E1\u01E2" + | ||
"\x07v\x02\x02\u01E2\u01E3\x07z\x02\x02\u01E3\u01E4\x070\x02\x02\u01E4" + | ||
"\u01E5\x07j\x02\x02\u01E5\u01E6\x07c\x02\x02\u01E6\u01E7\x07u\x02\x02" + | ||
"\u01E7\u01E8\x07j\x02\x02\u01E8\u01E9\x07U\x02\x02\u01E9\u01EA\x07g\x02" + | ||
"\x02\u01EA\u01EB\x07s\x02\x02\u01EB\u01EC\x07w\x02\x02\u01EC\u01ED\x07" + | ||
"g\x02\x02\u01ED\u01EE\x07p\x02\x02\u01EE\u01EF\x07e\x02\x02\u01EF\u0249" + | ||
"\x07g\x02\x02\u01F0\u01F1\x07v\x02\x02\u01F1\u01F2\x07z\x02\x02\u01F2" + | ||
"\u01F3\x070\x02\x02\u01F3\u01F4\x07q\x02\x02\u01F4\u01F5\x07w\x02\x02" + | ||
"\u01F5\u01F6\x07v\x02\x02\u01F6\u01F7\x07r\x02\x02\u01F7\u01F8\x07q\x02" + | ||
"\x02\u01F8\u01F9\x07k\x02\x02\u01F9\u01FA\x07p\x02\x02\u01FA\u0249\x07" + | ||
"v\x02\x02\u01FB\u01FC\x07v\x02\x02\u01FC\u01FD\x07z\x02\x02\u01FD\u01FE" + | ||
"\x070\x02\x02\u01FE\u01FF\x07d\x02\x02\u01FF\u0200\x07{\x02\x02\u0200" + | ||
"\u0201\x07v\x02\x02\u0201\u0202\x07g\x02\x02\u0202\u0203\x07e\x02\x02" + | ||
"\u0203\u0204\x07q\x02\x02\u0204\u0205\x07f\x02\x02\u0205\u0249\x07g\x02" + | ||
"\x02\u0206\u0207\x07v\x02\x02\u0207\u0208\x07z\x02\x02\u0208\u0209\x07" + | ||
"0\x02\x02\u0209\u020A\x07x\x02\x02\u020A\u020B\x07c\x02\x02\u020B\u020C" + | ||
"\x07n\x02\x02\u020C\u020D\x07w\x02\x02\u020D\u0249\x07g\x02\x02\u020E" + | ||
"\u020F\x07v\x02\x02\u020F\u0210\x07z\x02\x02\u0210\u0211\x070\x02\x02" + | ||
"\u0211\u0212\x07u\x02\x02\u0212\u0213\x07g\x02\x02\u0213\u0214\x07s\x02" + | ||
"\x02\u0214\u0215\x07w\x02\x02\u0215\u0216\x07g\x02\x02\u0216\u0217\x07" + | ||
"p\x02\x02\u0217\u0218\x07e\x02\x02\u0218\u0249\x07g\x02\x02\u0219\u021A" + | ||
"\x07v\x02\x02\u021A\u021B\x07z\x02\x02\u021B\u021C\x070\x02\x02\u021C" + | ||
"\u021D\x07j\x02\x02\u021D\u021E\x07c\x02\x02\u021E\u021F\x07u\x02\x02" + | ||
"\u021F\u0220\x07j\x02\x02\u0220\u0221\x07Q\x02\x02\u0221\u0222\x07w\x02" + | ||
"\x02\u0222\u0223\x07v\x02\x02\u0223\u0224\x07r\x02\x02\u0224\u0225\x07" + | ||
"w\x02\x02\u0225\u0226\x07v\x02\x02\u0226\u0249\x07u\x02\x02\u0227\u0228" + | ||
"\x07"; | ||
CashScriptLexer._serializedATNSegment1 = "v\x02\x02\u0228\u0229\x07z\x02\x02\u0229\u022A\x070\x02\x02\u022A\u022B" + | ||
"\x07n\x02\x02\u022B\u022C\x07q\x02\x02\u022C\u022D\x07e\x02\x02\u022D" + | ||
"\u022E\x07m\x02\x02\u022E\u022F\x07v\x02\x02\u022F\u0230\x07k\x02\x02" + | ||
"\u0230\u0231\x07o\x02\x02\u0231\u0249\x07g\x02\x02\u0232\u0233\x07v\x02" + | ||
"\x02\u0233\u0234\x07z\x02\x02\u0234\u0235\x070\x02\x02\u0235\u0236\x07" + | ||
"j\x02\x02\u0236\u0237\x07c\x02\x02\u0237\u0238\x07u\x02\x02\u0238\u0239" + | ||
"\x07j\x02\x02\u0239\u023A\x07v\x02\x02\u023A\u023B\x07{\x02\x02\u023B" + | ||
"\u023C\x07r\x02\x02\u023C\u0249\x07g\x02\x02\u023D\u023E\x07v\x02\x02" + | ||
"\u023E\u023F\x07z\x02\x02\u023F\u0240\x070\x02\x02\u0240\u0241\x07r\x02" + | ||
"\x02\u0241\u0242\x07t\x02\x02\u0242\u0243\x07g\x02\x02\u0243\u0244\x07" + | ||
"k\x02\x02\u0244\u0245\x07o\x02\x02\u0245\u0246\x07c\x02\x02\u0246\u0247" + | ||
"\x07i\x02\x02\u0247\u0249\x07g\x02\x02\u0248\u01C8\x03\x02\x02\x02\u0248" + | ||
"\u01D2\x03\x02\x02\x02\u0248\u01E1\x03\x02\x02\x02\u0248\u01F0\x03\x02" + | ||
"\x02\x02\u0248\u01FB\x03\x02\x02\x02\u0248\u0206\x03\x02\x02\x02\u0248" + | ||
"\u020E\x03\x02\x02\x02\u0248\u0219\x03\x02\x02\x02\u0248\u0227\x03\x02" + | ||
"\x02\x02\u0248\u0232\x03\x02\x02\x02\u0248\u023D\x03\x02\x02\x02\u0249" + | ||
"l\x03\x02\x02\x02\u024A\u024E\t\n\x02\x02\u024B\u024D\t\v\x02\x02\u024C" + | ||
"\u024B\x03\x02\x02\x02\u024D\u0250\x03\x02\x02\x02\u024E\u024C\x03\x02" + | ||
"\x02\x02\u024E\u024F\x03\x02\x02\x02\u024Fn\x03\x02\x02\x02\u0250\u024E" + | ||
"\x03\x02\x02\x02\u0251\u0253\t\f\x02\x02\u0252\u0251\x03\x02\x02\x02\u0253" + | ||
"\u0254\x03\x02\x02\x02\u0254\u0252\x03\x02\x02\x02\u0254\u0255\x03\x02" + | ||
"\x02\x02\u0255\u0256\x03\x02\x02\x02\u0256\u0257\b8\x02\x02\u0257p\x03" + | ||
"\x02\x02\x02\u0258\u0259\x071\x02\x02\u0259\u025A\x07,\x02\x02\u025A\u025E" + | ||
"\x03\x02\x02\x02\u025B\u025D\v\x02\x02\x02\u025C\u025B\x03\x02\x02\x02" + | ||
"\u025D\u0260\x03\x02\x02\x02\u025E\u025F\x03\x02\x02\x02\u025E\u025C\x03" + | ||
"\x02\x02\x02\u025F\u0261\x03\x02\x02\x02\u0260\u025E\x03\x02\x02\x02\u0261" + | ||
"\u0262\x07,\x02\x02\u0262\u0263\x071\x02\x02\u0263\u0264\x03\x02\x02\x02" + | ||
"\u0264\u0265\b9\x03\x02\u0265r\x03\x02\x02\x02\u0266\u0267\x071\x02\x02" + | ||
"\u0267\u0268\x071\x02\x02\u0268\u026C\x03\x02\x02\x02\u0269\u026B\n\r" + | ||
"\x02\x02\u026A\u0269\x03\x02\x02\x02\u026B\u026E\x03\x02\x02\x02\u026C" + | ||
"\u026A\x03\x02\x02\x02\u026C\u026D\x03\x02\x02\x02\u026D\u026F\x03\x02" + | ||
"\x02\x02\u026E\u026C\x03\x02\x02\x02\u026F\u0270\b:\x03\x02\u0270t\x03" + | ||
"\x02\x02\x02\x1A\x02\u0127\u012D\u0133\u013E\u0179\u017C\u0181\u0187\u0189" + | ||
"\u0192\u0198\u019F\u01A1\u01A9\u01AB\u01AF\u01B6\u01C6\u0248\u024E\u0254" + | ||
"\u025E\u026C\x04\b\x02\x02\x02\x03\x02"; | ||
"/\x03/\x03/\x03/\x03/\x05/\u017C\n/\x030\x050\u017F\n0\x030\x060\u0182" + | ||
"\n0\r0\x0E0\u0183\x030\x030\x060\u0188\n0\r0\x0E0\u0189\x050\u018C\n0" + | ||
"\x031\x031\x031\x031\x031\x031\x031\x051\u0195\n1\x032\x032\x072\u0199" + | ||
"\n2\f2\x0E2\u019C\v2\x033\x033\x033\x033\x073\u01A2\n3\f3\x0E3\u01A5\v" + | ||
"3\x033\x033\x033\x033\x033\x073\u01AC\n3\f3\x0E3\u01AF\v3\x033\x053\u01B2" + | ||
"\n3\x034\x034\x034\x034\x034\x034\x034\x034\x034\x035\x035\x035\x075\u01C0" + | ||
"\n5\f5\x0E5\u01C3\v5\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x056\u01D2\n6\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x057\u0254\n7\x038\x038\x07" + | ||
"8\u0258\n8\f8\x0E8\u025B\v8\x039\x069\u025E\n9\r9\x0E9\u025F\x039\x03" + | ||
"9\x03:\x03:\x03:\x03:\x07:\u0268\n:\f:\x0E:\u026B\v:\x03:\x03:\x03:\x03" + | ||
":\x03:\x03;\x03;\x03;\x03;\x07;\u0276\n;\f;\x0E;\u0279\v;\x03;\x03;\x05" + | ||
"\u01A3\u01AD\u0269\x02\x02<\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02" + | ||
"\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02" + | ||
"\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12#\x02\x13%" + | ||
"\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191\x02\x1A3\x02\x1B" + | ||
"5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02\"C\x02#E\x02$G\x02" + | ||
"%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-Y\x02.[\x02/]\x020_" + | ||
"\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x029q\x02:s\x02;u\x02" + | ||
"<\x03\x02\x0E\x03\x022;\x03\x02//\x04\x02GGgg\x03\x023;\x05\x02\f\f\x0F" + | ||
"\x0F$$\x05\x02\f\f\x0F\x0F))\x04\x02ZZzz\x05\x022;CHch\x04\x02C\\c|\x06" + | ||
"\x022;C\\aac|\x05\x02\v\f\x0E\x0F\"\"\x04\x02\f\f\x0F\x0F\x02\u02A3\x02" + | ||
"\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02" + | ||
"\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0F" + | ||
"\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15" + | ||
"\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02\x1B" + | ||
"\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02!" + | ||
"\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02\'\x03\x02" + | ||
"\x02\x02\x02)\x03\x02\x02\x02\x02+\x03\x02\x02\x02\x02-\x03\x02\x02\x02" + | ||
"\x02/\x03\x02\x02\x02\x021\x03\x02\x02\x02\x023\x03\x02\x02\x02\x025\x03" + | ||
"\x02\x02\x02\x027\x03\x02\x02\x02\x029\x03\x02\x02\x02\x02;\x03\x02\x02" + | ||
"\x02\x02=\x03\x02\x02\x02\x02?\x03\x02\x02\x02\x02A\x03\x02\x02\x02\x02" + | ||
"C\x03\x02\x02\x02\x02E\x03\x02\x02\x02\x02G\x03\x02\x02\x02\x02I\x03\x02" + | ||
"\x02\x02\x02K\x03\x02\x02\x02\x02M\x03\x02\x02\x02\x02O\x03\x02\x02\x02" + | ||
"\x02Q\x03\x02\x02\x02\x02S\x03\x02\x02\x02\x02U\x03\x02\x02\x02\x02W\x03" + | ||
"\x02\x02\x02\x02Y\x03\x02\x02\x02\x02[\x03\x02\x02\x02\x02]\x03\x02\x02" + | ||
"\x02\x02_\x03\x02\x02\x02\x02a\x03\x02\x02\x02\x02c\x03\x02\x02\x02\x02" + | ||
"e\x03\x02\x02\x02\x02g\x03\x02\x02\x02\x02i\x03\x02\x02\x02\x02k\x03\x02" + | ||
"\x02\x02\x02m\x03\x02\x02\x02\x02o\x03\x02\x02\x02\x02q\x03\x02\x02\x02" + | ||
"\x02s\x03\x02\x02\x02\x02u\x03\x02\x02\x02\x03w\x03\x02\x02\x02\x05~\x03" + | ||
"\x02\x02\x02\x07\x80\x03\x02\x02\x02\t\x8B\x03\x02\x02\x02\v\x8D\x03\x02" + | ||
"\x02\x02\r\x8F\x03\x02\x02\x02\x0F\x92\x03\x02\x02\x02\x11\x94\x03\x02" + | ||
"\x02\x02\x13\x96\x03\x02\x02\x02\x15\x99\x03\x02\x02\x02\x17\x9B\x03\x02" + | ||
"\x02\x02\x19\xA4\x03\x02\x02\x02\x1B\xA6\x03\x02\x02\x02\x1D\xA8\x03\x02" + | ||
"\x02\x02\x1F\xB1\x03\x02\x02\x02!\xB3\x03\x02\x02\x02#\xB5\x03\x02\x02" + | ||
"\x02%\xB7\x03\x02\x02\x02\'\xBF\x03\x02\x02\x02)\xC2\x03\x02\x02\x02+" + | ||
"\xC7\x03\x02\x02\x02-\xCB\x03\x02\x02\x02/\xCD\x03\x02\x02\x021\xCF\x03" + | ||
"\x02\x02\x023\xDA\x03\x02\x02\x025\xE2\x03\x02\x02\x027\xE4\x03\x02\x02" + | ||
"\x029\xE6\x03\x02\x02\x02;\xED\x03\x02\x02\x02=\xEF\x03\x02\x02\x02?\xF1" + | ||
"\x03\x02\x02\x02A\xF3\x03\x02\x02\x02C\xF6\x03\x02\x02\x02E\xF9\x03\x02" + | ||
"\x02\x02G\xFB\x03\x02\x02\x02I\xFD\x03\x02\x02\x02K\u0100\x03\x02\x02" + | ||
"\x02M\u0103\x03\x02\x02\x02O\u0107\x03\x02\x02\x02Q\u010C\x03\x02\x02" + | ||
"\x02S\u0113\x03\x02\x02\x02U\u011A\x03\x02\x02\x02W\u011E\x03\x02\x02" + | ||
"\x02Y\u0127\x03\x02\x02\x02[\u0140\x03\x02\x02\x02]\u017B\x03\x02\x02" + | ||
"\x02_\u017E\x03\x02\x02\x02a\u018D\x03\x02\x02\x02c\u0196\x03\x02\x02" + | ||
"\x02e\u01B1\x03\x02\x02\x02g\u01B3\x03\x02\x02\x02i\u01BC\x03\x02\x02" + | ||
"\x02k\u01D1\x03\x02\x02\x02m\u0253\x03\x02\x02\x02o\u0255\x03\x02\x02" + | ||
"\x02q\u025D\x03\x02\x02\x02s\u0263\x03\x02\x02\x02u\u0271\x03\x02\x02" + | ||
"\x02wx\x07r\x02\x02xy\x07t\x02\x02yz\x07c\x02\x02z{\x07i\x02\x02{|\x07" + | ||
"o\x02\x02|}\x07c\x02\x02}\x04\x03\x02\x02\x02~\x7F\x07=\x02\x02\x7F\x06" + | ||
"\x03\x02\x02\x02\x80\x81\x07e\x02\x02\x81\x82\x07c\x02\x02\x82\x83\x07" + | ||
"u\x02\x02\x83\x84\x07j\x02\x02\x84\x85\x07u\x02\x02\x85\x86\x07e\x02\x02" + | ||
"\x86\x87\x07t\x02\x02\x87\x88\x07k\x02\x02\x88\x89\x07r\x02\x02\x89\x8A" + | ||
"\x07v\x02\x02\x8A\b\x03\x02\x02\x02\x8B\x8C\x07`\x02\x02\x8C\n\x03\x02" + | ||
"\x02\x02\x8D\x8E\x07\x80\x02\x02\x8E\f\x03\x02\x02\x02\x8F\x90\x07@\x02" + | ||
"\x02\x90\x91\x07?\x02\x02\x91\x0E\x03\x02\x02\x02\x92\x93\x07@\x02\x02" + | ||
"\x93\x10\x03\x02\x02\x02\x94\x95\x07>\x02\x02\x95\x12\x03\x02\x02\x02" + | ||
"\x96\x97\x07>\x02\x02\x97\x98\x07?\x02\x02\x98\x14\x03\x02\x02\x02\x99" + | ||
"\x9A\x07?\x02\x02\x9A\x16\x03\x02\x02\x02\x9B\x9C\x07e\x02\x02\x9C\x9D" + | ||
"\x07q\x02\x02\x9D\x9E\x07p\x02\x02\x9E\x9F\x07v\x02\x02\x9F\xA0\x07t\x02" + | ||
"\x02\xA0\xA1\x07c\x02\x02\xA1\xA2\x07e\x02\x02\xA2\xA3\x07v\x02\x02\xA3" + | ||
"\x18\x03\x02\x02\x02\xA4\xA5\x07}\x02\x02\xA5\x1A\x03\x02\x02\x02\xA6" + | ||
"\xA7\x07\x7F\x02\x02\xA7\x1C\x03\x02\x02\x02\xA8\xA9\x07h\x02\x02\xA9" + | ||
"\xAA\x07w\x02\x02\xAA\xAB\x07p\x02\x02\xAB\xAC\x07e\x02\x02\xAC\xAD\x07" + | ||
"v\x02\x02\xAD\xAE\x07k\x02\x02\xAE\xAF\x07q\x02\x02\xAF\xB0\x07p\x02\x02" + | ||
"\xB0\x1E\x03\x02\x02\x02\xB1\xB2\x07*\x02\x02\xB2 \x03\x02\x02\x02\xB3" + | ||
"\xB4\x07.\x02\x02\xB4\"\x03\x02\x02\x02\xB5\xB6\x07+\x02\x02\xB6$\x03" + | ||
"\x02\x02\x02\xB7\xB8\x07t\x02\x02\xB8\xB9\x07g\x02\x02\xB9\xBA\x07s\x02" + | ||
"\x02\xBA\xBB\x07w\x02\x02\xBB\xBC\x07k\x02\x02\xBC\xBD\x07t\x02\x02\xBD" + | ||
"\xBE\x07g\x02\x02\xBE&\x03\x02\x02\x02\xBF\xC0\x07k\x02\x02\xC0\xC1\x07" + | ||
"h\x02\x02\xC1(\x03\x02\x02\x02\xC2\xC3\x07g\x02\x02\xC3\xC4\x07n\x02\x02" + | ||
"\xC4\xC5\x07u\x02\x02\xC5\xC6\x07g\x02\x02\xC6*\x03\x02\x02\x02\xC7\xC8" + | ||
"\x07p\x02\x02\xC8\xC9\x07g\x02\x02\xC9\xCA\x07y\x02\x02\xCA,\x03\x02\x02" + | ||
"\x02\xCB\xCC\x07]\x02\x02\xCC.\x03\x02\x02\x02\xCD\xCE\x07_\x02\x02\xCE" + | ||
"0\x03\x02\x02\x02\xCF\xD0\x070\x02\x02\xD0\xD1\x07t\x02\x02\xD1\xD2\x07" + | ||
"g\x02\x02\xD2\xD3\x07x\x02\x02\xD3\xD4\x07g\x02\x02\xD4\xD5\x07t\x02\x02" + | ||
"\xD5\xD6\x07u\x02\x02\xD6\xD7\x07g\x02\x02\xD7\xD8\x07*\x02\x02\xD8\xD9" + | ||
"\x07+\x02\x02\xD92\x03\x02\x02\x02\xDA\xDB\x070\x02\x02\xDB\xDC\x07n\x02" + | ||
"\x02\xDC\xDD\x07g\x02\x02\xDD\xDE\x07p\x02\x02\xDE\xDF\x07i\x02\x02\xDF" + | ||
"\xE0\x07v\x02\x02\xE0\xE1\x07j\x02\x02\xE14\x03\x02\x02\x02\xE2\xE3\x07" + | ||
"#\x02\x02\xE36\x03\x02\x02\x02\xE4\xE5\x07/\x02\x02\xE58\x03\x02\x02\x02" + | ||
"\xE6\xE7\x070\x02\x02\xE7\xE8\x07u\x02\x02\xE8\xE9\x07r\x02\x02\xE9\xEA" + | ||
"\x07n\x02\x02\xEA\xEB\x07k\x02\x02\xEB\xEC\x07v\x02\x02\xEC:\x03\x02\x02" + | ||
"\x02\xED\xEE\x071\x02\x02\xEE<\x03\x02\x02\x02\xEF\xF0\x07\'\x02\x02\xF0" + | ||
">\x03\x02\x02\x02\xF1\xF2\x07-\x02\x02\xF2@\x03\x02\x02\x02\xF3\xF4\x07" + | ||
"?\x02\x02\xF4\xF5\x07?\x02\x02\xF5B\x03\x02\x02\x02\xF6\xF7\x07#\x02\x02" + | ||
"\xF7\xF8\x07?\x02\x02\xF8D\x03\x02\x02\x02\xF9\xFA\x07(\x02\x02\xFAF\x03" + | ||
"\x02\x02\x02\xFB\xFC\x07~\x02\x02\xFCH\x03\x02\x02\x02\xFD\xFE\x07(\x02" + | ||
"\x02\xFE\xFF\x07(\x02\x02\xFFJ\x03\x02\x02\x02\u0100\u0101\x07~\x02\x02" + | ||
"\u0101\u0102\x07~\x02\x02\u0102L\x03\x02\x02\x02\u0103\u0104\x07k\x02" + | ||
"\x02\u0104\u0105\x07p\x02\x02\u0105\u0106\x07v\x02\x02\u0106N\x03\x02" + | ||
"\x02\x02\u0107\u0108\x07d\x02\x02\u0108\u0109\x07q\x02\x02\u0109\u010A" + | ||
"\x07q\x02\x02\u010A\u010B\x07n\x02\x02\u010BP\x03\x02\x02\x02\u010C\u010D" + | ||
"\x07u\x02\x02\u010D\u010E\x07v\x02\x02\u010E\u010F\x07t\x02\x02\u010F" + | ||
"\u0110\x07k\x02\x02\u0110\u0111\x07p\x02\x02\u0111\u0112\x07i\x02\x02" + | ||
"\u0112R\x03\x02\x02\x02\u0113\u0114\x07r\x02\x02\u0114\u0115\x07w\x02" + | ||
"\x02\u0115\u0116\x07d\x02\x02\u0116\u0117\x07m\x02\x02\u0117\u0118\x07" + | ||
"g\x02\x02\u0118\u0119\x07{\x02\x02\u0119T\x03\x02\x02\x02\u011A\u011B" + | ||
"\x07u\x02\x02\u011B\u011C\x07k\x02\x02\u011C\u011D\x07i\x02\x02\u011D" + | ||
"V\x03\x02\x02\x02\u011E\u011F\x07f\x02\x02\u011F\u0120\x07c\x02\x02\u0120" + | ||
"\u0121\x07v\x02\x02\u0121\u0122\x07c\x02\x02\u0122\u0123\x07u\x02\x02" + | ||
"\u0123\u0124\x07k\x02\x02\u0124\u0125\x07i\x02\x02\u0125X\x03\x02\x02" + | ||
"\x02\u0126\u0128\t\x02\x02\x02\u0127\u0126\x03\x02\x02\x02\u0128\u0129" + | ||
"\x03\x02\x02\x02\u0129\u0127\x03\x02\x02\x02\u0129\u012A\x03\x02\x02\x02" + | ||
"\u012A\u012B\x03\x02\x02\x02\u012B\u012D\x070\x02\x02\u012C\u012E\t\x02" + | ||
"\x02\x02\u012D\u012C\x03\x02\x02\x02\u012E\u012F\x03\x02\x02\x02\u012F" + | ||
"\u012D\x03\x02\x02\x02\u012F\u0130\x03\x02\x02\x02\u0130\u0131\x03\x02" + | ||
"\x02\x02\u0131\u0133\x070\x02\x02\u0132\u0134\t\x02\x02\x02\u0133\u0132" + | ||
"\x03\x02\x02\x02\u0134\u0135\x03\x02\x02\x02\u0135\u0133\x03\x02\x02\x02" + | ||
"\u0135\u0136\x03\x02\x02\x02\u0136Z\x03\x02\x02\x02\u0137\u0138\x07v\x02" + | ||
"\x02\u0138\u0139\x07t\x02\x02\u0139\u013A\x07w\x02\x02\u013A\u0141\x07" + | ||
"g\x02\x02\u013B\u013C\x07h\x02\x02\u013C\u013D\x07c\x02\x02\u013D\u013E" + | ||
"\x07n\x02\x02\u013E\u013F\x07u\x02\x02\u013F\u0141\x07g\x02\x02\u0140" + | ||
"\u0137\x03\x02\x02\x02\u0140\u013B\x03\x02\x02\x02\u0141\\\x03\x02\x02" + | ||
"\x02\u0142\u0143\x07u\x02\x02\u0143\u0144\x07c\x02\x02\u0144\u0145\x07" + | ||
"v\x02\x02\u0145\u0146\x07q\x02\x02\u0146\u0147\x07u\x02\x02\u0147\u0148" + | ||
"\x07j\x02\x02\u0148\u0149\x07k\x02\x02\u0149\u017C\x07u\x02\x02\u014A" + | ||
"\u014B\x07u\x02\x02\u014B\u014C\x07c\x02\x02\u014C\u014D\x07v\x02\x02" + | ||
"\u014D\u017C\x07u\x02\x02\u014E\u014F\x07h\x02\x02\u014F\u0150\x07k\x02" + | ||
"\x02\u0150\u0151\x07p\x02\x02\u0151\u0152\x07p\x02\x02\u0152\u0153\x07" + | ||
"g\x02\x02\u0153\u017C\x07{\x02\x02\u0154\u0155\x07d\x02\x02\u0155\u0156" + | ||
"\x07k\x02\x02\u0156\u0157\x07v\x02\x02\u0157\u017C\x07u\x02\x02\u0158" + | ||
"\u0159\x07d\x02\x02\u0159\u015A\x07k\x02\x02\u015A\u015B\x07v\x02\x02" + | ||
"\u015B\u015C\x07e\x02\x02\u015C\u015D\x07q\x02\x02\u015D\u015E\x07k\x02" + | ||
"\x02\u015E\u017C\x07p\x02\x02\u015F\u0160\x07u\x02\x02\u0160\u0161\x07" + | ||
"g\x02\x02\u0161\u0162\x07e\x02\x02\u0162\u0163\x07q\x02\x02\u0163\u0164" + | ||
"\x07p\x02\x02\u0164\u0165\x07f\x02\x02\u0165\u017C\x07u\x02\x02\u0166" + | ||
"\u0167\x07o\x02\x02\u0167\u0168\x07k\x02\x02\u0168\u0169\x07p\x02\x02" + | ||
"\u0169\u016A\x07w\x02\x02\u016A\u016B\x07v\x02\x02\u016B\u016C\x07g\x02" + | ||
"\x02\u016C\u017C\x07u\x02\x02\u016D\u016E\x07j\x02\x02\u016E\u016F\x07" + | ||
"q\x02\x02\u016F\u0170\x07w\x02\x02\u0170\u0171\x07t\x02\x02\u0171\u017C" + | ||
"\x07u\x02\x02\u0172\u0173\x07f\x02\x02\u0173\u0174\x07c\x02\x02\u0174" + | ||
"\u0175\x07{\x02\x02\u0175\u017C\x07u\x02\x02\u0176\u0177\x07y\x02\x02" + | ||
"\u0177\u0178\x07g\x02\x02\u0178\u0179\x07g\x02\x02\u0179\u017A\x07m\x02" + | ||
"\x02\u017A\u017C\x07u\x02\x02\u017B\u0142\x03\x02\x02\x02\u017B\u014A" + | ||
"\x03\x02\x02\x02\u017B\u014E\x03\x02\x02\x02\u017B\u0154\x03\x02\x02\x02" + | ||
"\u017B\u0158\x03\x02\x02\x02\u017B\u015F\x03\x02\x02\x02\u017B\u0166\x03" + | ||
"\x02\x02\x02\u017B\u016D\x03\x02\x02\x02\u017B\u0172\x03\x02\x02\x02\u017B" + | ||
"\u0176\x03\x02\x02\x02\u017C^\x03\x02\x02\x02\u017D\u017F\t\x03\x02\x02" + | ||
"\u017E\u017D\x03\x02\x02\x02\u017E\u017F\x03\x02\x02\x02\u017F\u0181\x03" + | ||
"\x02\x02\x02\u0180\u0182\t\x02\x02\x02\u0181\u0180\x03\x02\x02\x02\u0182" + | ||
"\u0183\x03\x02\x02\x02\u0183\u0181\x03\x02\x02\x02\u0183\u0184\x03\x02" + | ||
"\x02\x02\u0184\u018B\x03\x02\x02\x02\u0185\u0187\t\x04\x02\x02\u0186\u0188" + | ||
"\t\x02\x02\x02\u0187\u0186\x03\x02\x02\x02\u0188\u0189\x03\x02\x02\x02" + | ||
"\u0189\u0187\x03\x02\x02\x02\u0189\u018A\x03\x02\x02\x02\u018A\u018C\x03" + | ||
"\x02\x02\x02\u018B\u0185\x03\x02\x02\x02\u018B\u018C\x03\x02\x02\x02\u018C" + | ||
"`\x03\x02\x02\x02\u018D\u018E\x07d\x02\x02\u018E\u018F\x07{\x02\x02\u018F" + | ||
"\u0190\x07v\x02\x02\u0190\u0191\x07g\x02\x02\u0191\u0192\x07u\x02\x02" + | ||
"\u0192\u0194\x03\x02\x02\x02\u0193\u0195\x05c2\x02\u0194\u0193\x03\x02" + | ||
"\x02\x02\u0194\u0195\x03\x02\x02\x02\u0195b\x03\x02\x02\x02\u0196\u019A" + | ||
"\t\x05\x02\x02\u0197\u0199\t\x02\x02\x02\u0198\u0197\x03\x02\x02\x02\u0199" + | ||
"\u019C\x03\x02\x02\x02\u019A\u0198\x03\x02\x02\x02\u019A\u019B\x03\x02" + | ||
"\x02\x02\u019Bd\x03\x02\x02\x02\u019C\u019A\x03\x02\x02\x02\u019D\u01A3" + | ||
"\x07$\x02\x02\u019E\u019F\x07^\x02\x02\u019F\u01A2\x07$\x02\x02\u01A0" + | ||
"\u01A2\n\x06\x02\x02\u01A1\u019E\x03\x02\x02\x02\u01A1\u01A0\x03\x02\x02" + | ||
"\x02\u01A2\u01A5\x03\x02\x02\x02\u01A3\u01A4\x03\x02\x02\x02\u01A3\u01A1" + | ||
"\x03\x02\x02\x02\u01A4\u01A6\x03\x02\x02\x02\u01A5\u01A3\x03\x02\x02\x02" + | ||
"\u01A6\u01B2\x07$\x02\x02\u01A7\u01AD\x07)\x02\x02\u01A8\u01A9\x07^\x02" + | ||
"\x02\u01A9\u01AC\x07)\x02\x02\u01AA\u01AC\n\x07\x02\x02\u01AB\u01A8\x03" + | ||
"\x02\x02\x02\u01AB\u01AA\x03\x02\x02\x02\u01AC\u01AF\x03\x02\x02\x02\u01AD" + | ||
"\u01AE\x03\x02\x02\x02\u01AD\u01AB\x03\x02\x02\x02\u01AE\u01B0\x03\x02" + | ||
"\x02\x02\u01AF\u01AD\x03\x02\x02\x02\u01B0\u01B2\x07)\x02\x02\u01B1\u019D" + | ||
"\x03\x02\x02\x02\u01B1\u01A7\x03\x02\x02\x02\u01B2f\x03\x02\x02\x02\u01B3" + | ||
"\u01B4\x07f\x02\x02\u01B4\u01B5\x07c\x02\x02\u01B5\u01B6\x07v\x02\x02" + | ||
"\u01B6\u01B7\x07g\x02\x02\u01B7\u01B8\x07*\x02\x02\u01B8\u01B9\x03\x02" + | ||
"\x02\x02\u01B9\u01BA\x05e3\x02\u01BA\u01BB\x07+\x02\x02\u01BBh\x03\x02" + | ||
"\x02\x02\u01BC\u01BD\x072\x02\x02\u01BD\u01C1\t\b\x02\x02\u01BE\u01C0" + | ||
"\t\t\x02\x02\u01BF\u01BE\x03\x02\x02\x02\u01C0\u01C3\x03\x02\x02\x02\u01C1" + | ||
"\u01BF\x03\x02\x02\x02\u01C1\u01C2\x03\x02\x02\x02\u01C2j\x03\x02\x02" + | ||
"\x02\u01C3\u01C1\x03\x02\x02\x02\u01C4\u01C5\x07v\x02\x02\u01C5\u01C6" + | ||
"\x07z\x02\x02\u01C6\u01C7\x070\x02\x02\u01C7\u01C8\x07c\x02\x02\u01C8" + | ||
"\u01C9\x07i\x02\x02\u01C9\u01D2\x07g\x02\x02\u01CA\u01CB\x07v\x02\x02" + | ||
"\u01CB\u01CC\x07z\x02\x02\u01CC\u01CD\x070\x02\x02\u01CD\u01CE\x07v\x02" + | ||
"\x02\u01CE\u01CF\x07k\x02\x02\u01CF\u01D0\x07o\x02\x02\u01D0\u01D2\x07" + | ||
"g\x02\x02\u01D1\u01C4\x03\x02\x02\x02\u01D1\u01CA\x03\x02\x02\x02\u01D2" + | ||
"l\x03\x02\x02\x02\u01D3\u01D4\x07v\x02\x02\u01D4\u01D5\x07z\x02\x02\u01D5" + | ||
"\u01D6\x070\x02\x02\u01D6\u01D7\x07x\x02\x02\u01D7\u01D8\x07g\x02\x02" + | ||
"\u01D8\u01D9\x07t\x02\x02\u01D9\u01DA\x07u\x02\x02\u01DA\u01DB\x07k\x02" + | ||
"\x02\u01DB\u01DC\x07q\x02\x02\u01DC\u0254\x07p\x02\x02\u01DD\u01DE\x07" + | ||
"v\x02\x02\u01DE\u01DF\x07z\x02\x02\u01DF\u01E0\x070\x02\x02\u01E0\u01E1" + | ||
"\x07j\x02\x02\u01E1\u01E2\x07c\x02\x02\u01E2\u01E3\x07u\x02\x02\u01E3" + | ||
"\u01E4\x07j\x02\x02\u01E4\u01E5\x07R\x02\x02\u01E5\u01E6\x07t\x02\x02" + | ||
"\u01E6\u01E7\x07g\x02\x02\u01E7\u01E8\x07x\x02\x02\u01E8\u01E9\x07q\x02" + | ||
"\x02\u01E9\u01EA\x07w\x02\x02\u01EA\u01EB\x07v\x02\x02\u01EB\u0254\x07" + | ||
"u\x02\x02\u01EC\u01ED\x07v\x02\x02\u01ED\u01EE\x07z\x02\x02\u01EE\u01EF" + | ||
"\x070\x02\x02\u01EF\u01F0\x07j\x02\x02\u01F0\u01F1\x07c\x02\x02\u01F1" + | ||
"\u01F2\x07u\x02\x02\u01F2\u01F3\x07j\x02\x02\u01F3\u01F4\x07U\x02\x02" + | ||
"\u01F4\u01F5\x07g\x02\x02\u01F5\u01F6\x07s\x02\x02\u01F6\u01F7\x07w\x02" + | ||
"\x02\u01F7\u01F8\x07g\x02\x02\u01F8\u01F9\x07p\x02\x02\u01F9\u01FA\x07" + | ||
"e\x02\x02\u01FA\u0254\x07g\x02\x02\u01FB\u01FC\x07v\x02\x02\u01FC\u01FD" + | ||
"\x07z\x02\x02\u01FD\u01FE\x070\x02\x02\u01FE\u01FF\x07q\x02\x02\u01FF" + | ||
"\u0200\x07w\x02\x02\u0200\u0201\x07v\x02\x02\u0201\u0202\x07r\x02\x02" + | ||
"\u0202\u0203\x07q\x02\x02\u0203\u0204\x07k\x02\x02\u0204\u0205\x07p\x02" + | ||
"\x02\u0205\u0254\x07v\x02\x02\u0206\u0207\x07v\x02\x02\u0207\u0208\x07" + | ||
"z\x02\x02\u0208\u0209\x070\x02\x02\u0209\u020A\x07d\x02\x02\u020A\u020B" + | ||
"\x07{\x02\x02\u020B\u020C\x07v\x02\x02\u020C\u020D\x07g\x02\x02\u020D" + | ||
"\u020E\x07e\x02\x02\u020E\u020F\x07q\x02\x02\u020F\u0210\x07f\x02\x02" + | ||
"\u0210\u0254\x07g\x02\x02\u0211\u0212\x07v\x02\x02\u0212\u0213\x07z\x02" + | ||
"\x02\u0213\u0214\x070\x02\x02\u0214\u0215\x07x\x02\x02\u0215\u0216\x07" + | ||
"c\x02\x02\u0216\u0217\x07n\x02\x02\u0217\u0218\x07w\x02\x02\u0218\u0254" + | ||
"\x07g\x02\x02\u0219\u021A\x07v\x02\x02\u021A\u021B\x07z\x02\x02\u021B" + | ||
"\u021C\x070\x02\x02\u021C\u021D\x07u\x02\x02\u021D\u021E\x07g\x02\x02" + | ||
"\u021E\u021F\x07s\x02\x02\u021F\u0220\x07w\x02\x02\u0220\u0221\x07g\x02" + | ||
"\x02\u0221\u0222\x07p\x02\x02\u0222\u0223\x07e\x02\x02\u0223\u0254"; | ||
CashScriptLexer._serializedATNSegment1 = "\x07g\x02\x02\u0224\u0225\x07v\x02\x02\u0225\u0226\x07z\x02\x02\u0226" + | ||
"\u0227\x070\x02\x02\u0227\u0228\x07j\x02\x02\u0228\u0229\x07c\x02\x02" + | ||
"\u0229\u022A\x07u\x02\x02\u022A\u022B\x07j\x02\x02\u022B\u022C\x07Q\x02" + | ||
"\x02\u022C\u022D\x07w\x02\x02\u022D\u022E\x07v\x02\x02\u022E\u022F\x07" + | ||
"r\x02\x02\u022F\u0230\x07w\x02\x02\u0230\u0231\x07v\x02\x02\u0231\u0254" + | ||
"\x07u\x02\x02\u0232\u0233\x07v\x02\x02\u0233\u0234\x07z\x02\x02\u0234" + | ||
"\u0235\x070\x02\x02\u0235\u0236\x07n\x02\x02\u0236\u0237\x07q\x02\x02" + | ||
"\u0237\u0238\x07e\x02\x02\u0238\u0239\x07m\x02\x02\u0239\u023A\x07v\x02" + | ||
"\x02\u023A\u023B\x07k\x02\x02\u023B\u023C\x07o\x02\x02\u023C\u0254\x07" + | ||
"g\x02\x02\u023D\u023E\x07v\x02\x02\u023E\u023F\x07z\x02\x02\u023F\u0240" + | ||
"\x070\x02\x02\u0240\u0241\x07j\x02\x02\u0241\u0242\x07c\x02\x02\u0242" + | ||
"\u0243\x07u\x02\x02\u0243\u0244\x07j\x02\x02\u0244\u0245\x07v\x02\x02" + | ||
"\u0245\u0246\x07{\x02\x02\u0246\u0247\x07r\x02\x02\u0247\u0254\x07g\x02" + | ||
"\x02\u0248\u0249\x07v\x02\x02\u0249\u024A\x07z\x02\x02\u024A\u024B\x07" + | ||
"0\x02\x02\u024B\u024C\x07r\x02\x02\u024C\u024D\x07t\x02\x02\u024D\u024E" + | ||
"\x07g\x02\x02\u024E\u024F\x07k\x02\x02\u024F\u0250\x07o\x02\x02\u0250" + | ||
"\u0251\x07c\x02\x02\u0251\u0252\x07i\x02\x02\u0252\u0254\x07g\x02\x02" + | ||
"\u0253\u01D3\x03\x02\x02\x02\u0253\u01DD\x03\x02\x02\x02\u0253\u01EC\x03" + | ||
"\x02\x02\x02\u0253\u01FB\x03\x02\x02\x02\u0253\u0206\x03\x02\x02\x02\u0253" + | ||
"\u0211\x03\x02\x02\x02\u0253\u0219\x03\x02\x02\x02\u0253\u0224\x03\x02" + | ||
"\x02\x02\u0253\u0232\x03\x02\x02\x02\u0253\u023D\x03\x02\x02\x02\u0253" + | ||
"\u0248\x03\x02\x02\x02\u0254n\x03\x02\x02\x02\u0255\u0259\t\n\x02\x02" + | ||
"\u0256\u0258\t\v\x02\x02\u0257\u0256\x03\x02\x02\x02\u0258\u025B\x03\x02" + | ||
"\x02\x02\u0259\u0257\x03\x02\x02\x02\u0259\u025A\x03\x02\x02\x02\u025A" + | ||
"p\x03\x02\x02\x02\u025B\u0259\x03\x02\x02\x02\u025C\u025E\t\f\x02\x02" + | ||
"\u025D\u025C\x03\x02\x02\x02\u025E\u025F\x03\x02\x02\x02\u025F\u025D\x03" + | ||
"\x02\x02\x02\u025F\u0260\x03\x02\x02\x02\u0260\u0261\x03\x02\x02\x02\u0261" + | ||
"\u0262\b9\x02\x02\u0262r\x03\x02\x02\x02\u0263\u0264\x071\x02\x02\u0264" + | ||
"\u0265\x07,\x02\x02\u0265\u0269\x03\x02\x02\x02\u0266\u0268\v\x02\x02" + | ||
"\x02\u0267\u0266\x03\x02\x02\x02\u0268\u026B\x03\x02\x02\x02\u0269\u026A" + | ||
"\x03\x02\x02\x02\u0269\u0267\x03\x02\x02\x02\u026A\u026C\x03\x02\x02\x02" + | ||
"\u026B\u0269\x03\x02\x02\x02\u026C\u026D\x07,\x02\x02\u026D\u026E\x07" + | ||
"1\x02\x02\u026E\u026F\x03\x02\x02\x02\u026F\u0270\b:\x03\x02\u0270t\x03" + | ||
"\x02\x02\x02\u0271\u0272\x071\x02\x02\u0272\u0273\x071\x02\x02\u0273\u0277" + | ||
"\x03\x02\x02\x02\u0274\u0276\n\r\x02\x02\u0275\u0274\x03\x02\x02\x02\u0276" + | ||
"\u0279\x03\x02\x02\x02\u0277\u0275\x03\x02\x02\x02\u0277\u0278\x03\x02" + | ||
"\x02\x02\u0278\u027A\x03\x02\x02\x02\u0279\u0277\x03\x02\x02\x02\u027A" + | ||
"\u027B\b;\x03\x02\u027Bv\x03\x02\x02\x02\x1A\x02\u0129\u012F\u0135\u0140" + | ||
"\u017B\u017E\u0183\u0189\u018B\u0194\u019A\u01A1\u01A3\u01AB\u01AD\u01B1" + | ||
"\u01C1\u01D1\u0253\u0259\u025F\u0269\u0277\x04\b\x02\x02\x02\x03\x02"; | ||
CashScriptLexer._serializedATN = Utils.join([ | ||
@@ -437,0 +455,0 @@ CashScriptLexer._serializedATNSegment0, |
"use strict"; | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.7.3-SNAPSHOT | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.9.0-SNAPSHOT | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
//# sourceMappingURL=CashScriptListener.js.map |
import { ATN } from "antlr4ts/atn/ATN"; | ||
import { FailedPredicateException } from "antlr4ts/FailedPredicateException"; | ||
import { Parser } from "antlr4ts/Parser"; | ||
@@ -62,9 +63,10 @@ import { ParserRuleContext } from "antlr4ts/ParserRuleContext"; | ||
static readonly StringLiteral = 50; | ||
static readonly HexLiteral = 51; | ||
static readonly TxVar = 52; | ||
static readonly PreimageField = 53; | ||
static readonly Identifier = 54; | ||
static readonly WHITESPACE = 55; | ||
static readonly COMMENT = 56; | ||
static readonly LINE_COMMENT = 57; | ||
static readonly DateLiteral = 51; | ||
static readonly HexLiteral = 52; | ||
static readonly TxVar = 53; | ||
static readonly PreimageField = 54; | ||
static readonly Identifier = 55; | ||
static readonly WHITESPACE = 56; | ||
static readonly COMMENT = 57; | ||
static readonly LINE_COMMENT = 58; | ||
static readonly RULE_sourceFile = 0; | ||
@@ -101,2 +103,3 @@ static readonly RULE_pragmaDirective = 1; | ||
get serializedATN(): string; | ||
protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException; | ||
constructor(input: TokenStream); | ||
@@ -411,2 +414,3 @@ sourceFile(): SourceFileContext; | ||
StringLiteral(): TerminalNode | undefined; | ||
DateLiteral(): TerminalNode | undefined; | ||
HexLiteral(): TerminalNode | undefined; | ||
@@ -413,0 +417,0 @@ constructor(parent: ParserRuleContext | undefined, invokingState: number); |
"use strict"; | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.7.3-SNAPSHOT | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.9.0-SNAPSHOT | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
//# sourceMappingURL=CashScriptVisitor.js.map |
export * from './Errors'; | ||
export { Artifact, AbiFunction, AbiInput } from './artifact/Artifact'; | ||
export { Op, Script } from './generation/Script'; | ||
export { PrimitiveType, Type, BytesType, ArrayType, TupleType, parseType, } from './ast/Type'; | ||
export { Data, Artifacts, CashCompiler, } from './util'; | ||
export declare const version = "0.5.7"; | ||
export * as utils from '@cashscript/utils'; | ||
export { compileFile, compileString } from './compiler'; | ||
export declare const version = "0.6.0"; |
"use strict"; | ||
function __export(m) { | ||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
} | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
var __importStar = (this && this.__importStar) || function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__export(require("./Errors")); | ||
var Script_1 = require("./generation/Script"); | ||
exports.Op = Script_1.Op; | ||
var Type_1 = require("./ast/Type"); | ||
exports.PrimitiveType = Type_1.PrimitiveType; | ||
exports.BytesType = Type_1.BytesType; | ||
exports.ArrayType = Type_1.ArrayType; | ||
exports.TupleType = Type_1.TupleType; | ||
exports.parseType = Type_1.parseType; | ||
var util_1 = require("./util"); | ||
exports.Data = util_1.Data; | ||
exports.Artifacts = util_1.Artifacts; | ||
exports.CashCompiler = util_1.CashCompiler; | ||
exports.version = '0.5.7'; | ||
exports.version = exports.compileString = exports.compileFile = exports.utils = void 0; | ||
__exportStar(require("./Errors"), exports); | ||
exports.utils = __importStar(require("@cashscript/utils")); | ||
var compiler_1 = require("./compiler"); | ||
Object.defineProperty(exports, "compileFile", { enumerable: true, get: function () { return compiler_1.compileFile; } }); | ||
Object.defineProperty(exports, "compileString", { enumerable: true, get: function () { return compiler_1.compileString; } }); | ||
exports.version = '0.6.0'; | ||
//# sourceMappingURL=index.js.map |
@@ -1,2 +0,2 @@ | ||
import { Node, ContractNode, ParameterNode, VariableDefinitionNode, FunctionDefinitionNode, AssignNode, IdentifierNode, BranchNode, CastNode, FunctionCallNode, UnaryOpNode, BinaryOpNode, BoolLiteralNode, IntLiteralNode, HexLiteralNode, StringLiteralNode, BlockNode, TimeOpNode, ArrayNode, TupleIndexOpNode, RequireNode } from '../ast/AST'; | ||
import { Node, ContractNode, ParameterNode, VariableDefinitionNode, FunctionDefinitionNode, AssignNode, IdentifierNode, BranchNode, CastNode, FunctionCallNode, UnaryOpNode, BinaryOpNode, BoolLiteralNode, IntLiteralNode, HexLiteralNode, StringLiteralNode, BlockNode, TimeOpNode, ArrayNode, TupleIndexOpNode, RequireNode, InstantiationNode } from '../ast/AST'; | ||
import AstTraversal from '../ast/AstTraversal'; | ||
@@ -23,2 +23,3 @@ export default class OutputSourceCodeTraversal extends AstTraversal { | ||
visitFunctionCall(node: FunctionCallNode): Node; | ||
visitInstantiation(node: InstantiationNode): Node; | ||
visitTupleIndexOp(node: TupleIndexOpNode): Node; | ||
@@ -25,0 +26,0 @@ visitBinaryOp(node: BinaryOpNode): Node; |
@@ -128,2 +128,10 @@ "use strict"; | ||
} | ||
visitInstantiation(node) { | ||
this.addOutput('new '); | ||
node.identifier = this.visit(node.identifier); | ||
this.addOutput('('); | ||
node.parameters = this.visitCommaList(node.parameters); | ||
this.addOutput(')'); | ||
return node; | ||
} | ||
visitTupleIndexOp(node) { | ||
@@ -130,0 +138,0 @@ node.tuple = this.visit(node.tuple); |
@@ -6,5 +6,5 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const utils_1 = require("@cashscript/utils"); | ||
const AstTraversal_1 = __importDefault(require("../ast/AstTraversal")); | ||
const Errors_1 = require("../Errors"); | ||
const Type_1 = require("../ast/Type"); | ||
const Operator_1 = require("../ast/Operator"); | ||
@@ -32,3 +32,3 @@ const Globals_1 = require("../ast/Globals"); | ||
const parameters = node.expression.type ? [node.expression.type] : []; | ||
expectParameters(node, parameters, [Type_1.PrimitiveType.BOOL]); | ||
expectParameters(node, parameters, [utils_1.PrimitiveType.BOOL]); | ||
return node; | ||
@@ -40,4 +40,4 @@ } | ||
node.elseBlock = this.visitOptional(node.elseBlock); | ||
if (!Type_1.implicitlyCastable(node.condition.type, Type_1.PrimitiveType.BOOL)) { | ||
throw new Errors_1.TypeError(node, node.condition.type, Type_1.PrimitiveType.BOOL); | ||
if (!utils_1.implicitlyCastable(node.condition.type, utils_1.PrimitiveType.BOOL)) { | ||
throw new Errors_1.TypeError(node, node.condition.type, utils_1.PrimitiveType.BOOL); | ||
} | ||
@@ -49,3 +49,3 @@ return node; | ||
node.size = this.visitOptional(node.size); | ||
if (!Type_1.explicitlyCastable(node.expression.type, node.type)) { | ||
if (!utils_1.explicitlyCastable(node.expression.type, node.type)) { | ||
throw new Errors_1.CastTypeError(node); | ||
@@ -55,3 +55,3 @@ } | ||
if (node.size) { | ||
if (node.expression.type !== Type_1.PrimitiveType.INT || node.type.toString() !== 'bytes') { | ||
if (node.expression.type !== utils_1.PrimitiveType.INT || node.type.toString() !== 'bytes') { | ||
throw new Errors_1.CastSizeError(node); | ||
@@ -104,3 +104,3 @@ } | ||
node.right = this.visit(node.right); | ||
const resType = Type_1.resultingType(node.left.type, node.right.type); | ||
const resType = utils_1.resultingType(node.left.type, node.right.type); | ||
if (!resType && !node.operator.startsWith('.')) { | ||
@@ -111,8 +111,8 @@ throw new Errors_1.UnequalTypeError(node); | ||
case Operator_1.BinaryOperator.PLUS: | ||
expectAnyOfTypes(node, resType, [Type_1.PrimitiveType.INT, Type_1.PrimitiveType.STRING, new Type_1.BytesType()]); | ||
expectAnyOfTypes(node, resType, [utils_1.PrimitiveType.INT, utils_1.PrimitiveType.STRING, new utils_1.BytesType()]); | ||
node.type = resType; | ||
// Infer new bounded bytes type if both operands are bounded bytes types | ||
if (node.left.type instanceof Type_1.BytesType && node.right.type instanceof Type_1.BytesType) { | ||
if (node.left.type instanceof utils_1.BytesType && node.right.type instanceof utils_1.BytesType) { | ||
if (node.left.type.bound && node.right.type.bound) { | ||
node.type = new Type_1.BytesType(node.left.type.bound + node.right.type.bound); | ||
node.type = new utils_1.BytesType(node.left.type.bound + node.right.type.bound); | ||
} | ||
@@ -132,7 +132,7 @@ } | ||
expectInt(node, resType); | ||
node.type = Type_1.PrimitiveType.BOOL; | ||
node.type = utils_1.PrimitiveType.BOOL; | ||
return node; | ||
case Operator_1.BinaryOperator.EQ: | ||
case Operator_1.BinaryOperator.NE: | ||
node.type = Type_1.PrimitiveType.BOOL; | ||
node.type = utils_1.PrimitiveType.BOOL; | ||
return node; | ||
@@ -142,3 +142,3 @@ case Operator_1.BinaryOperator.AND: | ||
expectBool(node, resType); | ||
node.type = Type_1.PrimitiveType.BOOL; | ||
node.type = utils_1.PrimitiveType.BOOL; | ||
return node; | ||
@@ -152,6 +152,6 @@ case Operator_1.BinaryOperator.BIT_AND: | ||
case Operator_1.BinaryOperator.SPLIT: | ||
expectAnyOfTypes(node, node.left.type, [new Type_1.BytesType(), Type_1.PrimitiveType.STRING]); | ||
expectAnyOfTypes(node, node.left.type, [new utils_1.BytesType(), utils_1.PrimitiveType.STRING]); | ||
expectInt(node, node.right.type); | ||
// Result of split are two unbounded bytes types (could be improved to do type inference) | ||
node.type = new Type_1.TupleType(node.left.type instanceof Type_1.BytesType ? new Type_1.BytesType() : Type_1.PrimitiveType.STRING); | ||
node.type = new utils_1.TupleType(node.left.type instanceof utils_1.BytesType ? new utils_1.BytesType() : utils_1.PrimitiveType.STRING); | ||
return node; | ||
@@ -167,14 +167,14 @@ default: | ||
expectBool(node, node.expression.type); | ||
node.type = Type_1.PrimitiveType.BOOL; | ||
node.type = utils_1.PrimitiveType.BOOL; | ||
return node; | ||
case Operator_1.UnaryOperator.NEGATE: | ||
expectInt(node, node.expression.type); | ||
node.type = Type_1.PrimitiveType.INT; | ||
node.type = utils_1.PrimitiveType.INT; | ||
return node; | ||
case Operator_1.UnaryOperator.SIZE: | ||
expectAnyOfTypes(node, node.expression.type, [new Type_1.BytesType(), Type_1.PrimitiveType.STRING]); | ||
node.type = Type_1.PrimitiveType.INT; | ||
expectAnyOfTypes(node, node.expression.type, [new utils_1.BytesType(), utils_1.PrimitiveType.STRING]); | ||
node.type = utils_1.PrimitiveType.INT; | ||
return node; | ||
case Operator_1.UnaryOperator.REVERSE: | ||
expectAnyOfTypes(node, node.expression.type, [new Type_1.BytesType(), Type_1.PrimitiveType.STRING]); | ||
expectAnyOfTypes(node, node.expression.type, [new utils_1.BytesType(), utils_1.PrimitiveType.STRING]); | ||
// Type is preserved | ||
@@ -194,7 +194,7 @@ node.type = node.expression.type; | ||
}); | ||
const elementType = Type_1.arrayType(elementTypes); | ||
const elementType = utils_1.arrayType(elementTypes); | ||
if (!elementType) { | ||
throw new Errors_1.ArrayElementError(node); | ||
} | ||
node.type = new Type_1.ArrayType(elementType); | ||
node.type = new utils_1.ArrayType(elementType); | ||
return node; | ||
@@ -213,3 +213,3 @@ } | ||
return; | ||
if (expectedTypes.find((expected) => Type_1.implicitlyCastable(actual, expected))) { | ||
if (expectedTypes.find((expected) => utils_1.implicitlyCastable(actual, expected))) { | ||
return; | ||
@@ -220,10 +220,10 @@ } | ||
function expectBool(node, actual) { | ||
expectAnyOfTypes(node, actual, [Type_1.PrimitiveType.BOOL]); | ||
expectAnyOfTypes(node, actual, [utils_1.PrimitiveType.BOOL]); | ||
} | ||
function expectInt(node, actual) { | ||
expectAnyOfTypes(node, actual, [Type_1.PrimitiveType.INT]); | ||
expectAnyOfTypes(node, actual, [utils_1.PrimitiveType.INT]); | ||
} | ||
function expectSameSizeBytes(node, left, right) { | ||
if (!(left instanceof Type_1.BytesType) || !(right instanceof Type_1.BytesType)) { | ||
throw new Errors_1.UnsupportedTypeError(node, left, new Type_1.BytesType()); | ||
if (!(left instanceof utils_1.BytesType) || !(right instanceof utils_1.BytesType)) { | ||
throw new Errors_1.UnsupportedTypeError(node, left, new utils_1.BytesType()); | ||
} | ||
@@ -235,8 +235,8 @@ if (left.bound !== right.bound) { | ||
function expectTuple(node, actual) { | ||
if (!(actual instanceof Type_1.TupleType)) { | ||
throw new Errors_1.UnsupportedTypeError(node, actual, new Type_1.TupleType()); | ||
if (!(actual instanceof utils_1.TupleType)) { | ||
throw new Errors_1.UnsupportedTypeError(node, actual, new utils_1.TupleType()); | ||
} | ||
} | ||
function expectAssignable(node, actual, expected) { | ||
if (!Type_1.implicitlyCastable(actual, expected)) { | ||
if (!utils_1.implicitlyCastable(actual, expected)) { | ||
throw new Errors_1.AssignTypeError(node); | ||
@@ -246,3 +246,3 @@ } | ||
function expectParameters(node, actual, expected) { | ||
if (!Type_1.implicitlyCastableSignature(actual, expected)) { | ||
if (!utils_1.implicitlyCastableSignature(actual, expected)) { | ||
throw new Errors_1.InvalidParameterTypeError(node, actual, expected); | ||
@@ -249,0 +249,0 @@ } |
@@ -0,24 +1,3 @@ | ||
import { Artifact, Script } from '@cashscript/utils'; | ||
import { Ast } from '../ast/AST'; | ||
import { Script } from '../generation/Script'; | ||
export interface AbiInput { | ||
name: string; | ||
type: string; | ||
} | ||
export interface AbiFunction { | ||
name: string; | ||
covenant: boolean; | ||
inputs: AbiInput[]; | ||
} | ||
export interface Artifact { | ||
contractName: string; | ||
constructorInputs: AbiInput[]; | ||
abi: AbiFunction[]; | ||
bytecode: string; | ||
source: string; | ||
compiler: { | ||
name: string; | ||
version: string; | ||
}; | ||
updatedAt: string; | ||
} | ||
export declare function generateArtifact(ast: Ast, script: Script, source: string): Artifact; |
@@ -0,3 +1,3 @@ | ||
import { scriptToAsm } from '@cashscript/utils'; | ||
import { version } from '..'; | ||
import { Data } from '../util'; | ||
export function generateArtifact(ast, script, source) { | ||
@@ -15,3 +15,3 @@ const { contract } = ast; | ||
})); | ||
const bytecode = Data.scriptToAsm(script); | ||
const bytecode = scriptToAsm(script); | ||
return { | ||
@@ -18,0 +18,0 @@ contractName: contract.name, |
@@ -0,1 +1,2 @@ | ||
import { Type } from '@cashscript/utils'; | ||
import { TimeOp, PreimageField } from './Globals'; | ||
@@ -5,3 +6,2 @@ import AstVisitor from './AstVisitor'; | ||
import { Location } from './Location'; | ||
import { Type } from './Type'; | ||
import { SymbolTable, Symbol } from './SymbolTable'; | ||
@@ -8,0 +8,0 @@ export declare type Ast = SourceFileNode; |
@@ -1,2 +0,2 @@ | ||
import { PrimitiveType, BytesType } from './Type'; | ||
import { PrimitiveType, BytesType } from '@cashscript/utils'; | ||
export class Node { | ||
@@ -3,0 +3,0 @@ } |
@@ -39,3 +39,4 @@ import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor'; | ||
createStringLiteral(ctx: LiteralContext): StringLiteralNode; | ||
createDateLiteral(ctx: LiteralContext): IntLiteralNode; | ||
createHexLiteral(ctx: LiteralContext): HexLiteralNode; | ||
} |
import { hexToBin } from '@bitauth/libauth'; | ||
import { parseType } from '@cashscript/utils'; | ||
import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor'; | ||
@@ -9,4 +10,3 @@ import semver from 'semver'; | ||
import { version } from '..'; | ||
import { VersionError } from '../Errors'; | ||
import { parseType } from './Type'; | ||
import { ParseError, VersionError } from '../Errors'; | ||
export default class AstBuilder extends AbstractParseTreeVisitor { | ||
@@ -199,2 +199,5 @@ constructor(tree) { | ||
} | ||
if (ctx.DateLiteral()) { | ||
return this.createDateLiteral(ctx); | ||
} | ||
if (ctx.HexLiteral()) { | ||
@@ -230,2 +233,16 @@ return this.createHexLiteral(ctx); | ||
} | ||
createDateLiteral(ctx) { | ||
const rawString = ctx.DateLiteral().text; | ||
const stringValue = rawString.substring(6, rawString.length - 2).trim(); | ||
if (!/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d$/.test(stringValue)) { | ||
throw new ParseError('Date should be in format `YYYY-MM-DDThh:mm:ss`', Location.fromCtx(ctx)); | ||
} | ||
const timestamp = Math.round(Date.parse(stringValue) / 1000); | ||
if (Number.isNaN(timestamp)) { | ||
throw new ParseError(`Incorrectly formatted date "${stringValue}"`, Location.fromCtx(ctx)); | ||
} | ||
const intLiteral = new IntLiteralNode(timestamp); | ||
intLiteral.location = Location.fromCtx(ctx); | ||
return intLiteral; | ||
} | ||
createHexLiteral(ctx) { | ||
@@ -232,0 +249,0 @@ const hexString = ctx.HexLiteral().text; |
@@ -12,5 +12,5 @@ export default class AstVisitor { | ||
visitOptionalList(nodes) { | ||
return nodes && nodes.map((n) => this.visit(n)); | ||
return nodes && this.visitList(nodes); | ||
} | ||
} | ||
//# sourceMappingURL=AstVisitor.js.map |
@@ -0,3 +1,3 @@ | ||
import { PrimitiveType, ArrayType, BytesType } from '@cashscript/utils'; | ||
import { SymbolTable, Symbol } from './SymbolTable'; | ||
import { PrimitiveType, ArrayType, BytesType } from './Type'; | ||
export const NumberUnit = { | ||
@@ -4,0 +4,0 @@ SATOSHIS: 1, |
@@ -9,3 +9,3 @@ export class Location { | ||
const stop = ((_a = ctx.stop) === null || _a === void 0 ? void 0 : _a.text) ? ctx.stop : ctx.start; | ||
const textLength = (_b = stop.text, (_b !== null && _b !== void 0 ? _b : '')).length; | ||
const textLength = ((_b = stop.text) !== null && _b !== void 0 ? _b : '').length; | ||
const start = new Point(ctx.start.line, ctx.start.charPositionInLine); | ||
@@ -17,3 +17,3 @@ const end = new Point(stop.line, stop.charPositionInLine + textLength); | ||
var _a; | ||
const textLength = (_a = token.text, (_a !== null && _a !== void 0 ? _a : '')).length; | ||
const textLength = ((_a = token.text) !== null && _a !== void 0 ? _a : '').length; | ||
const start = new Point(token.line, token.charPositionInLine); | ||
@@ -20,0 +20,0 @@ const end = new Point(token.line, token.charPositionInLine + textLength); |
@@ -0,3 +1,3 @@ | ||
import { Type } from '@cashscript/utils'; | ||
import { VariableDefinitionNode, ParameterNode, IdentifierNode, Node } from './AST'; | ||
import { Type } from './Type'; | ||
export declare class Symbol { | ||
@@ -4,0 +4,0 @@ name: string; |
@@ -45,6 +45,4 @@ export class Symbol { | ||
get(name) { | ||
var _a; | ||
let symbol = this.symbols.get(name); | ||
symbol = (symbol !== null && symbol !== void 0 ? symbol : (_a = this.parent) === null || _a === void 0 ? void 0 : _a.get(name)); | ||
return symbol; | ||
var _a, _b; | ||
return (_a = this.symbols.get(name)) !== null && _a !== void 0 ? _a : (_b = this.parent) === null || _b === void 0 ? void 0 : _b.get(name); | ||
} | ||
@@ -51,0 +49,0 @@ getFromThis(name) { |
import { ANTLRErrorListener, RecognitionException, Recognizer } from 'antlr4ts'; | ||
/** | ||
* ANTLR Error Listener that immediately throws on error. This is used so that | ||
* ANTLR doesn't attempt any error recovery during lexing/parsing and fails early. | ||
*/ | ||
export default class ThrowingErrorListener implements ANTLRErrorListener<any> { | ||
static readonly INSTANCE: ThrowingErrorListener; | ||
syntaxError<T>(recognizer: Recognizer<T, any>, offendingSymbol: T, line: number, charPositionInLine: number, msg: string, e?: RecognitionException): void; | ||
syntaxError<T>(recognizer: Recognizer<T, any>, offendingSymbol: T, line: number, charPositionInLine: number, message: string, e?: RecognitionException): void; | ||
} |
import { ParseError } from '../Errors'; | ||
import { Point } from './Location'; | ||
/** | ||
* ANTLR Error Listener that immediately throws on error. This is used so that | ||
* ANTLR doesn't attempt any error recovery during lexing/parsing and fails early. | ||
*/ | ||
export default class ThrowingErrorListener { | ||
syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e) { | ||
throw new ParseError(`line ${line}:${charPositionInLine} ${msg}`); | ||
syntaxError(recognizer, offendingSymbol, line, charPositionInLine, message, e) { | ||
const capitalisedMessage = message.charAt(0).toUpperCase() + message.slice(1); | ||
throw new ParseError(capitalisedMessage, new Point(line, charPositionInLine)); | ||
} | ||
@@ -9,0 +12,0 @@ } |
#! /usr/bin/env node | ||
import { binToHex, hexToBin } from '@bitauth/libauth'; | ||
import { binToHex } from '@bitauth/libauth'; | ||
import { asmToScript, calculateBytesize, countOpcodes, exportArtifact, scriptToAsm, scriptToBytecode, } from '@cashscript/utils'; | ||
import { program } from 'commander'; | ||
import fs from 'fs'; | ||
import path from 'path'; | ||
import { CashCompiler, Artifacts, version } from '.'; | ||
import { countOpcodes, Data, calculateBytesize } from './util'; | ||
import { compileFile, version } from '.'; | ||
program | ||
@@ -18,6 +18,2 @@ .storeOptionsAsProperties(false) | ||
.option('-s, --size', 'Display the size in bytes of the compiled bytecode.') | ||
.option('-a, --args <args...>', 'List of constructor arguments to pass into the contract. ' | ||
+ 'Can only be used in combination with either the --hex or --asm flags. ' | ||
+ 'When compiling to a JSON artifact, contract instantiation should be done through the CashScript SDK. ' | ||
+ 'Note that NO type checking is performed by the cashc CLI, so it is safer to use the CashScript SDK.') | ||
.parse(); | ||
@@ -35,24 +31,4 @@ const opts = program.opts(); | ||
try { | ||
const artifact = CashCompiler.compileFile(sourceFile); | ||
const script = Data.asmToScript(artifact.bytecode); | ||
// Parse any provided args and add these to the front of the script | ||
if (opts.args) { | ||
opts.args.forEach((arg) => { | ||
if (arg === 'true') { | ||
script.unshift(Data.encodeBool(true)); | ||
} | ||
else if (arg === 'false') { | ||
script.unshift(Data.encodeBool(false)); | ||
} | ||
else if (arg.startsWith('0x')) { | ||
script.unshift(hexToBin(arg.substring(2))); | ||
} | ||
else if (!Number.isNaN(Number(arg))) { | ||
script.unshift(Data.encodeInt(Number(arg))); | ||
} | ||
else { | ||
script.unshift(Data.encodeString(arg)); | ||
} | ||
}); | ||
} | ||
const artifact = compileFile(sourceFile); | ||
const script = asmToScript(artifact.bytecode); | ||
const opcount = countOpcodes(script); | ||
@@ -67,7 +43,7 @@ const bytesize = calculateBytesize(script); | ||
if (opts.asm) { | ||
console.log(Data.scriptToAsm(script)); | ||
console.log(scriptToAsm(script)); | ||
return; | ||
} | ||
if (opts.hex) { | ||
console.log(binToHex(Data.scriptToBytecode(script))); | ||
console.log(binToHex(scriptToBytecode(script))); | ||
return; | ||
@@ -91,3 +67,3 @@ } | ||
} | ||
Artifacts.export(artifact, outputFile); | ||
exportArtifact(artifact, outputFile); | ||
} | ||
@@ -94,0 +70,0 @@ else { |
@@ -1,4 +0,5 @@ | ||
import { IdentifierNode, FunctionDefinitionNode, VariableDefinitionNode, ParameterNode, Node, FunctionCallNode, BinaryOpNode, UnaryOpNode, TimeOpNode, CastNode, AssignNode, BranchNode, ArrayNode, TupleIndexOpNode, RequireNode, InstantiationNode } from './ast/AST'; | ||
import { Type, PrimitiveType } from './ast/Type'; | ||
import { Type, PrimitiveType } from '@cashscript/utils'; | ||
import { IdentifierNode, FunctionDefinitionNode, VariableDefinitionNode, ParameterNode, Node, FunctionCallNode, BinaryOpNode, UnaryOpNode, TimeOpNode, CastNode, AssignNode, BranchNode, ArrayNode, TupleIndexOpNode, RequireNode, InstantiationNode, StatementNode, ContractNode } from './ast/AST'; | ||
import { Symbol, SymbolType } from './ast/SymbolTable'; | ||
import { Location, Point } from './ast/Location'; | ||
export declare class CashScriptError extends Error { | ||
@@ -9,2 +10,3 @@ node: Node; | ||
export declare class ParseError extends Error { | ||
constructor(message: string, location?: Point | Location); | ||
} | ||
@@ -34,6 +36,18 @@ export declare class UndefinedReferenceError extends CashScriptError { | ||
} | ||
export declare class EmptyContractError extends CashScriptError { | ||
node: ContractNode; | ||
constructor(node: ContractNode); | ||
} | ||
export declare class EmptyFunctionError extends CashScriptError { | ||
node: FunctionDefinitionNode; | ||
constructor(node: FunctionDefinitionNode); | ||
} | ||
export declare class FinalRequireStatementError extends CashScriptError { | ||
node: StatementNode; | ||
constructor(node: StatementNode); | ||
} | ||
export declare class TypeError extends CashScriptError { | ||
actual?: PrimitiveType | import("./ast/Type").ArrayType | import("./ast/Type").TupleType | import("./ast/Type").BytesType | Type[] | undefined; | ||
expected?: PrimitiveType | import("./ast/Type").ArrayType | import("./ast/Type").TupleType | import("./ast/Type").BytesType | Type[] | undefined; | ||
constructor(node: Node, actual?: PrimitiveType | import("./ast/Type").ArrayType | import("./ast/Type").TupleType | import("./ast/Type").BytesType | Type[] | undefined, expected?: PrimitiveType | import("./ast/Type").ArrayType | import("./ast/Type").TupleType | import("./ast/Type").BytesType | Type[] | undefined, message?: string); | ||
actual?: PrimitiveType | import("@cashscript/utils").ArrayType | import("@cashscript/utils").TupleType | import("@cashscript/utils").BytesType | Type[] | undefined; | ||
expected?: PrimitiveType | import("@cashscript/utils").ArrayType | import("@cashscript/utils").TupleType | import("@cashscript/utils").BytesType | Type[] | undefined; | ||
constructor(node: Node, actual?: PrimitiveType | import("@cashscript/utils").ArrayType | import("@cashscript/utils").TupleType | import("@cashscript/utils").BytesType | Type[] | undefined, expected?: PrimitiveType | import("@cashscript/utils").ArrayType | import("@cashscript/utils").TupleType | import("@cashscript/utils").BytesType | Type[] | undefined, message?: string); | ||
} | ||
@@ -40,0 +54,0 @@ export declare class InvalidParameterTypeError extends TypeError { |
@@ -0,3 +1,4 @@ | ||
import { PrimitiveType } from '@cashscript/utils'; | ||
import { BinaryOpNode, UnaryOpNode, TimeOpNode, AssignNode, TupleIndexOpNode, RequireNode, } from './ast/AST'; | ||
import { PrimitiveType } from './ast/Type'; | ||
import { Point } from './ast/Location'; | ||
export class CashScriptError extends Error { | ||
@@ -14,2 +15,10 @@ constructor(node, message) { | ||
export class ParseError extends Error { | ||
constructor(message, location) { | ||
const start = location instanceof Point ? location : location === null || location === void 0 ? void 0 : location.start; | ||
if (start) { | ||
message += ` at ${start}`; | ||
} | ||
super(message); | ||
this.name = this.constructor.name; | ||
} | ||
} | ||
@@ -50,5 +59,23 @@ export class UndefinedReferenceError extends CashScriptError { | ||
} | ||
export class EmptyContractError extends CashScriptError { | ||
constructor(node) { | ||
super(node, `Contract ${node.name} contains no functions`); | ||
this.node = node; | ||
} | ||
} | ||
export class EmptyFunctionError extends CashScriptError { | ||
constructor(node) { | ||
super(node, `Function ${node.name} contains no statements`); | ||
this.node = node; | ||
} | ||
} | ||
export class FinalRequireStatementError extends CashScriptError { | ||
constructor(node) { | ||
super(node, 'Final statement is expected to be a require() statement'); | ||
this.node = node; | ||
} | ||
} | ||
export class TypeError extends CashScriptError { | ||
constructor(node, actual, expected, message) { | ||
super(node, (message !== null && message !== void 0 ? message : `Found type '${actual}' where type '${expected}' was expected`)); | ||
super(node, message !== null && message !== void 0 ? message : `Found type '${actual}' where type '${expected}' was expected`); | ||
this.actual = actual; | ||
@@ -55,0 +82,0 @@ this.expected = expected; |
@@ -0,5 +1,5 @@ | ||
import { Script } from '@cashscript/utils'; | ||
import { ContractNode, ParameterNode, VariableDefinitionNode, FunctionDefinitionNode, AssignNode, IdentifierNode, BranchNode, CastNode, FunctionCallNode, UnaryOpNode, BinaryOpNode, BoolLiteralNode, IntLiteralNode, HexLiteralNode, StringLiteralNode, TimeOpNode, ArrayNode, TupleIndexOpNode, RequireNode, SourceFileNode, Node, InstantiationNode } from '../ast/AST'; | ||
import AstTraversal from '../ast/AstTraversal'; | ||
import { PreimageField } from '../ast/Globals'; | ||
import { Script } from './Script'; | ||
export default class GenerateTargetTraversal extends AstTraversal { | ||
@@ -22,2 +22,3 @@ output: Script; | ||
decodePreimage(fields: PreimageField[]): void; | ||
removeFinalVerify(): void; | ||
cleanStack(): void; | ||
@@ -24,0 +25,0 @@ visitParameter(node: ParameterNode): Node; |
import { hexToBin } from '@bitauth/libauth'; | ||
import { asmToScript, encodeBool, encodeInt, encodeString, Op, PrimitiveType, resultingType, scriptToAsm, } from '@cashscript/utils'; | ||
import { FunctionCallNode, HexLiteralNode, } from '../ast/AST'; | ||
import AstTraversal from '../ast/AstTraversal'; | ||
import { GlobalFunction, PreimageField, Class } from '../ast/Globals'; | ||
import { resultingType, PrimitiveType } from '../ast/Type'; | ||
import { Op, toOps, } from './Script'; | ||
import { Data } from '../util'; | ||
import { PreimageParts } from './preimage'; | ||
import { BinaryOperator } from '../ast/Operator'; | ||
import { compileBinaryOp, compileCast, compileGlobalFunction, compileTimeOp, compileUnaryOp, } from './utils'; | ||
export default class GenerateTargetTraversal extends AstTraversal { | ||
@@ -55,3 +54,3 @@ constructor() { | ||
// Minimally encode output by going Script -> ASM -> Script | ||
this.output = Data.asmToScript(Data.scriptToAsm(this.output)); | ||
this.output = asmToScript(scriptToAsm(this.output)); | ||
return node; | ||
@@ -69,3 +68,3 @@ } | ||
const selectorIndex = this.getStackIndex('$$'); | ||
this.emit(Data.encodeInt(selectorIndex)); | ||
this.emit(encodeInt(selectorIndex)); | ||
if (i === node.functions.length - 1) { | ||
@@ -80,3 +79,3 @@ this.emit(Op.OP_ROLL); | ||
// enforced with NUMEQUALVERIFY | ||
this.emit(Data.encodeInt(i)); | ||
this.emit(encodeInt(i)); | ||
this.emit(Op.OP_NUMEQUAL); | ||
@@ -110,13 +109,3 @@ if (i < node.functions.length - 1) { | ||
node.body = this.visit(node.body); | ||
// Remove final OP_VERIFY | ||
// If the final opcodes are OP_CHECK{LOCKTIME|SEQUENCE}VERIFY OP_DROP | ||
// Or if the final opcode is OP_ENDIF | ||
// Or if the remaining stack size >=5 (2DROP 2DROP 1 < NIP NIP NIP NIP) | ||
// then push it back to the script, and push OP_TRUE (OP_1) to the stack | ||
const finalOp = this.output.pop(); | ||
this.pushToStack('(value)'); | ||
if (finalOp === Op.OP_DROP || finalOp === Op.OP_ENDIF || (finalOp && this.stack.length >= 5)) { | ||
this.emit(finalOp); | ||
this.emit(Op.OP_1); | ||
} | ||
this.removeFinalVerify(); | ||
this.cleanStack(); | ||
@@ -128,3 +117,3 @@ return node; | ||
this.pushToStack('$preimage', true); | ||
this.emit(Data.encodeInt(this.getStackIndex('$preimage'))); | ||
this.emit(encodeInt(this.getStackIndex('$preimage'))); | ||
this.emit(Op.OP_PICK); | ||
@@ -144,7 +133,7 @@ const cuts = { | ||
if (start !== 0) { | ||
this.emit(Data.encodeInt(start)); | ||
this.emit(encodeInt(start)); | ||
this.emit(Op.OP_SPLIT); | ||
this.emit(Op.OP_NIP); | ||
} | ||
this.emit(Data.encodeInt(part.size)); | ||
this.emit(encodeInt(part.size)); | ||
this.emit(Op.OP_SPLIT); | ||
@@ -161,7 +150,7 @@ this.pushToStack(field); | ||
this.emit(Op.OP_NOP); | ||
this.emit(Data.encodeInt(start)); | ||
this.emit(encodeInt(start)); | ||
this.emit(Op.OP_SPLIT); | ||
this.emit(Op.OP_NIP); | ||
this.emit(Op.OP_SIZE); | ||
this.emit(Data.encodeInt(part.size)); | ||
this.emit(encodeInt(part.size)); | ||
this.emit(Op.OP_SUB); | ||
@@ -185,3 +174,3 @@ this.emit(Op.OP_SPLIT); | ||
this.emit(Op.OP_SIZE); | ||
this.emit(Data.encodeInt(end)); | ||
this.emit(encodeInt(end)); | ||
this.emit(Op.OP_SUB); | ||
@@ -192,3 +181,3 @@ this.emit(Op.OP_SPLIT); | ||
else if (start !== 0) { | ||
this.emit(Data.encodeInt(start)); | ||
this.emit(encodeInt(start)); | ||
this.emit(Op.OP_SPLIT); | ||
@@ -200,3 +189,3 @@ this.emit(Op.OP_NIP); | ||
return; | ||
this.emit(Data.encodeInt(part.size)); | ||
this.emit(encodeInt(part.size)); | ||
this.emit(Op.OP_SPLIT); | ||
@@ -211,2 +200,24 @@ cuts.fromStart = part.fromStart + part.size; | ||
} | ||
removeFinalVerify() { | ||
// After EnsureFinalRequireTraversal, we know that the final opcodes are either | ||
// "OP_VERIFY", "OP_CHECK{LOCKTIME|SEQUENCE}VERIFY OP_DROP" or "OP_ENDIF" | ||
const finalOp = this.output.pop(); | ||
// If the final op is OP_VERIFY and the stack size is less than 4 we remove it from the script | ||
// - We have the stack size check because it is more efficient to use 2DROP rather than NIP | ||
// if >= 4 elements are left (5 including final value) (e.g. 2DROP 2DROP 1 < NIP NIP NIP NIP) | ||
if (finalOp === Op.OP_VERIFY && this.stack.length < 4) { | ||
// Since the final value is no longer popped from the stack by OP_VERIFY, | ||
// we add it back to the stack | ||
this.pushToStack('(value)'); | ||
} | ||
else { | ||
this.emit(finalOp); | ||
// At this point there is no verification value left on the stack: | ||
// - scoped stack is cleared inside branch ended by OP_ENDIF | ||
// - OP_CHECK{LOCKTIME|SEQUENCE}VERIFY OP_DROP does not leave a verification value | ||
// so we add OP_1 to the script (indicating success) | ||
this.emit(Op.OP_1); | ||
this.pushToStack('(value)'); | ||
} | ||
} | ||
cleanStack() { | ||
@@ -245,3 +256,3 @@ // Keep final verification value, OP_NIP the other stack values | ||
emitReplace(index) { | ||
this.emit(Data.encodeInt(index)); | ||
this.emit(encodeInt(index)); | ||
this.emit(Op.OP_ROLL); | ||
@@ -261,3 +272,3 @@ this.emit(Op.OP_DROP); | ||
node.expression = this.visit(node.expression); | ||
this.emit(toOps.fromTimeOp(node.timeOp)); | ||
this.emit(compileTimeOp(node.timeOp)); | ||
this.popFromStack(); | ||
@@ -315,3 +326,3 @@ return node; | ||
} | ||
this.emit(toOps.fromCast(node.expression.type, node.type)); | ||
this.emit(compileCast(node.expression.type, node.type)); | ||
this.popFromStack(); | ||
@@ -328,3 +339,3 @@ this.pushToStack('(value)'); | ||
this.verifyCovenant(); | ||
this.emit(toOps.fromFunction(node.identifier.name)); | ||
this.emit(compileGlobalFunction(node.identifier.name)); | ||
this.popFromStack(node.parameters.length); | ||
@@ -335,3 +346,3 @@ this.pushToStack('(value)'); | ||
visitMultiSig(node) { | ||
this.emit(Data.encodeBool(false)); | ||
this.emit(encodeBool(false)); | ||
node.parameters = this.visitList(node.parameters); | ||
@@ -366,3 +377,3 @@ this.emit(Op.OP_CHECKMULTISIG); | ||
this.removeFromStack(preimageIndex); | ||
this.emit(Data.encodeInt(preimageIndex)); | ||
this.emit(encodeInt(preimageIndex)); | ||
this.emit(Op.OP_ROLL); | ||
@@ -431,3 +442,3 @@ this.emit(Op.OP_SHA256); | ||
this.emit(Op.OP_DUP); | ||
this.emit(Data.encodeInt(75)); | ||
this.emit(encodeInt(75)); | ||
this.emit(Op.OP_GREATERTHAN); | ||
@@ -474,3 +485,4 @@ this.emit(Op.OP_IF); | ||
node.right = this.visit(node.right); | ||
this.emit(toOps.fromBinaryOp(node.operator, resultingType(node.left.type, node.right.type) === PrimitiveType.INT)); | ||
const isNumeric = resultingType(node.left.type, node.right.type) === PrimitiveType.INT; | ||
this.emit(compileBinaryOp(node.operator, isNumeric)); | ||
this.popFromStack(2); | ||
@@ -484,3 +496,3 @@ this.pushToStack('(value)'); | ||
node.expression = this.visit(node.expression); | ||
this.emit(toOps.fromUnaryOp(node.operator)); | ||
this.emit(compileUnaryOp(node.operator)); | ||
this.popFromStack(); | ||
@@ -492,3 +504,3 @@ this.pushToStack('(value)'); | ||
node.elements = this.visitList(node.elements); | ||
this.emit(Data.encodeInt(node.elements.length)); | ||
this.emit(encodeInt(node.elements.length)); | ||
this.pushToStack('(value)'); | ||
@@ -499,3 +511,3 @@ return node; | ||
const stackIndex = this.getStackIndex(node.name); | ||
this.emit(Data.encodeInt(stackIndex)); | ||
this.emit(encodeInt(stackIndex)); | ||
// If the final use is inside an if-statement, we still OP_PICK it | ||
@@ -517,3 +529,3 @@ // We do this so that there's no difference in stack depths between execution paths | ||
visitBoolLiteral(node) { | ||
this.emit(Data.encodeBool(node.value)); | ||
this.emit(encodeBool(node.value)); | ||
this.pushToStack('(value)'); | ||
@@ -523,3 +535,3 @@ return node; | ||
visitIntLiteral(node) { | ||
this.emit(Data.encodeInt(node.value)); | ||
this.emit(encodeInt(node.value)); | ||
this.pushToStack('(value)'); | ||
@@ -529,3 +541,3 @@ return node; | ||
visitStringLiteral(node) { | ||
this.emit(Data.encodeString(node.value)); | ||
this.emit(encodeString(node.value)); | ||
this.pushToStack('(value)'); | ||
@@ -532,0 +544,0 @@ return node; |
@@ -56,9 +56,10 @@ import { ATN } from "antlr4ts/atn/ATN"; | ||
static readonly StringLiteral = 50; | ||
static readonly HexLiteral = 51; | ||
static readonly TxVar = 52; | ||
static readonly PreimageField = 53; | ||
static readonly Identifier = 54; | ||
static readonly WHITESPACE = 55; | ||
static readonly COMMENT = 56; | ||
static readonly LINE_COMMENT = 57; | ||
static readonly DateLiteral = 51; | ||
static readonly HexLiteral = 52; | ||
static readonly TxVar = 53; | ||
static readonly PreimageField = 54; | ||
static readonly Identifier = 55; | ||
static readonly WHITESPACE = 56; | ||
static readonly COMMENT = 57; | ||
static readonly LINE_COMMENT = 58; | ||
static readonly channelNames: string[]; | ||
@@ -65,0 +66,0 @@ static readonly modeNames: string[]; |
@@ -1,2 +0,2 @@ | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.7.3-SNAPSHOT | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.9.0-SNAPSHOT | ||
import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; | ||
@@ -85,9 +85,10 @@ import { Lexer } from "antlr4ts/Lexer"; | ||
CashScriptLexer.StringLiteral = 50; | ||
CashScriptLexer.HexLiteral = 51; | ||
CashScriptLexer.TxVar = 52; | ||
CashScriptLexer.PreimageField = 53; | ||
CashScriptLexer.Identifier = 54; | ||
CashScriptLexer.WHITESPACE = 55; | ||
CashScriptLexer.COMMENT = 56; | ||
CashScriptLexer.LINE_COMMENT = 57; | ||
CashScriptLexer.DateLiteral = 51; | ||
CashScriptLexer.HexLiteral = 52; | ||
CashScriptLexer.TxVar = 53; | ||
CashScriptLexer.PreimageField = 54; | ||
CashScriptLexer.Identifier = 55; | ||
CashScriptLexer.WHITESPACE = 56; | ||
CashScriptLexer.COMMENT = 57; | ||
CashScriptLexer.LINE_COMMENT = 58; | ||
// tslint:disable:no-trailing-whitespace | ||
@@ -108,4 +109,4 @@ CashScriptLexer.channelNames = [ | ||
"T__41", "T__42", "VersionLiteral", "BooleanLiteral", "NumberUnit", "NumberLiteral", | ||
"Bytes", "Bound", "StringLiteral", "HexLiteral", "TxVar", "PreimageField", | ||
"Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", | ||
"Bytes", "Bound", "StringLiteral", "DateLiteral", "HexLiteral", "TxVar", | ||
"PreimageField", "Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", | ||
]; | ||
@@ -128,8 +129,8 @@ CashScriptLexer._LITERAL_NAMES = [ | ||
undefined, undefined, "VersionLiteral", "BooleanLiteral", "NumberUnit", | ||
"NumberLiteral", "Bytes", "Bound", "StringLiteral", "HexLiteral", "TxVar", | ||
"PreimageField", "Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", | ||
"NumberLiteral", "Bytes", "Bound", "StringLiteral", "DateLiteral", "HexLiteral", | ||
"TxVar", "PreimageField", "Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", | ||
]; | ||
CashScriptLexer.VOCABULARY = new VocabularyImpl(CashScriptLexer._LITERAL_NAMES, CashScriptLexer._SYMBOLIC_NAMES, []); | ||
CashScriptLexer._serializedATNSegments = 2; | ||
CashScriptLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02;\u0271\b\x01" + | ||
CashScriptLexer._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02<\u027C\b\x01" + | ||
"\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" + | ||
@@ -143,284 +144,288 @@ "\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" + | ||
"+\t+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" + | ||
"4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x03\x02\x03\x02\x03" + | ||
"\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03\x04\x03" + | ||
"4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x03\x02\x03" + | ||
"\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03" + | ||
"\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03" + | ||
"\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\b\x03\b\x03\t" + | ||
"\x03\t\x03\n\x03\n\x03\n\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03" + | ||
"\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F" + | ||
"\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x11" + | ||
"\x03\x11\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13" + | ||
"\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03\x15" + | ||
"\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x17\x03\x17\x03\x18\x03\x18" + | ||
"\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19" + | ||
"\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A" + | ||
"\x03\x1A\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D" + | ||
"\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03 \x03 \x03" + | ||
"!\x03!\x03!\x03\"\x03\"\x03\"\x03#\x03#\x03$\x03$\x03%\x03%\x03%\x03&" + | ||
"\x03&\x03&\x03\'\x03\'\x03\'\x03\'\x03(\x03(\x03(\x03(\x03(\x03)\x03)" + | ||
"\x03)\x03)\x03)\x03)\x03)\x03*\x03*\x03*\x03*\x03*\x03*\x03*\x03+\x03" + | ||
"+\x03+\x03+\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03-\x06-\u0126\n" + | ||
"-\r-\x0E-\u0127\x03-\x03-\x06-\u012C\n-\r-\x0E-\u012D\x03-\x03-\x06-\u0132" + | ||
"\n-\r-\x0E-\u0133\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x05.\u013F" + | ||
"\n.\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"\x04\x03\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\b\x03" + | ||
"\b\x03\t\x03\t\x03\n\x03\n\x03\n\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03" + | ||
"\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0F\x03\x0F" + | ||
"\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10" + | ||
"\x03\x11\x03\x11\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13" + | ||
"\x03\x13\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15" + | ||
"\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x17\x03\x17\x03\x18" + | ||
"\x03\x18\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19" + | ||
"\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A" + | ||
"\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1D" + | ||
"\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03 " + | ||
"\x03 \x03!\x03!\x03!\x03\"\x03\"\x03\"\x03#\x03#\x03$\x03$\x03%\x03%\x03" + | ||
"%\x03&\x03&\x03&\x03\'\x03\'\x03\'\x03\'\x03(\x03(\x03(\x03(\x03(\x03" + | ||
")\x03)\x03)\x03)\x03)\x03)\x03)\x03*\x03*\x03*\x03*\x03*\x03*\x03*\x03" + | ||
"+\x03+\x03+\x03+\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03-\x06-\u0128" + | ||
"\n-\r-\x0E-\u0129\x03-\x03-\x06-\u012E\n-\r-\x0E-\u012F\x03-\x03-\x06" + | ||
"-\u0134\n-\r-\x0E-\u0135\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x03.\x03." + | ||
"\x05.\u0141\n.\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/" + | ||
"\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03/\x03" + | ||
"/\x03/\x05/\u017A\n/\x030\x050\u017D\n0\x030\x060\u0180\n0\r0\x0E0\u0181" + | ||
"\x030\x030\x060\u0186\n0\r0\x0E0\u0187\x050\u018A\n0\x031\x031\x031\x03" + | ||
"1\x031\x031\x031\x051\u0193\n1\x032\x032\x072\u0197\n2\f2\x0E2\u019A\v" + | ||
"2\x033\x033\x033\x033\x073\u01A0\n3\f3\x0E3\u01A3\v3\x033\x033\x033\x03" + | ||
"3\x033\x073\u01AA\n3\f3\x0E3\u01AD\v3\x033\x053\u01B0\n3\x034\x034\x03" + | ||
"4\x074\u01B5\n4\f4\x0E4\u01B8\v4\x035\x035\x035\x035\x035\x035\x035\x03" + | ||
"5\x035\x035\x035\x035\x035\x055\u01C7\n5\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x056\u0249\n6\x03" + | ||
"7\x037\x077\u024D\n7\f7\x0E7\u0250\v7\x038\x068\u0253\n8\r8\x0E8\u0254" + | ||
"\x038\x038\x039\x039\x039\x039\x079\u025D\n9\f9\x0E9\u0260\v9\x039\x03" + | ||
"9\x039\x039\x039\x03:\x03:\x03:\x03:\x07:\u026B\n:\f:\x0E:\u026E\v:\x03" + | ||
":\x03:\x05\u01A1\u01AB\u025E\x02\x02;\x03\x02\x03\x05\x02\x04\x07\x02" + | ||
"\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02" + | ||
"\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12" + | ||
"#\x02\x13%\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191\x02" + | ||
"\x1A3\x02\x1B5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02\"C" + | ||
"\x02#E\x02$G\x02%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-Y\x02" + | ||
".[\x02/]\x020_\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x029q\x02" + | ||
":s\x02;\x03\x02\x0E\x03\x022;\x03\x02//\x04\x02GGgg\x03\x023;\x05\x02" + | ||
"\f\f\x0F\x0F$$\x05\x02\f\f\x0F\x0F))\x04\x02ZZzz\x05\x022;CHch\x04\x02" + | ||
"C\\c|\x06\x022;C\\aac|\x05\x02\v\f\x0E\x0F\"\"\x04\x02\f\f\x0F\x0F\x02" + | ||
"\u0298\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02" + | ||
"\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02\x02" + | ||
"\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02" + | ||
"\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02" + | ||
"\x02\x02\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02" + | ||
"\x02\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02" + | ||
"\'\x03\x02\x02\x02\x02)\x03\x02\x02\x02\x02+\x03\x02\x02\x02\x02-\x03" + | ||
"\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02\x02\x023\x03\x02\x02" + | ||
"\x02\x025\x03\x02\x02\x02\x027\x03\x02\x02\x02\x029\x03\x02\x02\x02\x02" + | ||
";\x03\x02\x02\x02\x02=\x03\x02\x02\x02\x02?\x03\x02\x02\x02\x02A\x03\x02" + | ||
"\x02\x02\x02C\x03\x02\x02\x02\x02E\x03\x02\x02\x02\x02G\x03\x02\x02\x02" + | ||
"\x02I\x03\x02\x02\x02\x02K\x03\x02\x02\x02\x02M\x03\x02\x02\x02\x02O\x03" + | ||
"\x02\x02\x02\x02Q\x03\x02\x02\x02\x02S\x03\x02\x02\x02\x02U\x03\x02\x02" + | ||
"\x02\x02W\x03\x02\x02\x02\x02Y\x03\x02\x02\x02\x02[\x03\x02\x02\x02\x02" + | ||
"]\x03\x02\x02\x02\x02_\x03\x02\x02\x02\x02a\x03\x02\x02\x02\x02c\x03\x02" + | ||
"\x02\x02\x02e\x03\x02\x02\x02\x02g\x03\x02\x02\x02\x02i\x03\x02\x02\x02" + | ||
"\x02k\x03\x02\x02\x02\x02m\x03\x02\x02\x02\x02o\x03\x02\x02\x02\x02q\x03" + | ||
"\x02\x02\x02\x02s\x03\x02\x02\x02\x03u\x03\x02\x02\x02\x05|\x03\x02\x02" + | ||
"\x02\x07~\x03\x02\x02\x02\t\x89\x03\x02\x02\x02\v\x8B\x03\x02\x02\x02" + | ||
"\r\x8D\x03\x02\x02\x02\x0F\x90\x03\x02\x02\x02\x11\x92\x03\x02\x02\x02" + | ||
"\x13\x94\x03\x02\x02\x02\x15\x97\x03\x02\x02\x02\x17\x99\x03\x02\x02\x02" + | ||
"\x19\xA2\x03\x02\x02\x02\x1B\xA4\x03\x02\x02\x02\x1D\xA6\x03\x02\x02\x02" + | ||
"\x1F\xAF\x03\x02\x02\x02!\xB1\x03\x02\x02\x02#\xB3\x03\x02\x02\x02%\xB5" + | ||
"\x03\x02\x02\x02\'\xBD\x03\x02\x02\x02)\xC0\x03\x02\x02\x02+\xC5\x03\x02" + | ||
"\x02\x02-\xC9\x03\x02\x02\x02/\xCB\x03\x02\x02\x021\xCD\x03\x02\x02\x02" + | ||
"3\xD8\x03\x02\x02\x025\xE0\x03\x02\x02\x027\xE2\x03\x02\x02\x029\xE4\x03" + | ||
"\x02\x02\x02;\xEB\x03\x02\x02\x02=\xED\x03\x02\x02\x02?\xEF\x03\x02\x02" + | ||
"\x02A\xF1\x03\x02\x02\x02C\xF4\x03\x02\x02\x02E\xF7\x03\x02\x02\x02G\xF9" + | ||
"\x03\x02\x02\x02I\xFB\x03\x02\x02\x02K\xFE\x03\x02\x02\x02M\u0101\x03" + | ||
"\x02\x02\x02O\u0105\x03\x02\x02\x02Q\u010A\x03\x02\x02\x02S\u0111\x03" + | ||
"\x02\x02\x02U\u0118\x03\x02\x02\x02W\u011C\x03\x02\x02\x02Y\u0125\x03" + | ||
"\x02\x02\x02[\u013E\x03\x02\x02\x02]\u0179\x03\x02\x02\x02_\u017C\x03" + | ||
"\x02\x02\x02a\u018B\x03\x02\x02\x02c\u0194\x03\x02\x02\x02e\u01AF\x03" + | ||
"\x02\x02\x02g\u01B1\x03\x02\x02\x02i\u01C6\x03\x02\x02\x02k\u0248\x03" + | ||
"\x02\x02\x02m\u024A\x03\x02\x02\x02o\u0252\x03\x02\x02\x02q\u0258\x03" + | ||
"\x02\x02\x02s\u0266\x03\x02\x02\x02uv\x07r\x02\x02vw\x07t\x02\x02wx\x07" + | ||
"c\x02\x02xy\x07i\x02\x02yz\x07o\x02\x02z{\x07c\x02\x02{\x04\x03\x02\x02" + | ||
"\x02|}\x07=\x02\x02}\x06\x03\x02\x02\x02~\x7F\x07e\x02\x02\x7F\x80\x07" + | ||
"c\x02\x02\x80\x81\x07u\x02\x02\x81\x82\x07j\x02\x02\x82\x83\x07u\x02\x02" + | ||
"\x83\x84\x07e\x02\x02\x84\x85\x07t\x02\x02\x85\x86\x07k\x02\x02\x86\x87" + | ||
"\x07r\x02\x02\x87\x88\x07v\x02\x02\x88\b\x03\x02\x02\x02\x89\x8A\x07`" + | ||
"\x02\x02\x8A\n\x03\x02\x02\x02\x8B\x8C\x07\x80\x02\x02\x8C\f\x03\x02\x02" + | ||
"\x02\x8D\x8E\x07@\x02\x02\x8E\x8F\x07?\x02\x02\x8F\x0E\x03\x02\x02\x02" + | ||
"\x90\x91\x07@\x02\x02\x91\x10\x03\x02\x02\x02\x92\x93\x07>\x02\x02\x93" + | ||
"\x12\x03\x02\x02\x02\x94\x95\x07>\x02\x02\x95\x96\x07?\x02\x02\x96\x14" + | ||
"\x03\x02\x02\x02\x97\x98\x07?\x02\x02\x98\x16\x03\x02\x02\x02\x99\x9A" + | ||
"\x07e\x02\x02\x9A\x9B\x07q\x02\x02\x9B\x9C\x07p\x02\x02\x9C\x9D\x07v\x02" + | ||
"\x02\x9D\x9E\x07t\x02\x02\x9E\x9F\x07c\x02\x02\x9F\xA0\x07e\x02\x02\xA0" + | ||
"\xA1\x07v\x02\x02\xA1\x18\x03\x02\x02\x02\xA2\xA3\x07}\x02\x02\xA3\x1A" + | ||
"\x03\x02\x02\x02\xA4\xA5\x07\x7F\x02\x02\xA5\x1C\x03\x02\x02\x02\xA6\xA7" + | ||
"\x07h\x02\x02\xA7\xA8\x07w\x02\x02\xA8\xA9\x07p\x02\x02\xA9\xAA\x07e\x02" + | ||
"\x02\xAA\xAB\x07v\x02\x02\xAB\xAC\x07k\x02\x02\xAC\xAD\x07q\x02\x02\xAD" + | ||
"\xAE\x07p\x02\x02\xAE\x1E\x03\x02\x02\x02\xAF\xB0\x07*\x02\x02\xB0 \x03" + | ||
"\x02\x02\x02\xB1\xB2\x07.\x02\x02\xB2\"\x03\x02\x02\x02\xB3\xB4\x07+\x02" + | ||
"\x02\xB4$\x03\x02\x02\x02\xB5\xB6\x07t\x02\x02\xB6\xB7\x07g\x02\x02\xB7" + | ||
"\xB8\x07s\x02\x02\xB8\xB9\x07w\x02\x02\xB9\xBA\x07k\x02\x02\xBA\xBB\x07" + | ||
"t\x02\x02\xBB\xBC\x07g\x02\x02\xBC&\x03\x02\x02\x02\xBD\xBE\x07k\x02\x02" + | ||
"\xBE\xBF\x07h\x02\x02\xBF(\x03\x02\x02\x02\xC0\xC1\x07g\x02\x02\xC1\xC2" + | ||
"\x07n\x02\x02\xC2\xC3\x07u\x02\x02\xC3\xC4\x07g\x02\x02\xC4*\x03\x02\x02" + | ||
"\x02\xC5\xC6\x07p\x02\x02\xC6\xC7\x07g\x02\x02\xC7\xC8\x07y\x02\x02\xC8" + | ||
",\x03\x02\x02\x02\xC9\xCA\x07]\x02\x02\xCA.\x03\x02\x02\x02\xCB\xCC\x07" + | ||
"_\x02\x02\xCC0\x03\x02\x02\x02\xCD\xCE\x070\x02\x02\xCE\xCF\x07t\x02\x02" + | ||
"\xCF\xD0\x07g\x02\x02\xD0\xD1\x07x\x02\x02\xD1\xD2\x07g\x02\x02\xD2\xD3" + | ||
"\x07t\x02\x02\xD3\xD4\x07u\x02\x02\xD4\xD5\x07g\x02\x02\xD5\xD6\x07*\x02" + | ||
"\x02\xD6\xD7\x07+\x02\x02\xD72\x03\x02\x02\x02\xD8\xD9\x070\x02\x02\xD9" + | ||
"\xDA\x07n\x02\x02\xDA\xDB\x07g\x02\x02\xDB\xDC\x07p\x02\x02\xDC\xDD\x07" + | ||
"i\x02\x02\xDD\xDE\x07v\x02\x02\xDE\xDF\x07j\x02\x02\xDF4\x03\x02\x02\x02" + | ||
"\xE0\xE1\x07#\x02\x02\xE16\x03\x02\x02\x02\xE2\xE3\x07/\x02\x02\xE38\x03" + | ||
"\x02\x02\x02\xE4\xE5\x070\x02\x02\xE5\xE6\x07u\x02\x02\xE6\xE7\x07r\x02" + | ||
"\x02\xE7\xE8\x07n\x02\x02\xE8\xE9\x07k\x02\x02\xE9\xEA\x07v\x02\x02\xEA" + | ||
":\x03\x02\x02\x02\xEB\xEC\x071\x02\x02\xEC<\x03\x02\x02\x02\xED\xEE\x07" + | ||
"\'\x02\x02\xEE>\x03\x02\x02\x02\xEF\xF0\x07-\x02\x02\xF0@\x03\x02\x02" + | ||
"\x02\xF1\xF2\x07?\x02\x02\xF2\xF3\x07?\x02\x02\xF3B\x03\x02\x02\x02\xF4" + | ||
"\xF5\x07#\x02\x02\xF5\xF6\x07?\x02\x02\xF6D\x03\x02\x02\x02\xF7\xF8\x07" + | ||
"(\x02\x02\xF8F\x03\x02\x02\x02\xF9\xFA\x07~\x02\x02\xFAH\x03\x02\x02\x02" + | ||
"\xFB\xFC\x07(\x02\x02\xFC\xFD\x07(\x02\x02\xFDJ\x03\x02\x02\x02\xFE\xFF" + | ||
"\x07~\x02\x02\xFF\u0100\x07~\x02\x02\u0100L\x03\x02\x02\x02\u0101\u0102" + | ||
"\x07k\x02\x02\u0102\u0103\x07p\x02\x02\u0103\u0104\x07v\x02\x02\u0104" + | ||
"N\x03\x02\x02\x02\u0105\u0106\x07d\x02\x02\u0106\u0107\x07q\x02\x02\u0107" + | ||
"\u0108\x07q\x02\x02\u0108\u0109\x07n\x02\x02\u0109P\x03\x02\x02\x02\u010A" + | ||
"\u010B\x07u\x02\x02\u010B\u010C\x07v\x02\x02\u010C\u010D\x07t\x02\x02" + | ||
"\u010D\u010E\x07k\x02\x02\u010E\u010F\x07p\x02\x02\u010F\u0110\x07i\x02" + | ||
"\x02\u0110R\x03\x02\x02\x02\u0111\u0112\x07r\x02\x02\u0112\u0113\x07w" + | ||
"\x02\x02\u0113\u0114\x07d\x02\x02\u0114\u0115\x07m\x02\x02\u0115\u0116" + | ||
"\x07g\x02\x02\u0116\u0117\x07{\x02\x02\u0117T\x03\x02\x02\x02\u0118\u0119" + | ||
"\x07u\x02\x02\u0119\u011A\x07k\x02\x02\u011A\u011B\x07i\x02\x02\u011B" + | ||
"V\x03\x02\x02\x02\u011C\u011D\x07f\x02\x02\u011D\u011E\x07c\x02\x02\u011E" + | ||
"\u011F\x07v\x02\x02\u011F\u0120\x07c\x02\x02\u0120\u0121\x07u\x02\x02" + | ||
"\u0121\u0122\x07k\x02\x02\u0122\u0123\x07i\x02\x02\u0123X\x03\x02\x02" + | ||
"\x02\u0124\u0126\t\x02\x02\x02\u0125\u0124\x03\x02\x02\x02\u0126\u0127" + | ||
"\x03\x02\x02\x02\u0127\u0125\x03\x02\x02\x02\u0127\u0128\x03\x02\x02\x02" + | ||
"\u0128\u0129\x03\x02\x02\x02\u0129\u012B\x070\x02\x02\u012A\u012C\t\x02" + | ||
"\x02\x02\u012B\u012A\x03\x02\x02\x02\u012C\u012D\x03\x02\x02\x02\u012D" + | ||
"\u012B\x03\x02\x02\x02\u012D\u012E\x03\x02\x02\x02\u012E\u012F\x03\x02" + | ||
"\x02\x02\u012F\u0131\x070\x02\x02\u0130\u0132\t\x02\x02\x02\u0131\u0130" + | ||
"\x03\x02\x02\x02\u0132\u0133\x03\x02\x02\x02\u0133\u0131\x03\x02\x02\x02" + | ||
"\u0133\u0134\x03\x02\x02\x02\u0134Z\x03\x02\x02\x02\u0135\u0136\x07v\x02" + | ||
"\x02\u0136\u0137\x07t\x02\x02\u0137\u0138\x07w\x02\x02\u0138\u013F\x07" + | ||
"g\x02\x02\u0139\u013A\x07h\x02\x02\u013A\u013B\x07c\x02\x02\u013B\u013C" + | ||
"\x07n\x02\x02\u013C\u013D\x07u\x02\x02\u013D\u013F\x07g\x02\x02\u013E" + | ||
"\u0135\x03\x02\x02\x02\u013E\u0139\x03\x02\x02\x02\u013F\\\x03\x02\x02" + | ||
"\x02\u0140\u0141\x07u\x02\x02\u0141\u0142\x07c\x02\x02\u0142\u0143\x07" + | ||
"v\x02\x02\u0143\u0144\x07q\x02\x02\u0144\u0145\x07u\x02\x02\u0145\u0146" + | ||
"\x07j\x02\x02\u0146\u0147\x07k\x02\x02\u0147\u017A\x07u\x02\x02\u0148" + | ||
"\u0149\x07u\x02\x02\u0149\u014A\x07c\x02\x02\u014A\u014B\x07v\x02\x02" + | ||
"\u014B\u017A\x07u\x02\x02\u014C\u014D\x07h\x02\x02\u014D\u014E\x07k\x02" + | ||
"\x02\u014E\u014F\x07p\x02\x02\u014F\u0150\x07p\x02\x02\u0150\u0151\x07" + | ||
"g\x02\x02\u0151\u017A\x07{\x02\x02\u0152\u0153\x07d\x02\x02\u0153\u0154" + | ||
"\x07k\x02\x02\u0154\u0155\x07v\x02\x02\u0155\u017A\x07u\x02\x02\u0156" + | ||
"\u0157\x07d\x02\x02\u0157\u0158\x07k\x02\x02\u0158\u0159\x07v\x02\x02" + | ||
"\u0159\u015A\x07e\x02\x02\u015A\u015B\x07q\x02\x02\u015B\u015C\x07k\x02" + | ||
"\x02\u015C\u017A\x07p\x02\x02\u015D\u015E\x07u\x02\x02\u015E\u015F\x07" + | ||
"g\x02\x02\u015F\u0160\x07e\x02\x02\u0160\u0161\x07q\x02\x02\u0161\u0162" + | ||
"\x07p\x02\x02\u0162\u0163\x07f\x02\x02\u0163\u017A\x07u\x02\x02\u0164" + | ||
"\u0165\x07o\x02\x02\u0165\u0166\x07k\x02\x02\u0166\u0167\x07p\x02\x02" + | ||
"\u0167\u0168\x07w\x02\x02\u0168\u0169\x07v\x02\x02\u0169\u016A\x07g\x02" + | ||
"\x02\u016A\u017A\x07u\x02\x02\u016B\u016C\x07j\x02\x02\u016C\u016D\x07" + | ||
"q\x02\x02\u016D\u016E\x07w\x02\x02\u016E\u016F\x07t\x02\x02\u016F\u017A" + | ||
"\x07u\x02\x02\u0170\u0171\x07f\x02\x02\u0171\u0172\x07c\x02\x02\u0172" + | ||
"\u0173\x07{\x02\x02\u0173\u017A\x07u\x02\x02\u0174\u0175\x07y\x02\x02" + | ||
"\u0175\u0176\x07g\x02\x02\u0176\u0177\x07g\x02\x02\u0177\u0178\x07m\x02" + | ||
"\x02\u0178\u017A\x07u\x02\x02\u0179\u0140\x03\x02\x02\x02\u0179\u0148" + | ||
"\x03\x02\x02\x02\u0179\u014C\x03\x02\x02\x02\u0179\u0152\x03\x02\x02\x02" + | ||
"\u0179\u0156\x03\x02\x02\x02\u0179\u015D\x03\x02\x02\x02\u0179\u0164\x03" + | ||
"\x02\x02\x02\u0179\u016B\x03\x02\x02\x02\u0179\u0170\x03\x02\x02\x02\u0179" + | ||
"\u0174\x03\x02\x02\x02\u017A^\x03\x02\x02\x02\u017B\u017D\t\x03\x02\x02" + | ||
"\u017C\u017B\x03\x02\x02\x02\u017C\u017D\x03\x02\x02\x02\u017D\u017F\x03" + | ||
"\x02\x02\x02\u017E\u0180\t\x02\x02\x02\u017F\u017E\x03\x02\x02\x02\u0180" + | ||
"\u0181\x03\x02\x02\x02\u0181\u017F\x03\x02\x02\x02\u0181\u0182\x03\x02" + | ||
"\x02\x02\u0182\u0189\x03\x02\x02\x02\u0183\u0185\t\x04\x02\x02\u0184\u0186" + | ||
"\t\x02\x02\x02\u0185\u0184\x03\x02\x02\x02\u0186\u0187\x03\x02\x02\x02" + | ||
"\u0187\u0185\x03\x02\x02\x02\u0187\u0188\x03\x02\x02\x02\u0188\u018A\x03" + | ||
"\x02\x02\x02\u0189\u0183\x03\x02\x02\x02\u0189\u018A\x03\x02\x02\x02\u018A" + | ||
"`\x03\x02\x02\x02\u018B\u018C\x07d\x02\x02\u018C\u018D\x07{\x02\x02\u018D" + | ||
"\u018E\x07v\x02\x02\u018E\u018F\x07g\x02\x02\u018F\u0190\x07u\x02\x02" + | ||
"\u0190\u0192\x03\x02\x02\x02\u0191\u0193\x05c2\x02\u0192\u0191\x03\x02" + | ||
"\x02\x02\u0192\u0193\x03\x02\x02\x02\u0193b\x03\x02\x02\x02\u0194\u0198" + | ||
"\t\x05\x02\x02\u0195\u0197\t\x02\x02\x02\u0196\u0195\x03\x02\x02\x02\u0197" + | ||
"\u019A\x03\x02\x02\x02\u0198\u0196\x03\x02\x02\x02\u0198\u0199\x03\x02" + | ||
"\x02\x02\u0199d\x03\x02\x02\x02\u019A\u0198\x03\x02\x02\x02\u019B\u01A1" + | ||
"\x07$\x02\x02\u019C\u019D\x07^\x02\x02\u019D\u01A0\x07$\x02\x02\u019E" + | ||
"\u01A0\n\x06\x02\x02\u019F\u019C\x03\x02\x02\x02\u019F\u019E\x03\x02\x02" + | ||
"\x02\u01A0\u01A3\x03\x02\x02\x02\u01A1\u01A2\x03\x02\x02\x02\u01A1\u019F" + | ||
"\x03\x02\x02\x02\u01A2\u01A4\x03\x02\x02\x02\u01A3\u01A1\x03\x02\x02\x02" + | ||
"\u01A4\u01B0\x07$\x02\x02\u01A5\u01AB\x07)\x02\x02\u01A6\u01A7\x07^\x02" + | ||
"\x02\u01A7\u01AA\x07)\x02\x02\u01A8\u01AA\n\x07\x02\x02\u01A9\u01A6\x03" + | ||
"\x02\x02\x02\u01A9\u01A8\x03\x02\x02\x02\u01AA\u01AD\x03\x02\x02\x02\u01AB" + | ||
"\u01AC\x03\x02\x02\x02\u01AB\u01A9\x03\x02\x02\x02\u01AC\u01AE\x03\x02" + | ||
"\x02\x02\u01AD\u01AB\x03\x02\x02\x02\u01AE\u01B0\x07)\x02\x02\u01AF\u019B" + | ||
"\x03\x02\x02\x02\u01AF\u01A5\x03\x02\x02\x02\u01B0f\x03\x02\x02\x02\u01B1" + | ||
"\u01B2\x072\x02\x02\u01B2\u01B6\t\b\x02\x02\u01B3\u01B5\t\t\x02\x02\u01B4" + | ||
"\u01B3\x03\x02\x02\x02\u01B5\u01B8\x03\x02\x02\x02\u01B6\u01B4\x03\x02" + | ||
"\x02\x02\u01B6\u01B7\x03\x02\x02\x02\u01B7h\x03\x02\x02\x02\u01B8\u01B6" + | ||
"\x03\x02\x02\x02\u01B9\u01BA\x07v\x02\x02\u01BA\u01BB\x07z\x02\x02\u01BB" + | ||
"\u01BC\x070\x02\x02\u01BC\u01BD\x07c\x02\x02\u01BD\u01BE\x07i\x02\x02" + | ||
"\u01BE\u01C7\x07g\x02\x02\u01BF\u01C0\x07v\x02\x02\u01C0\u01C1\x07z\x02" + | ||
"\x02\u01C1\u01C2\x070\x02\x02\u01C2\u01C3\x07v\x02\x02\u01C3\u01C4\x07" + | ||
"k\x02\x02\u01C4\u01C5\x07o\x02\x02\u01C5\u01C7\x07g\x02\x02\u01C6\u01B9" + | ||
"\x03\x02\x02\x02\u01C6\u01BF\x03\x02\x02\x02\u01C7j\x03\x02\x02\x02\u01C8" + | ||
"\u01C9\x07v\x02\x02\u01C9\u01CA\x07z\x02\x02\u01CA\u01CB\x070\x02\x02" + | ||
"\u01CB\u01CC\x07x\x02\x02\u01CC\u01CD\x07g\x02\x02\u01CD\u01CE\x07t\x02" + | ||
"\x02\u01CE\u01CF\x07u\x02\x02\u01CF\u01D0\x07k\x02\x02\u01D0\u01D1\x07" + | ||
"q\x02\x02\u01D1\u0249\x07p\x02\x02\u01D2\u01D3\x07v\x02\x02\u01D3\u01D4" + | ||
"\x07z\x02\x02\u01D4\u01D5\x070\x02\x02\u01D5\u01D6\x07j\x02\x02\u01D6" + | ||
"\u01D7\x07c\x02\x02\u01D7\u01D8\x07u\x02\x02\u01D8\u01D9\x07j\x02\x02" + | ||
"\u01D9\u01DA\x07R\x02\x02\u01DA\u01DB\x07t\x02\x02\u01DB\u01DC\x07g\x02" + | ||
"\x02\u01DC\u01DD\x07x\x02\x02\u01DD\u01DE\x07q\x02\x02\u01DE\u01DF\x07" + | ||
"w\x02\x02\u01DF\u01E0\x07v\x02\x02\u01E0\u0249\x07u\x02\x02\u01E1\u01E2" + | ||
"\x07v\x02\x02\u01E2\u01E3\x07z\x02\x02\u01E3\u01E4\x070\x02\x02\u01E4" + | ||
"\u01E5\x07j\x02\x02\u01E5\u01E6\x07c\x02\x02\u01E6\u01E7\x07u\x02\x02" + | ||
"\u01E7\u01E8\x07j\x02\x02\u01E8\u01E9\x07U\x02\x02\u01E9\u01EA\x07g\x02" + | ||
"\x02\u01EA\u01EB\x07s\x02\x02\u01EB\u01EC\x07w\x02\x02\u01EC\u01ED\x07" + | ||
"g\x02\x02\u01ED\u01EE\x07p\x02\x02\u01EE\u01EF\x07e\x02\x02\u01EF\u0249" + | ||
"\x07g\x02\x02\u01F0\u01F1\x07v\x02\x02\u01F1\u01F2\x07z\x02\x02\u01F2" + | ||
"\u01F3\x070\x02\x02\u01F3\u01F4\x07q\x02\x02\u01F4\u01F5\x07w\x02\x02" + | ||
"\u01F5\u01F6\x07v\x02\x02\u01F6\u01F7\x07r\x02\x02\u01F7\u01F8\x07q\x02" + | ||
"\x02\u01F8\u01F9\x07k\x02\x02\u01F9\u01FA\x07p\x02\x02\u01FA\u0249\x07" + | ||
"v\x02\x02\u01FB\u01FC\x07v\x02\x02\u01FC\u01FD\x07z\x02\x02\u01FD\u01FE" + | ||
"\x070\x02\x02\u01FE\u01FF\x07d\x02\x02\u01FF\u0200\x07{\x02\x02\u0200" + | ||
"\u0201\x07v\x02\x02\u0201\u0202\x07g\x02\x02\u0202\u0203\x07e\x02\x02" + | ||
"\u0203\u0204\x07q\x02\x02\u0204\u0205\x07f\x02\x02\u0205\u0249\x07g\x02" + | ||
"\x02\u0206\u0207\x07v\x02\x02\u0207\u0208\x07z\x02\x02\u0208\u0209\x07" + | ||
"0\x02\x02\u0209\u020A\x07x\x02\x02\u020A\u020B\x07c\x02\x02\u020B\u020C" + | ||
"\x07n\x02\x02\u020C\u020D\x07w\x02\x02\u020D\u0249\x07g\x02\x02\u020E" + | ||
"\u020F\x07v\x02\x02\u020F\u0210\x07z\x02\x02\u0210\u0211\x070\x02\x02" + | ||
"\u0211\u0212\x07u\x02\x02\u0212\u0213\x07g\x02\x02\u0213\u0214\x07s\x02" + | ||
"\x02\u0214\u0215\x07w\x02\x02\u0215\u0216\x07g\x02\x02\u0216\u0217\x07" + | ||
"p\x02\x02\u0217\u0218\x07e\x02\x02\u0218\u0249\x07g\x02\x02\u0219\u021A" + | ||
"\x07v\x02\x02\u021A\u021B\x07z\x02\x02\u021B\u021C\x070\x02\x02\u021C" + | ||
"\u021D\x07j\x02\x02\u021D\u021E\x07c\x02\x02\u021E\u021F\x07u\x02\x02" + | ||
"\u021F\u0220\x07j\x02\x02\u0220\u0221\x07Q\x02\x02\u0221\u0222\x07w\x02" + | ||
"\x02\u0222\u0223\x07v\x02\x02\u0223\u0224\x07r\x02\x02\u0224\u0225\x07" + | ||
"w\x02\x02\u0225\u0226\x07v\x02\x02\u0226\u0249\x07u\x02\x02\u0227\u0228" + | ||
"\x07"; | ||
CashScriptLexer._serializedATNSegment1 = "v\x02\x02\u0228\u0229\x07z\x02\x02\u0229\u022A\x070\x02\x02\u022A\u022B" + | ||
"\x07n\x02\x02\u022B\u022C\x07q\x02\x02\u022C\u022D\x07e\x02\x02\u022D" + | ||
"\u022E\x07m\x02\x02\u022E\u022F\x07v\x02\x02\u022F\u0230\x07k\x02\x02" + | ||
"\u0230\u0231\x07o\x02\x02\u0231\u0249\x07g\x02\x02\u0232\u0233\x07v\x02" + | ||
"\x02\u0233\u0234\x07z\x02\x02\u0234\u0235\x070\x02\x02\u0235\u0236\x07" + | ||
"j\x02\x02\u0236\u0237\x07c\x02\x02\u0237\u0238\x07u\x02\x02\u0238\u0239" + | ||
"\x07j\x02\x02\u0239\u023A\x07v\x02\x02\u023A\u023B\x07{\x02\x02\u023B" + | ||
"\u023C\x07r\x02\x02\u023C\u0249\x07g\x02\x02\u023D\u023E\x07v\x02\x02" + | ||
"\u023E\u023F\x07z\x02\x02\u023F\u0240\x070\x02\x02\u0240\u0241\x07r\x02" + | ||
"\x02\u0241\u0242\x07t\x02\x02\u0242\u0243\x07g\x02\x02\u0243\u0244\x07" + | ||
"k\x02\x02\u0244\u0245\x07o\x02\x02\u0245\u0246\x07c\x02\x02\u0246\u0247" + | ||
"\x07i\x02\x02\u0247\u0249\x07g\x02\x02\u0248\u01C8\x03\x02\x02\x02\u0248" + | ||
"\u01D2\x03\x02\x02\x02\u0248\u01E1\x03\x02\x02\x02\u0248\u01F0\x03\x02" + | ||
"\x02\x02\u0248\u01FB\x03\x02\x02\x02\u0248\u0206\x03\x02\x02\x02\u0248" + | ||
"\u020E\x03\x02\x02\x02\u0248\u0219\x03\x02\x02\x02\u0248\u0227\x03\x02" + | ||
"\x02\x02\u0248\u0232\x03\x02\x02\x02\u0248\u023D\x03\x02\x02\x02\u0249" + | ||
"l\x03\x02\x02\x02\u024A\u024E\t\n\x02\x02\u024B\u024D\t\v\x02\x02\u024C" + | ||
"\u024B\x03\x02\x02\x02\u024D\u0250\x03\x02\x02\x02\u024E\u024C\x03\x02" + | ||
"\x02\x02\u024E\u024F\x03\x02\x02\x02\u024Fn\x03\x02\x02\x02\u0250\u024E" + | ||
"\x03\x02\x02\x02\u0251\u0253\t\f\x02\x02\u0252\u0251\x03\x02\x02\x02\u0253" + | ||
"\u0254\x03\x02\x02\x02\u0254\u0252\x03\x02\x02\x02\u0254\u0255\x03\x02" + | ||
"\x02\x02\u0255\u0256\x03\x02\x02\x02\u0256\u0257\b8\x02\x02\u0257p\x03" + | ||
"\x02\x02\x02\u0258\u0259\x071\x02\x02\u0259\u025A\x07,\x02\x02\u025A\u025E" + | ||
"\x03\x02\x02\x02\u025B\u025D\v\x02\x02\x02\u025C\u025B\x03\x02\x02\x02" + | ||
"\u025D\u0260\x03\x02\x02\x02\u025E\u025F\x03\x02\x02\x02\u025E\u025C\x03" + | ||
"\x02\x02\x02\u025F\u0261\x03\x02\x02\x02\u0260\u025E\x03\x02\x02\x02\u0261" + | ||
"\u0262\x07,\x02\x02\u0262\u0263\x071\x02\x02\u0263\u0264\x03\x02\x02\x02" + | ||
"\u0264\u0265\b9\x03\x02\u0265r\x03\x02\x02\x02\u0266\u0267\x071\x02\x02" + | ||
"\u0267\u0268\x071\x02\x02\u0268\u026C\x03\x02\x02\x02\u0269\u026B\n\r" + | ||
"\x02\x02\u026A\u0269\x03\x02\x02\x02\u026B\u026E\x03\x02\x02\x02\u026C" + | ||
"\u026A\x03\x02\x02\x02\u026C\u026D\x03\x02\x02\x02\u026D\u026F\x03\x02" + | ||
"\x02\x02\u026E\u026C\x03\x02\x02\x02\u026F\u0270\b:\x03\x02\u0270t\x03" + | ||
"\x02\x02\x02\x1A\x02\u0127\u012D\u0133\u013E\u0179\u017C\u0181\u0187\u0189" + | ||
"\u0192\u0198\u019F\u01A1\u01A9\u01AB\u01AF\u01B6\u01C6\u0248\u024E\u0254" + | ||
"\u025E\u026C\x04\b\x02\x02\x02\x03\x02"; | ||
"/\x03/\x03/\x03/\x03/\x05/\u017C\n/\x030\x050\u017F\n0\x030\x060\u0182" + | ||
"\n0\r0\x0E0\u0183\x030\x030\x060\u0188\n0\r0\x0E0\u0189\x050\u018C\n0" + | ||
"\x031\x031\x031\x031\x031\x031\x031\x051\u0195\n1\x032\x032\x072\u0199" + | ||
"\n2\f2\x0E2\u019C\v2\x033\x033\x033\x033\x073\u01A2\n3\f3\x0E3\u01A5\v" + | ||
"3\x033\x033\x033\x033\x033\x073\u01AC\n3\f3\x0E3\u01AF\v3\x033\x053\u01B2" + | ||
"\n3\x034\x034\x034\x034\x034\x034\x034\x034\x034\x035\x035\x035\x075\u01C0" + | ||
"\n5\f5\x0E5\u01C3\v5\x036\x036\x036\x036\x036\x036\x036\x036\x036\x03" + | ||
"6\x036\x036\x036\x056\u01D2\n6\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" + | ||
"7\x037\x037\x037\x037\x037\x037\x037\x037\x057\u0254\n7\x038\x038\x07" + | ||
"8\u0258\n8\f8\x0E8\u025B\v8\x039\x069\u025E\n9\r9\x0E9\u025F\x039\x03" + | ||
"9\x03:\x03:\x03:\x03:\x07:\u0268\n:\f:\x0E:\u026B\v:\x03:\x03:\x03:\x03" + | ||
":\x03:\x03;\x03;\x03;\x03;\x07;\u0276\n;\f;\x0E;\u0279\v;\x03;\x03;\x05" + | ||
"\u01A3\u01AD\u0269\x02\x02<\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02" + | ||
"\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02" + | ||
"\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12#\x02\x13%" + | ||
"\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191\x02\x1A3\x02\x1B" + | ||
"5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02\"C\x02#E\x02$G\x02" + | ||
"%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-Y\x02.[\x02/]\x020_" + | ||
"\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x029q\x02:s\x02;u\x02" + | ||
"<\x03\x02\x0E\x03\x022;\x03\x02//\x04\x02GGgg\x03\x023;\x05\x02\f\f\x0F" + | ||
"\x0F$$\x05\x02\f\f\x0F\x0F))\x04\x02ZZzz\x05\x022;CHch\x04\x02C\\c|\x06" + | ||
"\x022;C\\aac|\x05\x02\v\f\x0E\x0F\"\"\x04\x02\f\f\x0F\x0F\x02\u02A3\x02" + | ||
"\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02" + | ||
"\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0F" + | ||
"\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15" + | ||
"\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02\x1B" + | ||
"\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02!" + | ||
"\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02\'\x03\x02" + | ||
"\x02\x02\x02)\x03\x02\x02\x02\x02+\x03\x02\x02\x02\x02-\x03\x02\x02\x02" + | ||
"\x02/\x03\x02\x02\x02\x021\x03\x02\x02\x02\x023\x03\x02\x02\x02\x025\x03" + | ||
"\x02\x02\x02\x027\x03\x02\x02\x02\x029\x03\x02\x02\x02\x02;\x03\x02\x02" + | ||
"\x02\x02=\x03\x02\x02\x02\x02?\x03\x02\x02\x02\x02A\x03\x02\x02\x02\x02" + | ||
"C\x03\x02\x02\x02\x02E\x03\x02\x02\x02\x02G\x03\x02\x02\x02\x02I\x03\x02" + | ||
"\x02\x02\x02K\x03\x02\x02\x02\x02M\x03\x02\x02\x02\x02O\x03\x02\x02\x02" + | ||
"\x02Q\x03\x02\x02\x02\x02S\x03\x02\x02\x02\x02U\x03\x02\x02\x02\x02W\x03" + | ||
"\x02\x02\x02\x02Y\x03\x02\x02\x02\x02[\x03\x02\x02\x02\x02]\x03\x02\x02" + | ||
"\x02\x02_\x03\x02\x02\x02\x02a\x03\x02\x02\x02\x02c\x03\x02\x02\x02\x02" + | ||
"e\x03\x02\x02\x02\x02g\x03\x02\x02\x02\x02i\x03\x02\x02\x02\x02k\x03\x02" + | ||
"\x02\x02\x02m\x03\x02\x02\x02\x02o\x03\x02\x02\x02\x02q\x03\x02\x02\x02" + | ||
"\x02s\x03\x02\x02\x02\x02u\x03\x02\x02\x02\x03w\x03\x02\x02\x02\x05~\x03" + | ||
"\x02\x02\x02\x07\x80\x03\x02\x02\x02\t\x8B\x03\x02\x02\x02\v\x8D\x03\x02" + | ||
"\x02\x02\r\x8F\x03\x02\x02\x02\x0F\x92\x03\x02\x02\x02\x11\x94\x03\x02" + | ||
"\x02\x02\x13\x96\x03\x02\x02\x02\x15\x99\x03\x02\x02\x02\x17\x9B\x03\x02" + | ||
"\x02\x02\x19\xA4\x03\x02\x02\x02\x1B\xA6\x03\x02\x02\x02\x1D\xA8\x03\x02" + | ||
"\x02\x02\x1F\xB1\x03\x02\x02\x02!\xB3\x03\x02\x02\x02#\xB5\x03\x02\x02" + | ||
"\x02%\xB7\x03\x02\x02\x02\'\xBF\x03\x02\x02\x02)\xC2\x03\x02\x02\x02+" + | ||
"\xC7\x03\x02\x02\x02-\xCB\x03\x02\x02\x02/\xCD\x03\x02\x02\x021\xCF\x03" + | ||
"\x02\x02\x023\xDA\x03\x02\x02\x025\xE2\x03\x02\x02\x027\xE4\x03\x02\x02" + | ||
"\x029\xE6\x03\x02\x02\x02;\xED\x03\x02\x02\x02=\xEF\x03\x02\x02\x02?\xF1" + | ||
"\x03\x02\x02\x02A\xF3\x03\x02\x02\x02C\xF6\x03\x02\x02\x02E\xF9\x03\x02" + | ||
"\x02\x02G\xFB\x03\x02\x02\x02I\xFD\x03\x02\x02\x02K\u0100\x03\x02\x02" + | ||
"\x02M\u0103\x03\x02\x02\x02O\u0107\x03\x02\x02\x02Q\u010C\x03\x02\x02" + | ||
"\x02S\u0113\x03\x02\x02\x02U\u011A\x03\x02\x02\x02W\u011E\x03\x02\x02" + | ||
"\x02Y\u0127\x03\x02\x02\x02[\u0140\x03\x02\x02\x02]\u017B\x03\x02\x02" + | ||
"\x02_\u017E\x03\x02\x02\x02a\u018D\x03\x02\x02\x02c\u0196\x03\x02\x02" + | ||
"\x02e\u01B1\x03\x02\x02\x02g\u01B3\x03\x02\x02\x02i\u01BC\x03\x02\x02" + | ||
"\x02k\u01D1\x03\x02\x02\x02m\u0253\x03\x02\x02\x02o\u0255\x03\x02\x02" + | ||
"\x02q\u025D\x03\x02\x02\x02s\u0263\x03\x02\x02\x02u\u0271\x03\x02\x02" + | ||
"\x02wx\x07r\x02\x02xy\x07t\x02\x02yz\x07c\x02\x02z{\x07i\x02\x02{|\x07" + | ||
"o\x02\x02|}\x07c\x02\x02}\x04\x03\x02\x02\x02~\x7F\x07=\x02\x02\x7F\x06" + | ||
"\x03\x02\x02\x02\x80\x81\x07e\x02\x02\x81\x82\x07c\x02\x02\x82\x83\x07" + | ||
"u\x02\x02\x83\x84\x07j\x02\x02\x84\x85\x07u\x02\x02\x85\x86\x07e\x02\x02" + | ||
"\x86\x87\x07t\x02\x02\x87\x88\x07k\x02\x02\x88\x89\x07r\x02\x02\x89\x8A" + | ||
"\x07v\x02\x02\x8A\b\x03\x02\x02\x02\x8B\x8C\x07`\x02\x02\x8C\n\x03\x02" + | ||
"\x02\x02\x8D\x8E\x07\x80\x02\x02\x8E\f\x03\x02\x02\x02\x8F\x90\x07@\x02" + | ||
"\x02\x90\x91\x07?\x02\x02\x91\x0E\x03\x02\x02\x02\x92\x93\x07@\x02\x02" + | ||
"\x93\x10\x03\x02\x02\x02\x94\x95\x07>\x02\x02\x95\x12\x03\x02\x02\x02" + | ||
"\x96\x97\x07>\x02\x02\x97\x98\x07?\x02\x02\x98\x14\x03\x02\x02\x02\x99" + | ||
"\x9A\x07?\x02\x02\x9A\x16\x03\x02\x02\x02\x9B\x9C\x07e\x02\x02\x9C\x9D" + | ||
"\x07q\x02\x02\x9D\x9E\x07p\x02\x02\x9E\x9F\x07v\x02\x02\x9F\xA0\x07t\x02" + | ||
"\x02\xA0\xA1\x07c\x02\x02\xA1\xA2\x07e\x02\x02\xA2\xA3\x07v\x02\x02\xA3" + | ||
"\x18\x03\x02\x02\x02\xA4\xA5\x07}\x02\x02\xA5\x1A\x03\x02\x02\x02\xA6" + | ||
"\xA7\x07\x7F\x02\x02\xA7\x1C\x03\x02\x02\x02\xA8\xA9\x07h\x02\x02\xA9" + | ||
"\xAA\x07w\x02\x02\xAA\xAB\x07p\x02\x02\xAB\xAC\x07e\x02\x02\xAC\xAD\x07" + | ||
"v\x02\x02\xAD\xAE\x07k\x02\x02\xAE\xAF\x07q\x02\x02\xAF\xB0\x07p\x02\x02" + | ||
"\xB0\x1E\x03\x02\x02\x02\xB1\xB2\x07*\x02\x02\xB2 \x03\x02\x02\x02\xB3" + | ||
"\xB4\x07.\x02\x02\xB4\"\x03\x02\x02\x02\xB5\xB6\x07+\x02\x02\xB6$\x03" + | ||
"\x02\x02\x02\xB7\xB8\x07t\x02\x02\xB8\xB9\x07g\x02\x02\xB9\xBA\x07s\x02" + | ||
"\x02\xBA\xBB\x07w\x02\x02\xBB\xBC\x07k\x02\x02\xBC\xBD\x07t\x02\x02\xBD" + | ||
"\xBE\x07g\x02\x02\xBE&\x03\x02\x02\x02\xBF\xC0\x07k\x02\x02\xC0\xC1\x07" + | ||
"h\x02\x02\xC1(\x03\x02\x02\x02\xC2\xC3\x07g\x02\x02\xC3\xC4\x07n\x02\x02" + | ||
"\xC4\xC5\x07u\x02\x02\xC5\xC6\x07g\x02\x02\xC6*\x03\x02\x02\x02\xC7\xC8" + | ||
"\x07p\x02\x02\xC8\xC9\x07g\x02\x02\xC9\xCA\x07y\x02\x02\xCA,\x03\x02\x02" + | ||
"\x02\xCB\xCC\x07]\x02\x02\xCC.\x03\x02\x02\x02\xCD\xCE\x07_\x02\x02\xCE" + | ||
"0\x03\x02\x02\x02\xCF\xD0\x070\x02\x02\xD0\xD1\x07t\x02\x02\xD1\xD2\x07" + | ||
"g\x02\x02\xD2\xD3\x07x\x02\x02\xD3\xD4\x07g\x02\x02\xD4\xD5\x07t\x02\x02" + | ||
"\xD5\xD6\x07u\x02\x02\xD6\xD7\x07g\x02\x02\xD7\xD8\x07*\x02\x02\xD8\xD9" + | ||
"\x07+\x02\x02\xD92\x03\x02\x02\x02\xDA\xDB\x070\x02\x02\xDB\xDC\x07n\x02" + | ||
"\x02\xDC\xDD\x07g\x02\x02\xDD\xDE\x07p\x02\x02\xDE\xDF\x07i\x02\x02\xDF" + | ||
"\xE0\x07v\x02\x02\xE0\xE1\x07j\x02\x02\xE14\x03\x02\x02\x02\xE2\xE3\x07" + | ||
"#\x02\x02\xE36\x03\x02\x02\x02\xE4\xE5\x07/\x02\x02\xE58\x03\x02\x02\x02" + | ||
"\xE6\xE7\x070\x02\x02\xE7\xE8\x07u\x02\x02\xE8\xE9\x07r\x02\x02\xE9\xEA" + | ||
"\x07n\x02\x02\xEA\xEB\x07k\x02\x02\xEB\xEC\x07v\x02\x02\xEC:\x03\x02\x02" + | ||
"\x02\xED\xEE\x071\x02\x02\xEE<\x03\x02\x02\x02\xEF\xF0\x07\'\x02\x02\xF0" + | ||
">\x03\x02\x02\x02\xF1\xF2\x07-\x02\x02\xF2@\x03\x02\x02\x02\xF3\xF4\x07" + | ||
"?\x02\x02\xF4\xF5\x07?\x02\x02\xF5B\x03\x02\x02\x02\xF6\xF7\x07#\x02\x02" + | ||
"\xF7\xF8\x07?\x02\x02\xF8D\x03\x02\x02\x02\xF9\xFA\x07(\x02\x02\xFAF\x03" + | ||
"\x02\x02\x02\xFB\xFC\x07~\x02\x02\xFCH\x03\x02\x02\x02\xFD\xFE\x07(\x02" + | ||
"\x02\xFE\xFF\x07(\x02\x02\xFFJ\x03\x02\x02\x02\u0100\u0101\x07~\x02\x02" + | ||
"\u0101\u0102\x07~\x02\x02\u0102L\x03\x02\x02\x02\u0103\u0104\x07k\x02" + | ||
"\x02\u0104\u0105\x07p\x02\x02\u0105\u0106\x07v\x02\x02\u0106N\x03\x02" + | ||
"\x02\x02\u0107\u0108\x07d\x02\x02\u0108\u0109\x07q\x02\x02\u0109\u010A" + | ||
"\x07q\x02\x02\u010A\u010B\x07n\x02\x02\u010BP\x03\x02\x02\x02\u010C\u010D" + | ||
"\x07u\x02\x02\u010D\u010E\x07v\x02\x02\u010E\u010F\x07t\x02\x02\u010F" + | ||
"\u0110\x07k\x02\x02\u0110\u0111\x07p\x02\x02\u0111\u0112\x07i\x02\x02" + | ||
"\u0112R\x03\x02\x02\x02\u0113\u0114\x07r\x02\x02\u0114\u0115\x07w\x02" + | ||
"\x02\u0115\u0116\x07d\x02\x02\u0116\u0117\x07m\x02\x02\u0117\u0118\x07" + | ||
"g\x02\x02\u0118\u0119\x07{\x02\x02\u0119T\x03\x02\x02\x02\u011A\u011B" + | ||
"\x07u\x02\x02\u011B\u011C\x07k\x02\x02\u011C\u011D\x07i\x02\x02\u011D" + | ||
"V\x03\x02\x02\x02\u011E\u011F\x07f\x02\x02\u011F\u0120\x07c\x02\x02\u0120" + | ||
"\u0121\x07v\x02\x02\u0121\u0122\x07c\x02\x02\u0122\u0123\x07u\x02\x02" + | ||
"\u0123\u0124\x07k\x02\x02\u0124\u0125\x07i\x02\x02\u0125X\x03\x02\x02" + | ||
"\x02\u0126\u0128\t\x02\x02\x02\u0127\u0126\x03\x02\x02\x02\u0128\u0129" + | ||
"\x03\x02\x02\x02\u0129\u0127\x03\x02\x02\x02\u0129\u012A\x03\x02\x02\x02" + | ||
"\u012A\u012B\x03\x02\x02\x02\u012B\u012D\x070\x02\x02\u012C\u012E\t\x02" + | ||
"\x02\x02\u012D\u012C\x03\x02\x02\x02\u012E\u012F\x03\x02\x02\x02\u012F" + | ||
"\u012D\x03\x02\x02\x02\u012F\u0130\x03\x02\x02\x02\u0130\u0131\x03\x02" + | ||
"\x02\x02\u0131\u0133\x070\x02\x02\u0132\u0134\t\x02\x02\x02\u0133\u0132" + | ||
"\x03\x02\x02\x02\u0134\u0135\x03\x02\x02\x02\u0135\u0133\x03\x02\x02\x02" + | ||
"\u0135\u0136\x03\x02\x02\x02\u0136Z\x03\x02\x02\x02\u0137\u0138\x07v\x02" + | ||
"\x02\u0138\u0139\x07t\x02\x02\u0139\u013A\x07w\x02\x02\u013A\u0141\x07" + | ||
"g\x02\x02\u013B\u013C\x07h\x02\x02\u013C\u013D\x07c\x02\x02\u013D\u013E" + | ||
"\x07n\x02\x02\u013E\u013F\x07u\x02\x02\u013F\u0141\x07g\x02\x02\u0140" + | ||
"\u0137\x03\x02\x02\x02\u0140\u013B\x03\x02\x02\x02\u0141\\\x03\x02\x02" + | ||
"\x02\u0142\u0143\x07u\x02\x02\u0143\u0144\x07c\x02\x02\u0144\u0145\x07" + | ||
"v\x02\x02\u0145\u0146\x07q\x02\x02\u0146\u0147\x07u\x02\x02\u0147\u0148" + | ||
"\x07j\x02\x02\u0148\u0149\x07k\x02\x02\u0149\u017C\x07u\x02\x02\u014A" + | ||
"\u014B\x07u\x02\x02\u014B\u014C\x07c\x02\x02\u014C\u014D\x07v\x02\x02" + | ||
"\u014D\u017C\x07u\x02\x02\u014E\u014F\x07h\x02\x02\u014F\u0150\x07k\x02" + | ||
"\x02\u0150\u0151\x07p\x02\x02\u0151\u0152\x07p\x02\x02\u0152\u0153\x07" + | ||
"g\x02\x02\u0153\u017C\x07{\x02\x02\u0154\u0155\x07d\x02\x02\u0155\u0156" + | ||
"\x07k\x02\x02\u0156\u0157\x07v\x02\x02\u0157\u017C\x07u\x02\x02\u0158" + | ||
"\u0159\x07d\x02\x02\u0159\u015A\x07k\x02\x02\u015A\u015B\x07v\x02\x02" + | ||
"\u015B\u015C\x07e\x02\x02\u015C\u015D\x07q\x02\x02\u015D\u015E\x07k\x02" + | ||
"\x02\u015E\u017C\x07p\x02\x02\u015F\u0160\x07u\x02\x02\u0160\u0161\x07" + | ||
"g\x02\x02\u0161\u0162\x07e\x02\x02\u0162\u0163\x07q\x02\x02\u0163\u0164" + | ||
"\x07p\x02\x02\u0164\u0165\x07f\x02\x02\u0165\u017C\x07u\x02\x02\u0166" + | ||
"\u0167\x07o\x02\x02\u0167\u0168\x07k\x02\x02\u0168\u0169\x07p\x02\x02" + | ||
"\u0169\u016A\x07w\x02\x02\u016A\u016B\x07v\x02\x02\u016B\u016C\x07g\x02" + | ||
"\x02\u016C\u017C\x07u\x02\x02\u016D\u016E\x07j\x02\x02\u016E\u016F\x07" + | ||
"q\x02\x02\u016F\u0170\x07w\x02\x02\u0170\u0171\x07t\x02\x02\u0171\u017C" + | ||
"\x07u\x02\x02\u0172\u0173\x07f\x02\x02\u0173\u0174\x07c\x02\x02\u0174" + | ||
"\u0175\x07{\x02\x02\u0175\u017C\x07u\x02\x02\u0176\u0177\x07y\x02\x02" + | ||
"\u0177\u0178\x07g\x02\x02\u0178\u0179\x07g\x02\x02\u0179\u017A\x07m\x02" + | ||
"\x02\u017A\u017C\x07u\x02\x02\u017B\u0142\x03\x02\x02\x02\u017B\u014A" + | ||
"\x03\x02\x02\x02\u017B\u014E\x03\x02\x02\x02\u017B\u0154\x03\x02\x02\x02" + | ||
"\u017B\u0158\x03\x02\x02\x02\u017B\u015F\x03\x02\x02\x02\u017B\u0166\x03" + | ||
"\x02\x02\x02\u017B\u016D\x03\x02\x02\x02\u017B\u0172\x03\x02\x02\x02\u017B" + | ||
"\u0176\x03\x02\x02\x02\u017C^\x03\x02\x02\x02\u017D\u017F\t\x03\x02\x02" + | ||
"\u017E\u017D\x03\x02\x02\x02\u017E\u017F\x03\x02\x02\x02\u017F\u0181\x03" + | ||
"\x02\x02\x02\u0180\u0182\t\x02\x02\x02\u0181\u0180\x03\x02\x02\x02\u0182" + | ||
"\u0183\x03\x02\x02\x02\u0183\u0181\x03\x02\x02\x02\u0183\u0184\x03\x02" + | ||
"\x02\x02\u0184\u018B\x03\x02\x02\x02\u0185\u0187\t\x04\x02\x02\u0186\u0188" + | ||
"\t\x02\x02\x02\u0187\u0186\x03\x02\x02\x02\u0188\u0189\x03\x02\x02\x02" + | ||
"\u0189\u0187\x03\x02\x02\x02\u0189\u018A\x03\x02\x02\x02\u018A\u018C\x03" + | ||
"\x02\x02\x02\u018B\u0185\x03\x02\x02\x02\u018B\u018C\x03\x02\x02\x02\u018C" + | ||
"`\x03\x02\x02\x02\u018D\u018E\x07d\x02\x02\u018E\u018F\x07{\x02\x02\u018F" + | ||
"\u0190\x07v\x02\x02\u0190\u0191\x07g\x02\x02\u0191\u0192\x07u\x02\x02" + | ||
"\u0192\u0194\x03\x02\x02\x02\u0193\u0195\x05c2\x02\u0194\u0193\x03\x02" + | ||
"\x02\x02\u0194\u0195\x03\x02\x02\x02\u0195b\x03\x02\x02\x02\u0196\u019A" + | ||
"\t\x05\x02\x02\u0197\u0199\t\x02\x02\x02\u0198\u0197\x03\x02\x02\x02\u0199" + | ||
"\u019C\x03\x02\x02\x02\u019A\u0198\x03\x02\x02\x02\u019A\u019B\x03\x02" + | ||
"\x02\x02\u019Bd\x03\x02\x02\x02\u019C\u019A\x03\x02\x02\x02\u019D\u01A3" + | ||
"\x07$\x02\x02\u019E\u019F\x07^\x02\x02\u019F\u01A2\x07$\x02\x02\u01A0" + | ||
"\u01A2\n\x06\x02\x02\u01A1\u019E\x03\x02\x02\x02\u01A1\u01A0\x03\x02\x02" + | ||
"\x02\u01A2\u01A5\x03\x02\x02\x02\u01A3\u01A4\x03\x02\x02\x02\u01A3\u01A1" + | ||
"\x03\x02\x02\x02\u01A4\u01A6\x03\x02\x02\x02\u01A5\u01A3\x03\x02\x02\x02" + | ||
"\u01A6\u01B2\x07$\x02\x02\u01A7\u01AD\x07)\x02\x02\u01A8\u01A9\x07^\x02" + | ||
"\x02\u01A9\u01AC\x07)\x02\x02\u01AA\u01AC\n\x07\x02\x02\u01AB\u01A8\x03" + | ||
"\x02\x02\x02\u01AB\u01AA\x03\x02\x02\x02\u01AC\u01AF\x03\x02\x02\x02\u01AD" + | ||
"\u01AE\x03\x02\x02\x02\u01AD\u01AB\x03\x02\x02\x02\u01AE\u01B0\x03\x02" + | ||
"\x02\x02\u01AF\u01AD\x03\x02\x02\x02\u01B0\u01B2\x07)\x02\x02\u01B1\u019D" + | ||
"\x03\x02\x02\x02\u01B1\u01A7\x03\x02\x02\x02\u01B2f\x03\x02\x02\x02\u01B3" + | ||
"\u01B4\x07f\x02\x02\u01B4\u01B5\x07c\x02\x02\u01B5\u01B6\x07v\x02\x02" + | ||
"\u01B6\u01B7\x07g\x02\x02\u01B7\u01B8\x07*\x02\x02\u01B8\u01B9\x03\x02" + | ||
"\x02\x02\u01B9\u01BA\x05e3\x02\u01BA\u01BB\x07+\x02\x02\u01BBh\x03\x02" + | ||
"\x02\x02\u01BC\u01BD\x072\x02\x02\u01BD\u01C1\t\b\x02\x02\u01BE\u01C0" + | ||
"\t\t\x02\x02\u01BF\u01BE\x03\x02\x02\x02\u01C0\u01C3\x03\x02\x02\x02\u01C1" + | ||
"\u01BF\x03\x02\x02\x02\u01C1\u01C2\x03\x02\x02\x02\u01C2j\x03\x02\x02" + | ||
"\x02\u01C3\u01C1\x03\x02\x02\x02\u01C4\u01C5\x07v\x02\x02\u01C5\u01C6" + | ||
"\x07z\x02\x02\u01C6\u01C7\x070\x02\x02\u01C7\u01C8\x07c\x02\x02\u01C8" + | ||
"\u01C9\x07i\x02\x02\u01C9\u01D2\x07g\x02\x02\u01CA\u01CB\x07v\x02\x02" + | ||
"\u01CB\u01CC\x07z\x02\x02\u01CC\u01CD\x070\x02\x02\u01CD\u01CE\x07v\x02" + | ||
"\x02\u01CE\u01CF\x07k\x02\x02\u01CF\u01D0\x07o\x02\x02\u01D0\u01D2\x07" + | ||
"g\x02\x02\u01D1\u01C4\x03\x02\x02\x02\u01D1\u01CA\x03\x02\x02\x02\u01D2" + | ||
"l\x03\x02\x02\x02\u01D3\u01D4\x07v\x02\x02\u01D4\u01D5\x07z\x02\x02\u01D5" + | ||
"\u01D6\x070\x02\x02\u01D6\u01D7\x07x\x02\x02\u01D7\u01D8\x07g\x02\x02" + | ||
"\u01D8\u01D9\x07t\x02\x02\u01D9\u01DA\x07u\x02\x02\u01DA\u01DB\x07k\x02" + | ||
"\x02\u01DB\u01DC\x07q\x02\x02\u01DC\u0254\x07p\x02\x02\u01DD\u01DE\x07" + | ||
"v\x02\x02\u01DE\u01DF\x07z\x02\x02\u01DF\u01E0\x070\x02\x02\u01E0\u01E1" + | ||
"\x07j\x02\x02\u01E1\u01E2\x07c\x02\x02\u01E2\u01E3\x07u\x02\x02\u01E3" + | ||
"\u01E4\x07j\x02\x02\u01E4\u01E5\x07R\x02\x02\u01E5\u01E6\x07t\x02\x02" + | ||
"\u01E6\u01E7\x07g\x02\x02\u01E7\u01E8\x07x\x02\x02\u01E8\u01E9\x07q\x02" + | ||
"\x02\u01E9\u01EA\x07w\x02\x02\u01EA\u01EB\x07v\x02\x02\u01EB\u0254\x07" + | ||
"u\x02\x02\u01EC\u01ED\x07v\x02\x02\u01ED\u01EE\x07z\x02\x02\u01EE\u01EF" + | ||
"\x070\x02\x02\u01EF\u01F0\x07j\x02\x02\u01F0\u01F1\x07c\x02\x02\u01F1" + | ||
"\u01F2\x07u\x02\x02\u01F2\u01F3\x07j\x02\x02\u01F3\u01F4\x07U\x02\x02" + | ||
"\u01F4\u01F5\x07g\x02\x02\u01F5\u01F6\x07s\x02\x02\u01F6\u01F7\x07w\x02" + | ||
"\x02\u01F7\u01F8\x07g\x02\x02\u01F8\u01F9\x07p\x02\x02\u01F9\u01FA\x07" + | ||
"e\x02\x02\u01FA\u0254\x07g\x02\x02\u01FB\u01FC\x07v\x02\x02\u01FC\u01FD" + | ||
"\x07z\x02\x02\u01FD\u01FE\x070\x02\x02\u01FE\u01FF\x07q\x02\x02\u01FF" + | ||
"\u0200\x07w\x02\x02\u0200\u0201\x07v\x02\x02\u0201\u0202\x07r\x02\x02" + | ||
"\u0202\u0203\x07q\x02\x02\u0203\u0204\x07k\x02\x02\u0204\u0205\x07p\x02" + | ||
"\x02\u0205\u0254\x07v\x02\x02\u0206\u0207\x07v\x02\x02\u0207\u0208\x07" + | ||
"z\x02\x02\u0208\u0209\x070\x02\x02\u0209\u020A\x07d\x02\x02\u020A\u020B" + | ||
"\x07{\x02\x02\u020B\u020C\x07v\x02\x02\u020C\u020D\x07g\x02\x02\u020D" + | ||
"\u020E\x07e\x02\x02\u020E\u020F\x07q\x02\x02\u020F\u0210\x07f\x02\x02" + | ||
"\u0210\u0254\x07g\x02\x02\u0211\u0212\x07v\x02\x02\u0212\u0213\x07z\x02" + | ||
"\x02\u0213\u0214\x070\x02\x02\u0214\u0215\x07x\x02\x02\u0215\u0216\x07" + | ||
"c\x02\x02\u0216\u0217\x07n\x02\x02\u0217\u0218\x07w\x02\x02\u0218\u0254" + | ||
"\x07g\x02\x02\u0219\u021A\x07v\x02\x02\u021A\u021B\x07z\x02\x02\u021B" + | ||
"\u021C\x070\x02\x02\u021C\u021D\x07u\x02\x02\u021D\u021E\x07g\x02\x02" + | ||
"\u021E\u021F\x07s\x02\x02\u021F\u0220\x07w\x02\x02\u0220\u0221\x07g\x02" + | ||
"\x02\u0221\u0222\x07p\x02\x02\u0222\u0223\x07e\x02\x02\u0223\u0254"; | ||
CashScriptLexer._serializedATNSegment1 = "\x07g\x02\x02\u0224\u0225\x07v\x02\x02\u0225\u0226\x07z\x02\x02\u0226" + | ||
"\u0227\x070\x02\x02\u0227\u0228\x07j\x02\x02\u0228\u0229\x07c\x02\x02" + | ||
"\u0229\u022A\x07u\x02\x02\u022A\u022B\x07j\x02\x02\u022B\u022C\x07Q\x02" + | ||
"\x02\u022C\u022D\x07w\x02\x02\u022D\u022E\x07v\x02\x02\u022E\u022F\x07" + | ||
"r\x02\x02\u022F\u0230\x07w\x02\x02\u0230\u0231\x07v\x02\x02\u0231\u0254" + | ||
"\x07u\x02\x02\u0232\u0233\x07v\x02\x02\u0233\u0234\x07z\x02\x02\u0234" + | ||
"\u0235\x070\x02\x02\u0235\u0236\x07n\x02\x02\u0236\u0237\x07q\x02\x02" + | ||
"\u0237\u0238\x07e\x02\x02\u0238\u0239\x07m\x02\x02\u0239\u023A\x07v\x02" + | ||
"\x02\u023A\u023B\x07k\x02\x02\u023B\u023C\x07o\x02\x02\u023C\u0254\x07" + | ||
"g\x02\x02\u023D\u023E\x07v\x02\x02\u023E\u023F\x07z\x02\x02\u023F\u0240" + | ||
"\x070\x02\x02\u0240\u0241\x07j\x02\x02\u0241\u0242\x07c\x02\x02\u0242" + | ||
"\u0243\x07u\x02\x02\u0243\u0244\x07j\x02\x02\u0244\u0245\x07v\x02\x02" + | ||
"\u0245\u0246\x07{\x02\x02\u0246\u0247\x07r\x02\x02\u0247\u0254\x07g\x02" + | ||
"\x02\u0248\u0249\x07v\x02\x02\u0249\u024A\x07z\x02\x02\u024A\u024B\x07" + | ||
"0\x02\x02\u024B\u024C\x07r\x02\x02\u024C\u024D\x07t\x02\x02\u024D\u024E" + | ||
"\x07g\x02\x02\u024E\u024F\x07k\x02\x02\u024F\u0250\x07o\x02\x02\u0250" + | ||
"\u0251\x07c\x02\x02\u0251\u0252\x07i\x02\x02\u0252\u0254\x07g\x02\x02" + | ||
"\u0253\u01D3\x03\x02\x02\x02\u0253\u01DD\x03\x02\x02\x02\u0253\u01EC\x03" + | ||
"\x02\x02\x02\u0253\u01FB\x03\x02\x02\x02\u0253\u0206\x03\x02\x02\x02\u0253" + | ||
"\u0211\x03\x02\x02\x02\u0253\u0219\x03\x02\x02\x02\u0253\u0224\x03\x02" + | ||
"\x02\x02\u0253\u0232\x03\x02\x02\x02\u0253\u023D\x03\x02\x02\x02\u0253" + | ||
"\u0248\x03\x02\x02\x02\u0254n\x03\x02\x02\x02\u0255\u0259\t\n\x02\x02" + | ||
"\u0256\u0258\t\v\x02\x02\u0257\u0256\x03\x02\x02\x02\u0258\u025B\x03\x02" + | ||
"\x02\x02\u0259\u0257\x03\x02\x02\x02\u0259\u025A\x03\x02\x02\x02\u025A" + | ||
"p\x03\x02\x02\x02\u025B\u0259\x03\x02\x02\x02\u025C\u025E\t\f\x02\x02" + | ||
"\u025D\u025C\x03\x02\x02\x02\u025E\u025F\x03\x02\x02\x02\u025F\u025D\x03" + | ||
"\x02\x02\x02\u025F\u0260\x03\x02\x02\x02\u0260\u0261\x03\x02\x02\x02\u0261" + | ||
"\u0262\b9\x02\x02\u0262r\x03\x02\x02\x02\u0263\u0264\x071\x02\x02\u0264" + | ||
"\u0265\x07,\x02\x02\u0265\u0269\x03\x02\x02\x02\u0266\u0268\v\x02\x02" + | ||
"\x02\u0267\u0266\x03\x02\x02\x02\u0268\u026B\x03\x02\x02\x02\u0269\u026A" + | ||
"\x03\x02\x02\x02\u0269\u0267\x03\x02\x02\x02\u026A\u026C\x03\x02\x02\x02" + | ||
"\u026B\u0269\x03\x02\x02\x02\u026C\u026D\x07,\x02\x02\u026D\u026E\x07" + | ||
"1\x02\x02\u026E\u026F\x03\x02\x02\x02\u026F\u0270\b:\x03\x02\u0270t\x03" + | ||
"\x02\x02\x02\u0271\u0272\x071\x02\x02\u0272\u0273\x071\x02\x02\u0273\u0277" + | ||
"\x03\x02\x02\x02\u0274\u0276\n\r\x02\x02\u0275\u0274\x03\x02\x02\x02\u0276" + | ||
"\u0279\x03\x02\x02\x02\u0277\u0275\x03\x02\x02\x02\u0277\u0278\x03\x02" + | ||
"\x02\x02\u0278\u027A\x03\x02\x02\x02\u0279\u0277\x03\x02\x02\x02\u027A" + | ||
"\u027B\b;\x03\x02\u027Bv\x03\x02\x02\x02\x1A\x02\u0129\u012F\u0135\u0140" + | ||
"\u017B\u017E\u0183\u0189\u018B\u0194\u019A\u01A1\u01A3\u01AB\u01AD\u01B1" + | ||
"\u01C1\u01D1\u0253\u0259\u025F\u0269\u0277\x04\b\x02\x02\x02\x03\x02"; | ||
CashScriptLexer._serializedATN = Utils.join([ | ||
@@ -427,0 +432,0 @@ CashScriptLexer._serializedATNSegment0, |
@@ -1,2 +0,3 @@ | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.7.3-SNAPSHOT | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.9.0-SNAPSHOT | ||
export {}; | ||
//# sourceMappingURL=CashScriptListener.js.map |
import { ATN } from "antlr4ts/atn/ATN"; | ||
import { FailedPredicateException } from "antlr4ts/FailedPredicateException"; | ||
import { Parser } from "antlr4ts/Parser"; | ||
@@ -62,9 +63,10 @@ import { ParserRuleContext } from "antlr4ts/ParserRuleContext"; | ||
static readonly StringLiteral = 50; | ||
static readonly HexLiteral = 51; | ||
static readonly TxVar = 52; | ||
static readonly PreimageField = 53; | ||
static readonly Identifier = 54; | ||
static readonly WHITESPACE = 55; | ||
static readonly COMMENT = 56; | ||
static readonly LINE_COMMENT = 57; | ||
static readonly DateLiteral = 51; | ||
static readonly HexLiteral = 52; | ||
static readonly TxVar = 53; | ||
static readonly PreimageField = 54; | ||
static readonly Identifier = 55; | ||
static readonly WHITESPACE = 56; | ||
static readonly COMMENT = 57; | ||
static readonly LINE_COMMENT = 58; | ||
static readonly RULE_sourceFile = 0; | ||
@@ -101,2 +103,3 @@ static readonly RULE_pragmaDirective = 1; | ||
get serializedATN(): string; | ||
protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException; | ||
constructor(input: TokenStream); | ||
@@ -411,2 +414,3 @@ sourceFile(): SourceFileContext; | ||
StringLiteral(): TerminalNode | undefined; | ||
DateLiteral(): TerminalNode | undefined; | ||
HexLiteral(): TerminalNode | undefined; | ||
@@ -413,0 +417,0 @@ constructor(parent: ParserRuleContext | undefined, invokingState: number); |
@@ -1,2 +0,3 @@ | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.7.3-SNAPSHOT | ||
// Generated from src/grammar/CashScript.g4 by ANTLR 4.9.0-SNAPSHOT | ||
export {}; | ||
//# sourceMappingURL=CashScriptVisitor.js.map |
export * from './Errors'; | ||
export { Artifact, AbiFunction, AbiInput } from './artifact/Artifact'; | ||
export { Op, Script } from './generation/Script'; | ||
export { PrimitiveType, Type, BytesType, ArrayType, TupleType, parseType, } from './ast/Type'; | ||
export { Data, Artifacts, CashCompiler, } from './util'; | ||
export declare const version = "0.5.7"; | ||
export * as utils from '@cashscript/utils'; | ||
export { compileFile, compileString } from './compiler'; | ||
export declare const version = "0.6.0"; |
export * from './Errors'; | ||
export { Op } from './generation/Script'; | ||
export { PrimitiveType, BytesType, ArrayType, TupleType, parseType, } from './ast/Type'; | ||
export { Data, Artifacts, CashCompiler, } from './util'; | ||
export const version = '0.5.7'; | ||
export * as utils from '@cashscript/utils'; | ||
export { compileFile, compileString } from './compiler'; | ||
export const version = '0.6.0'; | ||
//# sourceMappingURL=index.js.map |
@@ -1,2 +0,2 @@ | ||
import { Node, ContractNode, ParameterNode, VariableDefinitionNode, FunctionDefinitionNode, AssignNode, IdentifierNode, BranchNode, CastNode, FunctionCallNode, UnaryOpNode, BinaryOpNode, BoolLiteralNode, IntLiteralNode, HexLiteralNode, StringLiteralNode, BlockNode, TimeOpNode, ArrayNode, TupleIndexOpNode, RequireNode } from '../ast/AST'; | ||
import { Node, ContractNode, ParameterNode, VariableDefinitionNode, FunctionDefinitionNode, AssignNode, IdentifierNode, BranchNode, CastNode, FunctionCallNode, UnaryOpNode, BinaryOpNode, BoolLiteralNode, IntLiteralNode, HexLiteralNode, StringLiteralNode, BlockNode, TimeOpNode, ArrayNode, TupleIndexOpNode, RequireNode, InstantiationNode } from '../ast/AST'; | ||
import AstTraversal from '../ast/AstTraversal'; | ||
@@ -23,2 +23,3 @@ export default class OutputSourceCodeTraversal extends AstTraversal { | ||
visitFunctionCall(node: FunctionCallNode): Node; | ||
visitInstantiation(node: InstantiationNode): Node; | ||
visitTupleIndexOp(node: TupleIndexOpNode): Node; | ||
@@ -25,0 +26,0 @@ visitBinaryOp(node: BinaryOpNode): Node; |
@@ -123,2 +123,10 @@ import { binToHex } from '@bitauth/libauth'; | ||
} | ||
visitInstantiation(node) { | ||
this.addOutput('new '); | ||
node.identifier = this.visit(node.identifier); | ||
this.addOutput('('); | ||
node.parameters = this.visitCommaList(node.parameters); | ||
this.addOutput(')'); | ||
return node; | ||
} | ||
visitTupleIndexOp(node) { | ||
@@ -125,0 +133,0 @@ node.tuple = this.visit(node.tuple); |
@@ -0,4 +1,4 @@ | ||
import { PrimitiveType, explicitlyCastable, implicitlyCastable, implicitlyCastableSignature, resultingType, arrayType, ArrayType, TupleType, BytesType, } from '@cashscript/utils'; | ||
import AstTraversal from '../ast/AstTraversal'; | ||
import { InvalidParameterTypeError, UnequalTypeError, UnsupportedTypeError, CastTypeError, TypeError, AssignTypeError, ArrayElementError, IndexOutOfBoundsError, CastSizeError, } from '../Errors'; | ||
import { PrimitiveType, explicitlyCastable, implicitlyCastable, implicitlyCastableSignature, resultingType, arrayType, ArrayType, TupleType, BytesType, } from '../ast/Type'; | ||
import { BinaryOperator, UnaryOperator } from '../ast/Operator'; | ||
@@ -5,0 +5,0 @@ import { GlobalFunction } from '../ast/Globals'; |
{ | ||
"name": "cashc", | ||
"version": "0.5.7", | ||
"version": "0.6.0", | ||
"description": "Compile Bitcoin Cash contracts to Bitcoin Cash Script or artifacts", | ||
@@ -49,15 +49,15 @@ "keywords": [ | ||
"dependencies": { | ||
"@bitauth/libauth": "^1.17.2", | ||
"@types/semver": "^6.0.2", | ||
"antlr4ts": "^0.5.0-alpha.3", | ||
"commander": "^6.0.0", | ||
"semver": "^6.3.0" | ||
"@bitauth/libauth": "^1.18.1", | ||
"@cashscript/utils": "^0.6.0", | ||
"antlr4ts": "^0.5.0-alpha.4", | ||
"commander": "^7.1.0", | ||
"semver": "^7.3.4" | ||
}, | ||
"devDependencies": { | ||
"delay": "^4.3.0", | ||
"eslint": "^6.6.0", | ||
"jest": "^24.9.0", | ||
"ts-jest": "^24.3.0", | ||
"typescript": "3.7.5" | ||
"@types/semver": "^7.3.4", | ||
"eslint": "^7.20.0", | ||
"jest": "^26.6.3", | ||
"ts-jest": "^26.5.1", | ||
"typescript": "^4.1.5" | ||
} | ||
} |
@@ -17,3 +17,3 @@ # CashScript | ||
## The CashScript Compiler | ||
CashScript features a compiler as a standalone command line tool, called `cashc`. It can be installed through npm and used to compile `.cash` files into `.json` artifact files. These artifact files can be imported into the CashScript JavaScript SDK (or other SDKs in the future). Note that the CashScript SDK also has a function to import and compile `.cash` files directly, so it is not required to use the `cashc` command line tool. | ||
CashScript features a compiler as a standalone command line tool, called `cashc`. It can be installed through npm and used to compile `.cash` files into `.json` artifact files. These artifact files can be imported into the CashScript JavaScript SDK (or other SDKs in the future). The `cashc` NPM package can also be imported inside JavaScript files to compile `.cash` files without using the command line tool. | ||
@@ -37,10 +37,4 @@ ### Installation | ||
--size, -s Display the size in bytes of the compiled bytecode [boolean] | ||
--args, -a List of constructor arguments to pass into the contract. Can | ||
only be used in combination with either the --hex or --asm | ||
flags. When compiling to a JSON artifact, contract | ||
instantiation should be done through the CashScript SDK. Note | ||
that NO type checking is performed by the cashc CLI, so it is | ||
safer to use the CashScript SDK. [array] | ||
--help Show help [boolean] | ||
--version Show version number [boolean] | ||
``` |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
639759
111
15336
39
+ Added@cashscript/utils@^0.6.0
+ Added@cashscript/utils@0.6.5(transitive)
+ Addedcommander@7.2.0(transitive)
+ Addedhash.js@1.1.7(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedminimalistic-assert@1.0.1(transitive)
+ Addedsemver@7.6.3(transitive)
- Removed@types/semver@^6.0.2
- Removed@types/semver@6.2.7(transitive)
- Removedcommander@6.2.1(transitive)
- Removedsemver@6.3.1(transitive)
Updated@bitauth/libauth@^1.18.1
Updatedantlr4ts@^0.5.0-alpha.4
Updatedcommander@^7.1.0
Updatedsemver@^7.3.4