{"version":3,"sources":["src/js/plugin-prelude.js","build/js/tree/compiler/main.js","node_modules/browserify/lib/_empty.js","node_modules/browserify/node_modules/path-browserify/index.js","node_modules/browserify/node_modules/process/browser.js","node_modules/browserify/node_modules/vm-browserify/index.js","node_modules/browserify/node_modules/vm-browserify/node_modules/indexof/index.js","node_modules/coffee-script/lib/coffee-script/coffee-script.js","node_modules/coffee-script/lib/coffee-script/helpers.js","node_modules/coffee-script/lib/coffee-script/lexer.js","node_modules/coffee-script/lib/coffee-script/nodes.js","node_modules/coffee-script/lib/coffee-script/parser.js","node_modules/coffee-script/lib/coffee-script/register.js","node_modules/coffee-script/lib/coffee-script/rewriter.js","node_modules/coffee-script/lib/coffee-script/scope.js","node_modules/coffee-script/lib/coffee-script/sourcemap.js","node_modules/eco/lib/compiler.js","node_modules/eco/lib/index.js","node_modules/eco/lib/preprocessor.js","node_modules/eco/lib/scanner.js","node_modules/eco/lib/util.js","node_modules/eco/node_modules/strscan/lib/strscan.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;AACA;AACA;;ACLA;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACxXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACn/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3uGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC9tBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"bokeh-compiler.js","sourceRoot":"/source/","sourcesContent":["(function outer(modules, cache, entry) {\n  if (typeof Bokeh !== \"undefined\") {\n    for (var name in modules) {\n      Bokeh.require.modules[name] = modules[name];\n    }\n\n    for (var i = 0; i < entry.length; i++) {\n        Bokeh.Models.register_locations(Bokeh.require(entry[i]));\n    }\n  } else {\n    throw new Error(\"Cannot find Bokeh. You have to load it prior to loading plugins.\");\n  }\n})\n","var coffee, eco;\n\ncoffee = require(\"coffee-script\");\n\neco = require(\"eco\");\n","","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n  return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n  var result = splitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n  var f = splitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nexports.extname = function(path) {\n  return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","// shim for using process in browser\n\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\n(function () {\n  try {\n    cachedSetTimeout = setTimeout;\n  } catch (e) {\n    cachedSetTimeout = function () {\n      throw new Error('setTimeout is not defined');\n    }\n  }\n  try {\n    cachedClearTimeout = clearTimeout;\n  } catch (e) {\n    cachedClearTimeout = function () {\n      throw new Error('clearTimeout is not defined');\n    }\n  }\n} ())\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = cachedSetTimeout.call(null, cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    cachedClearTimeout.call(null, timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        cachedSetTimeout.call(null, drainQueue, 0);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var indexOf = require('indexof');\n\nvar Object_keys = function (obj) {\n    if (Object.keys) return Object.keys(obj)\n    else {\n        var res = [];\n        for (var key in obj) res.push(key)\n        return res;\n    }\n};\n\nvar forEach = function (xs, fn) {\n    if (xs.forEach) return xs.forEach(fn)\n    else for (var i = 0; i < xs.length; i++) {\n        fn(xs[i], i, xs);\n    }\n};\n\nvar defineProp = (function() {\n    try {\n        Object.defineProperty({}, '_', {});\n        return function(obj, name, value) {\n            Object.defineProperty(obj, name, {\n                writable: true,\n                enumerable: false,\n                configurable: true,\n                value: value\n            })\n        };\n    } catch(e) {\n        return function(obj, name, value) {\n            obj[name] = value;\n        };\n    }\n}());\n\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',\n'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',\n'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',\n'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',\n'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\n\nfunction Context() {}\nContext.prototype = {};\n\nvar Script = exports.Script = function NodeScript (code) {\n    if (!(this instanceof Script)) return new Script(code);\n    this.code = code;\n};\n\nScript.prototype.runInContext = function (context) {\n    if (!(context instanceof Context)) {\n        throw new TypeError(\"needs a 'context' argument.\");\n    }\n    \n    var iframe = document.createElement('iframe');\n    if (!iframe.style) iframe.style = {};\n    iframe.style.display = 'none';\n    \n    document.body.appendChild(iframe);\n    \n    var win = iframe.contentWindow;\n    var wEval = win.eval, wExecScript = win.execScript;\n\n    if (!wEval && wExecScript) {\n        // win.eval() magically appears when this is called in IE:\n        wExecScript.call(win, 'null');\n        wEval = win.eval;\n    }\n    \n    forEach(Object_keys(context), function (key) {\n        win[key] = context[key];\n    });\n    forEach(globals, function (key) {\n        if (context[key]) {\n            win[key] = context[key];\n        }\n    });\n    \n    var winKeys = Object_keys(win);\n\n    var res = wEval.call(win, this.code);\n    \n    forEach(Object_keys(win), function (key) {\n        // Avoid copying circular objects like `top` and `window` by only\n        // updating existing context properties or new properties in the `win`\n        // that was only introduced after the eval.\n        if (key in context || indexOf(winKeys, key) === -1) {\n            context[key] = win[key];\n        }\n    });\n\n    forEach(globals, function (key) {\n        if (!(key in context)) {\n            defineProp(context, key, win[key]);\n        }\n    });\n    \n    document.body.removeChild(iframe);\n    \n    return res;\n};\n\nScript.prototype.runInThisContext = function () {\n    return eval(this.code); // maybe...\n};\n\nScript.prototype.runInNewContext = function (context) {\n    var ctx = Script.createContext(context);\n    var res = this.runInContext(ctx);\n\n    forEach(Object_keys(ctx), function (key) {\n        context[key] = ctx[key];\n    });\n\n    return res;\n};\n\nforEach(Object_keys(Script.prototype), function (name) {\n    exports[name] = Script[name] = function (code) {\n        var s = Script(code);\n        return s[name].apply(s, [].slice.call(arguments, 1));\n    };\n});\n\nexports.createScript = function (code) {\n    return exports.Script(code);\n};\n\nexports.createContext = Script.createContext = function (context) {\n    var copy = new Context();\n    if(typeof context === 'object') {\n        forEach(Object_keys(context), function (key) {\n            copy[key] = context[key];\n        });\n    }\n    return copy;\n};\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n  if (indexOf) return arr.indexOf(obj);\n  for (var i = 0; i < arr.length; ++i) {\n    if (arr[i] === obj) return i;\n  }\n  return -1;\n};","// Generated by CoffeeScript 1.10.0\n(function() {\n  var Lexer, SourceMap, base, compile, ext, formatSourcePosition, fs, getSourceMap, helpers, i, len, lexer, parser, path, ref, sourceMaps, vm, withPrettyErrors,\n    hasProp = {}.hasOwnProperty,\n    indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n  fs = require('fs');\n\n  vm = require('vm');\n\n  path = require('path');\n\n  Lexer = require('./lexer').Lexer;\n\n  parser = require('./parser').parser;\n\n  helpers = require('./helpers');\n\n  SourceMap = require('./sourcemap');\n\n  exports.VERSION = '1.10.0';\n\n  exports.FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md'];\n\n  exports.helpers = helpers;\n\n  withPrettyErrors = function(fn) {\n    return function(code, options) {\n      var err, error;\n      if (options == null) {\n        options = {};\n      }\n      try {\n        return fn.call(this, code, options);\n      } catch (error) {\n        err = error;\n        if (typeof code !== 'string') {\n          throw err;\n        }\n        throw helpers.updateSyntaxError(err, code, options.filename);\n      }\n    };\n  };\n\n  exports.compile = compile = withPrettyErrors(function(code, options) {\n    var answer, currentColumn, currentLine, extend, fragment, fragments, header, i, js, len, map, merge, newLines, token, tokens;\n    merge = helpers.merge, extend = helpers.extend;\n    options = extend({}, options);\n    if (options.sourceMap) {\n      map = new SourceMap;\n    }\n    tokens = lexer.tokenize(code, options);\n    options.referencedVars = (function() {\n      var i, len, results;\n      results = [];\n      for (i = 0, len = tokens.length; i < len; i++) {\n        token = tokens[i];\n        if (token.variable) {\n          results.push(token[1]);\n        }\n      }\n      return results;\n    })();\n    fragments = parser.parse(tokens).compileToFragments(options);\n    currentLine = 0;\n    if (options.header) {\n      currentLine += 1;\n    }\n    if (options.shiftLine) {\n      currentLine += 1;\n    }\n    currentColumn = 0;\n    js = \"\";\n    for (i = 0, len = fragments.length; i < len; i++) {\n      fragment = fragments[i];\n      if (options.sourceMap) {\n        if (fragment.locationData && !/^[;\\s]*$/.test(fragment.code)) {\n          map.add([fragment.locationData.first_line, fragment.locationData.first_column], [currentLine, currentColumn], {\n            noReplace: true\n          });\n        }\n        newLines = helpers.count(fragment.code, \"\\n\");\n        currentLine += newLines;\n        if (newLines) {\n          currentColumn = fragment.code.length - (fragment.code.lastIndexOf(\"\\n\") + 1);\n        } else {\n          currentColumn += fragment.code.length;\n        }\n      }\n      js += fragment.code;\n    }\n    if (options.header) {\n      header = \"Generated by CoffeeScript \" + this.VERSION;\n      js = \"// \" + header + \"\\n\" + js;\n    }\n    if (options.sourceMap) {\n      answer = {\n        js: js\n      };\n      answer.sourceMap = map;\n      answer.v3SourceMap = map.generate(options, code);\n      return answer;\n    } else {\n      return js;\n    }\n  });\n\n  exports.tokens = withPrettyErrors(function(code, options) {\n    return lexer.tokenize(code, options);\n  });\n\n  exports.nodes = withPrettyErrors(function(source, options) {\n    if (typeof source === 'string') {\n      return parser.parse(lexer.tokenize(source, options));\n    } else {\n      return parser.parse(source);\n    }\n  });\n\n  exports.run = function(code, options) {\n    var answer, dir, mainModule, ref;\n    if (options == null) {\n      options = {};\n    }\n    mainModule = require.main;\n    mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : '.';\n    mainModule.moduleCache && (mainModule.moduleCache = {});\n    dir = options.filename ? path.dirname(fs.realpathSync(options.filename)) : fs.realpathSync('.');\n    mainModule.paths = require('module')._nodeModulePaths(dir);\n    if (!helpers.isCoffee(mainModule.filename) || require.extensions) {\n      answer = compile(code, options);\n      code = (ref = answer.js) != null ? ref : answer;\n    }\n    return mainModule._compile(code, mainModule.filename);\n  };\n\n  exports[\"eval\"] = function(code, options) {\n    var Module, _module, _require, createContext, i, isContext, js, k, len, o, r, ref, ref1, ref2, ref3, sandbox, v;\n    if (options == null) {\n      options = {};\n    }\n    if (!(code = code.trim())) {\n      return;\n    }\n    createContext = (ref = vm.Script.createContext) != null ? ref : vm.createContext;\n    isContext = (ref1 = vm.isContext) != null ? ref1 : function(ctx) {\n      return options.sandbox instanceof createContext().constructor;\n    };\n    if (createContext) {\n      if (options.sandbox != null) {\n        if (isContext(options.sandbox)) {\n          sandbox = options.sandbox;\n        } else {\n          sandbox = createContext();\n          ref2 = options.sandbox;\n          for (k in ref2) {\n            if (!hasProp.call(ref2, k)) continue;\n            v = ref2[k];\n            sandbox[k] = v;\n          }\n        }\n        sandbox.global = sandbox.root = sandbox.GLOBAL = sandbox;\n      } else {\n        sandbox = global;\n      }\n      sandbox.__filename = options.filename || 'eval';\n      sandbox.__dirname = path.dirname(sandbox.__filename);\n      if (!(sandbox !== global || sandbox.module || sandbox.require)) {\n        Module = require('module');\n        sandbox.module = _module = new Module(options.modulename || 'eval');\n        sandbox.require = _require = function(path) {\n          return Module._load(path, _module, true);\n        };\n        _module.filename = sandbox.__filename;\n        ref3 = Object.getOwnPropertyNames(require);\n        for (i = 0, len = ref3.length; i < len; i++) {\n          r = ref3[i];\n          if (r !== 'paths' && r !== 'arguments' && r !== 'caller') {\n            _require[r] = require[r];\n          }\n        }\n        _require.paths = _module.paths = Module._nodeModulePaths(process.cwd());\n        _require.resolve = function(request) {\n          return Module._resolveFilename(request, _module);\n        };\n      }\n    }\n    o = {};\n    for (k in options) {\n      if (!hasProp.call(options, k)) continue;\n      v = options[k];\n      o[k] = v;\n    }\n    o.bare = true;\n    js = compile(code, o);\n    if (sandbox === global) {\n      return vm.runInThisContext(js);\n    } else {\n      return vm.runInContext(js, sandbox);\n    }\n  };\n\n  exports.register = function() {\n    return require('./register');\n  };\n\n  if (require.extensions) {\n    ref = this.FILE_EXTENSIONS;\n    for (i = 0, len = ref.length; i < len; i++) {\n      ext = ref[i];\n      if ((base = require.extensions)[ext] == null) {\n        base[ext] = function() {\n          throw new Error(\"Use CoffeeScript.register() or require the coffee-script/register module to require \" + ext + \" files.\");\n        };\n      }\n    }\n  }\n\n  exports._compileFile = function(filename, sourceMap) {\n    var answer, err, error, raw, stripped;\n    if (sourceMap == null) {\n      sourceMap = false;\n    }\n    raw = fs.readFileSync(filename, 'utf8');\n    stripped = raw.charCodeAt(0) === 0xFEFF ? raw.substring(1) : raw;\n    try {\n      answer = compile(stripped, {\n        filename: filename,\n        sourceMap: sourceMap,\n        literate: helpers.isLiterate(filename)\n      });\n    } catch (error) {\n      err = error;\n      throw helpers.updateSyntaxError(err, stripped, filename);\n    }\n    return answer;\n  };\n\n  lexer = new Lexer;\n\n  parser.lexer = {\n    lex: function() {\n      var tag, token;\n      token = parser.tokens[this.pos++];\n      if (token) {\n        tag = token[0], this.yytext = token[1], this.yylloc = token[2];\n        parser.errorToken = token.origin || token;\n        this.yylineno = this.yylloc.first_line;\n      } else {\n        tag = '';\n      }\n      return tag;\n    },\n    setInput: function(tokens) {\n      parser.tokens = tokens;\n      return this.pos = 0;\n    },\n    upcomingInput: function() {\n      return \"\";\n    }\n  };\n\n  parser.yy = require('./nodes');\n\n  parser.yy.parseError = function(message, arg) {\n    var errorLoc, errorTag, errorText, errorToken, token, tokens;\n    token = arg.token;\n    errorToken = parser.errorToken, tokens = parser.tokens;\n    errorTag = errorToken[0], errorText = errorToken[1], errorLoc = errorToken[2];\n    errorText = (function() {\n      switch (false) {\n        case errorToken !== tokens[tokens.length - 1]:\n          return 'end of input';\n        case errorTag !== 'INDENT' && errorTag !== 'OUTDENT':\n          return 'indentation';\n        case errorTag !== 'IDENTIFIER' && errorTag !== 'NUMBER' && errorTag !== 'STRING' && errorTag !== 'STRING_START' && errorTag !== 'REGEX' && errorTag !== 'REGEX_START':\n          return errorTag.replace(/_START$/, '').toLowerCase();\n        default:\n          return helpers.nameWhitespaceCharacter(errorText);\n      }\n    })();\n    return helpers.throwSyntaxError(\"unexpected \" + errorText, errorLoc);\n  };\n\n  formatSourcePosition = function(frame, getSourceMapping) {\n    var as, column, fileLocation, fileName, functionName, isConstructor, isMethodCall, line, methodName, source, tp, typeName;\n    fileName = void 0;\n    fileLocation = '';\n    if (frame.isNative()) {\n      fileLocation = \"native\";\n    } else {\n      if (frame.isEval()) {\n        fileName = frame.getScriptNameOrSourceURL();\n        if (!fileName) {\n          fileLocation = (frame.getEvalOrigin()) + \", \";\n        }\n      } else {\n        fileName = frame.getFileName();\n      }\n      fileName || (fileName = \"<anonymous>\");\n      line = frame.getLineNumber();\n      column = frame.getColumnNumber();\n      source = getSourceMapping(fileName, line, column);\n      fileLocation = source ? fileName + \":\" + source[0] + \":\" + source[1] : fileName + \":\" + line + \":\" + column;\n    }\n    functionName = frame.getFunctionName();\n    isConstructor = frame.isConstructor();\n    isMethodCall = !(frame.isToplevel() || isConstructor);\n    if (isMethodCall) {\n      methodName = frame.getMethodName();\n      typeName = frame.getTypeName();\n      if (functionName) {\n        tp = as = '';\n        if (typeName && functionName.indexOf(typeName)) {\n          tp = typeName + \".\";\n        }\n        if (methodName && functionName.indexOf(\".\" + methodName) !== functionName.length - methodName.length - 1) {\n          as = \" [as \" + methodName + \"]\";\n        }\n        return \"\" + tp + functionName + as + \" (\" + fileLocation + \")\";\n      } else {\n        return typeName + \".\" + (methodName || '<anonymous>') + \" (\" + fileLocation + \")\";\n      }\n    } else if (isConstructor) {\n      return \"new \" + (functionName || '<anonymous>') + \" (\" + fileLocation + \")\";\n    } else if (functionName) {\n      return functionName + \" (\" + fileLocation + \")\";\n    } else {\n      return fileLocation;\n    }\n  };\n\n  sourceMaps = {};\n\n  getSourceMap = function(filename) {\n    var answer, ref1;\n    if (sourceMaps[filename]) {\n      return sourceMaps[filename];\n    }\n    if (ref1 = path != null ? path.extname(filename) : void 0, indexOf.call(exports.FILE_EXTENSIONS, ref1) < 0) {\n      return;\n    }\n    answer = exports._compileFile(filename, true);\n    return sourceMaps[filename] = answer.sourceMap;\n  };\n\n  Error.prepareStackTrace = function(err, stack) {\n    var frame, frames, getSourceMapping;\n    getSourceMapping = function(filename, line, column) {\n      var answer, sourceMap;\n      sourceMap = getSourceMap(filename);\n      if (sourceMap) {\n        answer = sourceMap.sourceLocation([line - 1, column - 1]);\n      }\n      if (answer) {\n        return [answer[0] + 1, answer[1] + 1];\n      } else {\n        return null;\n      }\n    };\n    frames = (function() {\n      var j, len1, results;\n      results = [];\n      for (j = 0, len1 = stack.length; j < len1; j++) {\n        frame = stack[j];\n        if (frame.getFunction() === exports.run) {\n          break;\n        }\n        results.push(\"  at \" + (formatSourcePosition(frame, getSourceMapping)));\n      }\n      return results;\n    })();\n    return (err.toString()) + \"\\n\" + (frames.join('\\n')) + \"\\n\";\n  };\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n  var buildLocationData, extend, flatten, ref, repeat, syntaxErrorToString;\n\n  exports.starts = function(string, literal, start) {\n    return literal === string.substr(start, literal.length);\n  };\n\n  exports.ends = function(string, literal, back) {\n    var len;\n    len = literal.length;\n    return literal === string.substr(string.length - len - (back || 0), len);\n  };\n\n  exports.repeat = repeat = function(str, n) {\n    var res;\n    res = '';\n    while (n > 0) {\n      if (n & 1) {\n        res += str;\n      }\n      n >>>= 1;\n      str += str;\n    }\n    return res;\n  };\n\n  exports.compact = function(array) {\n    var i, item, len1, results;\n    results = [];\n    for (i = 0, len1 = array.length; i < len1; i++) {\n      item = array[i];\n      if (item) {\n        results.push(item);\n      }\n    }\n    return results;\n  };\n\n  exports.count = function(string, substr) {\n    var num, pos;\n    num = pos = 0;\n    if (!substr.length) {\n      return 1 / 0;\n    }\n    while (pos = 1 + string.indexOf(substr, pos)) {\n      num++;\n    }\n    return num;\n  };\n\n  exports.merge = function(options, overrides) {\n    return extend(extend({}, options), overrides);\n  };\n\n  extend = exports.extend = function(object, properties) {\n    var key, val;\n    for (key in properties) {\n      val = properties[key];\n      object[key] = val;\n    }\n    return object;\n  };\n\n  exports.flatten = flatten = function(array) {\n    var element, flattened, i, len1;\n    flattened = [];\n    for (i = 0, len1 = array.length; i < len1; i++) {\n      element = array[i];\n      if ('[object Array]' === Object.prototype.toString.call(element)) {\n        flattened = flattened.concat(flatten(element));\n      } else {\n        flattened.push(element);\n      }\n    }\n    return flattened;\n  };\n\n  exports.del = function(obj, key) {\n    var val;\n    val = obj[key];\n    delete obj[key];\n    return val;\n  };\n\n  exports.some = (ref = Array.prototype.some) != null ? ref : function(fn) {\n    var e, i, len1;\n    for (i = 0, len1 = this.length; i < len1; i++) {\n      e = this[i];\n      if (fn(e)) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  exports.invertLiterate = function(code) {\n    var line, lines, maybe_code;\n    maybe_code = true;\n    lines = (function() {\n      var i, len1, ref1, results;\n      ref1 = code.split('\\n');\n      results = [];\n      for (i = 0, len1 = ref1.length; i < len1; i++) {\n        line = ref1[i];\n        if (maybe_code && /^([ ]{4}|[ ]{0,3}\\t)/.test(line)) {\n          results.push(line);\n        } else if (maybe_code = /^\\s*$/.test(line)) {\n          results.push(line);\n        } else {\n          results.push('# ' + line);\n        }\n      }\n      return results;\n    })();\n    return lines.join('\\n');\n  };\n\n  buildLocationData = function(first, last) {\n    if (!last) {\n      return first;\n    } else {\n      return {\n        first_line: first.first_line,\n        first_column: first.first_column,\n        last_line: last.last_line,\n        last_column: last.last_column\n      };\n    }\n  };\n\n  exports.addLocationDataFn = function(first, last) {\n    return function(obj) {\n      if (((typeof obj) === 'object') && (!!obj['updateLocationDataIfMissing'])) {\n        obj.updateLocationDataIfMissing(buildLocationData(first, last));\n      }\n      return obj;\n    };\n  };\n\n  exports.locationDataToString = function(obj) {\n    var locationData;\n    if ((\"2\" in obj) && (\"first_line\" in obj[2])) {\n      locationData = obj[2];\n    } else if (\"first_line\" in obj) {\n      locationData = obj;\n    }\n    if (locationData) {\n      return ((locationData.first_line + 1) + \":\" + (locationData.first_column + 1) + \"-\") + ((locationData.last_line + 1) + \":\" + (locationData.last_column + 1));\n    } else {\n      return \"No location data\";\n    }\n  };\n\n  exports.baseFileName = function(file, stripExt, useWinPathSep) {\n    var parts, pathSep;\n    if (stripExt == null) {\n      stripExt = false;\n    }\n    if (useWinPathSep == null) {\n      useWinPathSep = false;\n    }\n    pathSep = useWinPathSep ? /\\\\|\\// : /\\//;\n    parts = file.split(pathSep);\n    file = parts[parts.length - 1];\n    if (!(stripExt && file.indexOf('.') >= 0)) {\n      return file;\n    }\n    parts = file.split('.');\n    parts.pop();\n    if (parts[parts.length - 1] === 'coffee' && parts.length > 1) {\n      parts.pop();\n    }\n    return parts.join('.');\n  };\n\n  exports.isCoffee = function(file) {\n    return /\\.((lit)?coffee|coffee\\.md)$/.test(file);\n  };\n\n  exports.isLiterate = function(file) {\n    return /\\.(litcoffee|coffee\\.md)$/.test(file);\n  };\n\n  exports.throwSyntaxError = function(message, location) {\n    var error;\n    error = new SyntaxError(message);\n    error.location = location;\n    error.toString = syntaxErrorToString;\n    error.stack = error.toString();\n    throw error;\n  };\n\n  exports.updateSyntaxError = function(error, code, filename) {\n    if (error.toString === syntaxErrorToString) {\n      error.code || (error.code = code);\n      error.filename || (error.filename = filename);\n      error.stack = error.toString();\n    }\n    return error;\n  };\n\n  syntaxErrorToString = function() {\n    var codeLine, colorize, colorsEnabled, end, filename, first_column, first_line, last_column, last_line, marker, ref1, ref2, ref3, ref4, start;\n    if (!(this.code && this.location)) {\n      return Error.prototype.toString.call(this);\n    }\n    ref1 = this.location, first_line = ref1.first_line, first_column = ref1.first_column, last_line = ref1.last_line, last_column = ref1.last_column;\n    if (last_line == null) {\n      last_line = first_line;\n    }\n    if (last_column == null) {\n      last_column = first_column;\n    }\n    filename = this.filename || '[stdin]';\n    codeLine = this.code.split('\\n')[first_line];\n    start = first_column;\n    end = first_line === last_line ? last_column + 1 : codeLine.length;\n    marker = codeLine.slice(0, start).replace(/[^\\s]/g, ' ') + repeat('^', end - start);\n    if (typeof process !== \"undefined\" && process !== null) {\n      colorsEnabled = ((ref2 = process.stdout) != null ? ref2.isTTY : void 0) && !((ref3 = process.env) != null ? ref3.NODE_DISABLE_COLORS : void 0);\n    }\n    if ((ref4 = this.colorful) != null ? ref4 : colorsEnabled) {\n      colorize = function(str) {\n        return \"\\x1B[1;31m\" + str + \"\\x1B[0m\";\n      };\n      codeLine = codeLine.slice(0, start) + colorize(codeLine.slice(start, end)) + codeLine.slice(end);\n      marker = colorize(marker);\n    }\n    return filename + \":\" + (first_line + 1) + \":\" + (first_column + 1) + \": error: \" + this.message + \"\\n\" + codeLine + \"\\n\" + marker;\n  };\n\n  exports.nameWhitespaceCharacter = function(string) {\n    switch (string) {\n      case ' ':\n        return 'space';\n      case '\\n':\n        return 'newline';\n      case '\\r':\n        return 'carriage return';\n      case '\\t':\n        return 'tab';\n      default:\n        return string;\n    }\n  };\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n  var BOM, BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HERECOMMENT_ILLEGAL, HEREDOC_DOUBLE, HEREDOC_INDENT, HEREDOC_SINGLE, HEREGEX, HEREGEX_OMIT, IDENTIFIER, INDENTABLE_CLOSERS, INDEXABLE, INVALID_ESCAPE, INVERSES, JSTOKEN, JS_FORBIDDEN, JS_KEYWORDS, LEADING_BLANK_LINE, LINE_BREAK, LINE_CONTINUER, LOGIC, Lexer, MATH, MULTI_DENT, NOT_REGEX, NUMBER, OPERATOR, POSSIBLY_DIVISION, REGEX, REGEX_FLAGS, REGEX_ILLEGAL, RELATION, RESERVED, Rewriter, SHIFT, SIMPLE_STRING_OMIT, STRICT_PROSCRIBED, STRING_DOUBLE, STRING_OMIT, STRING_SINGLE, STRING_START, TRAILING_BLANK_LINE, TRAILING_SPACES, UNARY, UNARY_MATH, VALID_FLAGS, WHITESPACE, compact, count, invertLiterate, key, locationDataToString, ref, ref1, repeat, starts, throwSyntaxError,\n    indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n  ref = require('./rewriter'), Rewriter = ref.Rewriter, INVERSES = ref.INVERSES;\n\n  ref1 = require('./helpers'), count = ref1.count, starts = ref1.starts, compact = ref1.compact, repeat = ref1.repeat, invertLiterate = ref1.invertLiterate, locationDataToString = ref1.locationDataToString, throwSyntaxError = ref1.throwSyntaxError;\n\n  exports.Lexer = Lexer = (function() {\n    function Lexer() {}\n\n    Lexer.prototype.tokenize = function(code, opts) {\n      var consumed, end, i, ref2;\n      if (opts == null) {\n        opts = {};\n      }\n      this.literate = opts.literate;\n      this.indent = 0;\n      this.baseIndent = 0;\n      this.indebt = 0;\n      this.outdebt = 0;\n      this.indents = [];\n      this.ends = [];\n      this.tokens = [];\n      this.seenFor = false;\n      this.chunkLine = opts.line || 0;\n      this.chunkColumn = opts.column || 0;\n      code = this.clean(code);\n      i = 0;\n      while (this.chunk = code.slice(i)) {\n        consumed = this.identifierToken() || this.commentToken() || this.whitespaceToken() || this.lineToken() || this.stringToken() || this.numberToken() || this.regexToken() || this.jsToken() || this.literalToken();\n        ref2 = this.getLineAndColumnFromChunk(consumed), this.chunkLine = ref2[0], this.chunkColumn = ref2[1];\n        i += consumed;\n        if (opts.untilBalanced && this.ends.length === 0) {\n          return {\n            tokens: this.tokens,\n            index: i\n          };\n        }\n      }\n      this.closeIndentation();\n      if (end = this.ends.pop()) {\n        this.error(\"missing \" + end.tag, end.origin[2]);\n      }\n      if (opts.rewrite === false) {\n        return this.tokens;\n      }\n      return (new Rewriter).rewrite(this.tokens);\n    };\n\n    Lexer.prototype.clean = function(code) {\n      if (code.charCodeAt(0) === BOM) {\n        code = code.slice(1);\n      }\n      code = code.replace(/\\r/g, '').replace(TRAILING_SPACES, '');\n      if (WHITESPACE.test(code)) {\n        code = \"\\n\" + code;\n        this.chunkLine--;\n      }\n      if (this.literate) {\n        code = invertLiterate(code);\n      }\n      return code;\n    };\n\n    Lexer.prototype.identifierToken = function() {\n      var alias, colon, colonOffset, forcedIdentifier, id, idLength, input, match, poppedToken, prev, ref2, ref3, ref4, ref5, tag, tagToken;\n      if (!(match = IDENTIFIER.exec(this.chunk))) {\n        return 0;\n      }\n      input = match[0], id = match[1], colon = match[2];\n      idLength = id.length;\n      poppedToken = void 0;\n      if (id === 'own' && this.tag() === 'FOR') {\n        this.token('OWN', id);\n        return id.length;\n      }\n      if (id === 'from' && this.tag() === 'YIELD') {\n        this.token('FROM', id);\n        return id.length;\n      }\n      ref2 = this.tokens, prev = ref2[ref2.length - 1];\n      forcedIdentifier = colon || (prev != null) && (((ref3 = prev[0]) === '.' || ref3 === '?.' || ref3 === '::' || ref3 === '?::') || !prev.spaced && prev[0] === '@');\n      tag = 'IDENTIFIER';\n      if (!forcedIdentifier && (indexOf.call(JS_KEYWORDS, id) >= 0 || indexOf.call(COFFEE_KEYWORDS, id) >= 0)) {\n        tag = id.toUpperCase();\n        if (tag === 'WHEN' && (ref4 = this.tag(), indexOf.call(LINE_BREAK, ref4) >= 0)) {\n          tag = 'LEADING_WHEN';\n        } else if (tag === 'FOR') {\n          this.seenFor = true;\n        } else if (tag === 'UNLESS') {\n          tag = 'IF';\n        } else if (indexOf.call(UNARY, tag) >= 0) {\n          tag = 'UNARY';\n        } else if (indexOf.call(RELATION, tag) >= 0) {\n          if (tag !== 'INSTANCEOF' && this.seenFor) {\n            tag = 'FOR' + tag;\n            this.seenFor = false;\n          } else {\n            tag = 'RELATION';\n            if (this.value() === '!') {\n              poppedToken = this.tokens.pop();\n              id = '!' + id;\n            }\n          }\n        }\n      }\n      if (indexOf.call(JS_FORBIDDEN, id) >= 0) {\n        if (forcedIdentifier) {\n          tag = 'IDENTIFIER';\n          id = new String(id);\n          id.reserved = true;\n        } else if (indexOf.call(RESERVED, id) >= 0) {\n          this.error(\"reserved word '\" + id + \"'\", {\n            length: id.length\n          });\n        }\n      }\n      if (!forcedIdentifier) {\n        if (indexOf.call(COFFEE_ALIASES, id) >= 0) {\n          alias = id;\n          id = COFFEE_ALIAS_MAP[id];\n        }\n        tag = (function() {\n          switch (id) {\n            case '!':\n              return 'UNARY';\n            case '==':\n            case '!=':\n              return 'COMPARE';\n            case '&&':\n            case '||':\n              return 'LOGIC';\n            case 'true':\n            case 'false':\n              return 'BOOL';\n            case 'break':\n            case 'continue':\n              return 'STATEMENT';\n            default:\n              return tag;\n          }\n        })();\n      }\n      tagToken = this.token(tag, id, 0, idLength);\n      if (alias) {\n        tagToken.origin = [tag, alias, tagToken[2]];\n      }\n      tagToken.variable = !forcedIdentifier;\n      if (poppedToken) {\n        ref5 = [poppedToken[2].first_line, poppedToken[2].first_column], tagToken[2].first_line = ref5[0], tagToken[2].first_column = ref5[1];\n      }\n      if (colon) {\n        colonOffset = input.lastIndexOf(':');\n        this.token(':', ':', colonOffset, colon.length);\n      }\n      return input.length;\n    };\n\n    Lexer.prototype.numberToken = function() {\n      var binaryLiteral, lexedLength, match, number, octalLiteral;\n      if (!(match = NUMBER.exec(this.chunk))) {\n        return 0;\n      }\n      number = match[0];\n      lexedLength = number.length;\n      if (/^0[BOX]/.test(number)) {\n        this.error(\"radix prefix in '\" + number + \"' must be lowercase\", {\n          offset: 1\n        });\n      } else if (/E/.test(number) && !/^0x/.test(number)) {\n        this.error(\"exponential notation in '\" + number + \"' must be indicated with a lowercase 'e'\", {\n          offset: number.indexOf('E')\n        });\n      } else if (/^0\\d*[89]/.test(number)) {\n        this.error(\"decimal literal '\" + number + \"' must not be prefixed with '0'\", {\n          length: lexedLength\n        });\n      } else if (/^0\\d+/.test(number)) {\n        this.error(\"octal literal '\" + number + \"' must be prefixed with '0o'\", {\n          length: lexedLength\n        });\n      }\n      if (octalLiteral = /^0o([0-7]+)/.exec(number)) {\n        number = '0x' + parseInt(octalLiteral[1], 8).toString(16);\n      }\n      if (binaryLiteral = /^0b([01]+)/.exec(number)) {\n        number = '0x' + parseInt(binaryLiteral[1], 2).toString(16);\n      }\n      this.token('NUMBER', number, 0, lexedLength);\n      return lexedLength;\n    };\n\n    Lexer.prototype.stringToken = function() {\n      var $, attempt, delimiter, doc, end, heredoc, i, indent, indentRegex, match, quote, ref2, ref3, regex, token, tokens;\n      quote = (STRING_START.exec(this.chunk) || [])[0];\n      if (!quote) {\n        return 0;\n      }\n      regex = (function() {\n        switch (quote) {\n          case \"'\":\n            return STRING_SINGLE;\n          case '\"':\n            return STRING_DOUBLE;\n          case \"'''\":\n            return HEREDOC_SINGLE;\n          case '\"\"\"':\n            return HEREDOC_DOUBLE;\n        }\n      })();\n      heredoc = quote.length === 3;\n      ref2 = this.matchWithInterpolations(regex, quote), tokens = ref2.tokens, end = ref2.index;\n      $ = tokens.length - 1;\n      delimiter = quote.charAt(0);\n      if (heredoc) {\n        indent = null;\n        doc = ((function() {\n          var j, len, results;\n          results = [];\n          for (i = j = 0, len = tokens.length; j < len; i = ++j) {\n            token = tokens[i];\n            if (token[0] === 'NEOSTRING') {\n              results.push(token[1]);\n            }\n          }\n          return results;\n        })()).join('#{}');\n        while (match = HEREDOC_INDENT.exec(doc)) {\n          attempt = match[1];\n          if (indent === null || (0 < (ref3 = attempt.length) && ref3 < indent.length)) {\n            indent = attempt;\n          }\n        }\n        if (indent) {\n          indentRegex = RegExp(\"^\" + indent, \"gm\");\n        }\n        this.mergeInterpolationTokens(tokens, {\n          delimiter: delimiter\n        }, (function(_this) {\n          return function(value, i) {\n            value = _this.formatString(value);\n            if (i === 0) {\n              value = value.replace(LEADING_BLANK_LINE, '');\n            }\n            if (i === $) {\n              value = value.replace(TRAILING_BLANK_LINE, '');\n            }\n            if (indentRegex) {\n              value = value.replace(indentRegex, '');\n            }\n            return value;\n          };\n        })(this));\n      } else {\n        this.mergeInterpolationTokens(tokens, {\n          delimiter: delimiter\n        }, (function(_this) {\n          return function(value, i) {\n            value = _this.formatString(value);\n            value = value.replace(SIMPLE_STRING_OMIT, function(match, offset) {\n              if ((i === 0 && offset === 0) || (i === $ && offset + match.length === value.length)) {\n                return '';\n              } else {\n                return ' ';\n              }\n            });\n            return value;\n          };\n        })(this));\n      }\n      return end;\n    };\n\n    Lexer.prototype.commentToken = function() {\n      var comment, here, match;\n      if (!(match = this.chunk.match(COMMENT))) {\n        return 0;\n      }\n      comment = match[0], here = match[1];\n      if (here) {\n        if (match = HERECOMMENT_ILLEGAL.exec(comment)) {\n          this.error(\"block comments cannot contain \" + match[0], {\n            offset: match.index,\n            length: match[0].length\n          });\n        }\n        if (here.indexOf('\\n') >= 0) {\n          here = here.replace(RegExp(\"\\\\n\" + (repeat(' ', this.indent)), \"g\"), '\\n');\n        }\n        this.token('HERECOMMENT', here, 0, comment.length);\n      }\n      return comment.length;\n    };\n\n    Lexer.prototype.jsToken = function() {\n      var match, script;\n      if (!(this.chunk.charAt(0) === '`' && (match = JSTOKEN.exec(this.chunk)))) {\n        return 0;\n      }\n      this.token('JS', (script = match[0]).slice(1, -1), 0, script.length);\n      return script.length;\n    };\n\n    Lexer.prototype.regexToken = function() {\n      var body, closed, end, flags, index, match, origin, prev, ref2, ref3, ref4, regex, tokens;\n      switch (false) {\n        case !(match = REGEX_ILLEGAL.exec(this.chunk)):\n          this.error(\"regular expressions cannot begin with \" + match[2], {\n            offset: match.index + match[1].length\n          });\n          break;\n        case !(match = this.matchWithInterpolations(HEREGEX, '///')):\n          tokens = match.tokens, index = match.index;\n          break;\n        case !(match = REGEX.exec(this.chunk)):\n          regex = match[0], body = match[1], closed = match[2];\n          this.validateEscapes(body, {\n            isRegex: true,\n            offsetInChunk: 1\n          });\n          index = regex.length;\n          ref2 = this.tokens, prev = ref2[ref2.length - 1];\n          if (prev) {\n            if (prev.spaced && (ref3 = prev[0], indexOf.call(CALLABLE, ref3) >= 0)) {\n              if (!closed || POSSIBLY_DIVISION.test(regex)) {\n                return 0;\n              }\n            } else if (ref4 = prev[0], indexOf.call(NOT_REGEX, ref4) >= 0) {\n              return 0;\n            }\n          }\n          if (!closed) {\n            this.error('missing / (unclosed regex)');\n          }\n          break;\n        default:\n          return 0;\n      }\n      flags = REGEX_FLAGS.exec(this.chunk.slice(index))[0];\n      end = index + flags.length;\n      origin = this.makeToken('REGEX', null, 0, end);\n      switch (false) {\n        case !!VALID_FLAGS.test(flags):\n          this.error(\"invalid regular expression flags \" + flags, {\n            offset: index,\n            length: flags.length\n          });\n          break;\n        case !(regex || tokens.length === 1):\n          if (body == null) {\n            body = this.formatHeregex(tokens[0][1]);\n          }\n          this.token('REGEX', \"\" + (this.makeDelimitedLiteral(body, {\n            delimiter: '/'\n          })) + flags, 0, end, origin);\n          break;\n        default:\n          this.token('REGEX_START', '(', 0, 0, origin);\n          this.token('IDENTIFIER', 'RegExp', 0, 0);\n          this.token('CALL_START', '(', 0, 0);\n          this.mergeInterpolationTokens(tokens, {\n            delimiter: '\"',\n            double: true\n          }, this.formatHeregex);\n          if (flags) {\n            this.token(',', ',', index, 0);\n            this.token('STRING', '\"' + flags + '\"', index, flags.length);\n          }\n          this.token(')', ')', end, 0);\n          this.token('REGEX_END', ')', end, 0);\n      }\n      return end;\n    };\n\n    Lexer.prototype.lineToken = function() {\n      var diff, indent, match, noNewlines, size;\n      if (!(match = MULTI_DENT.exec(this.chunk))) {\n        return 0;\n      }\n      indent = match[0];\n      this.seenFor = false;\n      size = indent.length - 1 - indent.lastIndexOf('\\n');\n      noNewlines = this.unfinished();\n      if (size - this.indebt === this.indent) {\n        if (noNewlines) {\n          this.suppressNewlines();\n        } else {\n          this.newlineToken(0);\n        }\n        return indent.length;\n      }\n      if (size > this.indent) {\n        if (noNewlines) {\n          this.indebt = size - this.indent;\n          this.suppressNewlines();\n          return indent.length;\n        }\n        if (!this.tokens.length) {\n          this.baseIndent = this.indent = size;\n          return indent.length;\n        }\n        diff = size - this.indent + this.outdebt;\n        this.token('INDENT', diff, indent.length - size, size);\n        this.indents.push(diff);\n        this.ends.push({\n          tag: 'OUTDENT'\n        });\n        this.outdebt = this.indebt = 0;\n        this.indent = size;\n      } else if (size < this.baseIndent) {\n        this.error('missing indentation', {\n          offset: indent.length\n        });\n      } else {\n        this.indebt = 0;\n        this.outdentToken(this.indent - size, noNewlines, indent.length);\n      }\n      return indent.length;\n    };\n\n    Lexer.prototype.outdentToken = function(moveOut, noNewlines, outdentLength) {\n      var decreasedIndent, dent, lastIndent, ref2;\n      decreasedIndent = this.indent - moveOut;\n      while (moveOut > 0) {\n        lastIndent = this.indents[this.indents.length - 1];\n        if (!lastIndent) {\n          moveOut = 0;\n        } else if (lastIndent === this.outdebt) {\n          moveOut -= this.outdebt;\n          this.outdebt = 0;\n        } else if (lastIndent < this.outdebt) {\n          this.outdebt -= lastIndent;\n          moveOut -= lastIndent;\n        } else {\n          dent = this.indents.pop() + this.outdebt;\n          if (outdentLength && (ref2 = this.chunk[outdentLength], indexOf.call(INDENTABLE_CLOSERS, ref2) >= 0)) {\n            decreasedIndent -= dent - moveOut;\n            moveOut = dent;\n          }\n          this.outdebt = 0;\n          this.pair('OUTDENT');\n          this.token('OUTDENT', moveOut, 0, outdentLength);\n          moveOut -= dent;\n        }\n      }\n      if (dent) {\n        this.outdebt -= moveOut;\n      }\n      while (this.value() === ';') {\n        this.tokens.pop();\n      }\n      if (!(this.tag() === 'TERMINATOR' || noNewlines)) {\n        this.token('TERMINATOR', '\\n', outdentLength, 0);\n      }\n      this.indent = decreasedIndent;\n      return this;\n    };\n\n    Lexer.prototype.whitespaceToken = function() {\n      var match, nline, prev, ref2;\n      if (!((match = WHITESPACE.exec(this.chunk)) || (nline = this.chunk.charAt(0) === '\\n'))) {\n        return 0;\n      }\n      ref2 = this.tokens, prev = ref2[ref2.length - 1];\n      if (prev) {\n        prev[match ? 'spaced' : 'newLine'] = true;\n      }\n      if (match) {\n        return match[0].length;\n      } else {\n        return 0;\n      }\n    };\n\n    Lexer.prototype.newlineToken = function(offset) {\n      while (this.value() === ';') {\n        this.tokens.pop();\n      }\n      if (this.tag() !== 'TERMINATOR') {\n        this.token('TERMINATOR', '\\n', offset, 0);\n      }\n      return this;\n    };\n\n    Lexer.prototype.suppressNewlines = function() {\n      if (this.value() === '\\\\') {\n        this.tokens.pop();\n      }\n      return this;\n    };\n\n    Lexer.prototype.literalToken = function() {\n      var match, prev, ref2, ref3, ref4, ref5, ref6, tag, token, value;\n      if (match = OPERATOR.exec(this.chunk)) {\n        value = match[0];\n        if (CODE.test(value)) {\n          this.tagParameters();\n        }\n      } else {\n        value = this.chunk.charAt(0);\n      }\n      tag = value;\n      ref2 = this.tokens, prev = ref2[ref2.length - 1];\n      if (value === '=' && prev) {\n        if (!prev[1].reserved && (ref3 = prev[1], indexOf.call(JS_FORBIDDEN, ref3) >= 0)) {\n          if (prev.origin) {\n            prev = prev.origin;\n          }\n          this.error(\"reserved word '\" + prev[1] + \"' can't be assigned\", prev[2]);\n        }\n        if ((ref4 = prev[1]) === '||' || ref4 === '&&') {\n          prev[0] = 'COMPOUND_ASSIGN';\n          prev[1] += '=';\n          return value.length;\n        }\n      }\n      if (value === ';') {\n        this.seenFor = false;\n        tag = 'TERMINATOR';\n      } else if (indexOf.call(MATH, value) >= 0) {\n        tag = 'MATH';\n      } else if (indexOf.call(COMPARE, value) >= 0) {\n        tag = 'COMPARE';\n      } else if (indexOf.call(COMPOUND_ASSIGN, value) >= 0) {\n        tag = 'COMPOUND_ASSIGN';\n      } else if (indexOf.call(UNARY, value) >= 0) {\n        tag = 'UNARY';\n      } else if (indexOf.call(UNARY_MATH, value) >= 0) {\n        tag = 'UNARY_MATH';\n      } else if (indexOf.call(SHIFT, value) >= 0) {\n        tag = 'SHIFT';\n      } else if (indexOf.call(LOGIC, value) >= 0 || value === '?' && (prev != null ? prev.spaced : void 0)) {\n        tag = 'LOGIC';\n      } else if (prev && !prev.spaced) {\n        if (value === '(' && (ref5 = prev[0], indexOf.call(CALLABLE, ref5) >= 0)) {\n          if (prev[0] === '?') {\n            prev[0] = 'FUNC_EXIST';\n          }\n          tag = 'CALL_START';\n        } else if (value === '[' && (ref6 = prev[0], indexOf.call(INDEXABLE, ref6) >= 0)) {\n          tag = 'INDEX_START';\n          switch (prev[0]) {\n            case '?':\n              prev[0] = 'INDEX_SOAK';\n          }\n        }\n      }\n      token = this.makeToken(tag, value);\n      switch (value) {\n        case '(':\n        case '{':\n        case '[':\n          this.ends.push({\n            tag: INVERSES[value],\n            origin: token\n          });\n          break;\n        case ')':\n        case '}':\n        case ']':\n          this.pair(value);\n      }\n      this.tokens.push(token);\n      return value.length;\n    };\n\n    Lexer.prototype.tagParameters = function() {\n      var i, stack, tok, tokens;\n      if (this.tag() !== ')') {\n        return this;\n      }\n      stack = [];\n      tokens = this.tokens;\n      i = tokens.length;\n      tokens[--i][0] = 'PARAM_END';\n      while (tok = tokens[--i]) {\n        switch (tok[0]) {\n          case ')':\n            stack.push(tok);\n            break;\n          case '(':\n          case 'CALL_START':\n            if (stack.length) {\n              stack.pop();\n            } else if (tok[0] === '(') {\n              tok[0] = 'PARAM_START';\n              return this;\n            } else {\n              return this;\n            }\n        }\n      }\n      return this;\n    };\n\n    Lexer.prototype.closeIndentation = function() {\n      return this.outdentToken(this.indent);\n    };\n\n    Lexer.prototype.matchWithInterpolations = function(regex, delimiter) {\n      var close, column, firstToken, index, lastToken, line, nested, offsetInChunk, open, ref2, ref3, ref4, str, strPart, tokens;\n      tokens = [];\n      offsetInChunk = delimiter.length;\n      if (this.chunk.slice(0, offsetInChunk) !== delimiter) {\n        return null;\n      }\n      str = this.chunk.slice(offsetInChunk);\n      while (true) {\n        strPart = regex.exec(str)[0];\n        this.validateEscapes(strPart, {\n          isRegex: delimiter.charAt(0) === '/',\n          offsetInChunk: offsetInChunk\n        });\n        tokens.push(this.makeToken('NEOSTRING', strPart, offsetInChunk));\n        str = str.slice(strPart.length);\n        offsetInChunk += strPart.length;\n        if (str.slice(0, 2) !== '#{') {\n          break;\n        }\n        ref2 = this.getLineAndColumnFromChunk(offsetInChunk + 1), line = ref2[0], column = ref2[1];\n        ref3 = new Lexer().tokenize(str.slice(1), {\n          line: line,\n          column: column,\n          untilBalanced: true\n        }), nested = ref3.tokens, index = ref3.index;\n        index += 1;\n        open = nested[0], close = nested[nested.length - 1];\n        open[0] = open[1] = '(';\n        close[0] = close[1] = ')';\n        close.origin = ['', 'end of interpolation', close[2]];\n        if (((ref4 = nested[1]) != null ? ref4[0] : void 0) === 'TERMINATOR') {\n          nested.splice(1, 1);\n        }\n        tokens.push(['TOKENS', nested]);\n        str = str.slice(index);\n        offsetInChunk += index;\n      }\n      if (str.slice(0, delimiter.length) !== delimiter) {\n        this.error(\"missing \" + delimiter, {\n          length: delimiter.length\n        });\n      }\n      firstToken = tokens[0], lastToken = tokens[tokens.length - 1];\n      firstToken[2].first_column -= delimiter.length;\n      lastToken[2].last_column += delimiter.length;\n      if (lastToken[1].length === 0) {\n        lastToken[2].last_column -= 1;\n      }\n      return {\n        tokens: tokens,\n        index: offsetInChunk + delimiter.length\n      };\n    };\n\n    Lexer.prototype.mergeInterpolationTokens = function(tokens, options, fn) {\n      var converted, firstEmptyStringIndex, firstIndex, i, j, lastToken, len, locationToken, lparen, plusToken, ref2, rparen, tag, token, tokensToPush, value;\n      if (tokens.length > 1) {\n        lparen = this.token('STRING_START', '(', 0, 0);\n      }\n      firstIndex = this.tokens.length;\n      for (i = j = 0, len = tokens.length; j < len; i = ++j) {\n        token = tokens[i];\n        tag = token[0], value = token[1];\n        switch (tag) {\n          case 'TOKENS':\n            if (value.length === 2) {\n              continue;\n            }\n            locationToken = value[0];\n            tokensToPush = value;\n            break;\n          case 'NEOSTRING':\n            converted = fn(token[1], i);\n            if (converted.length === 0) {\n              if (i === 0) {\n                firstEmptyStringIndex = this.tokens.length;\n              } else {\n                continue;\n              }\n            }\n            if (i === 2 && (firstEmptyStringIndex != null)) {\n              this.tokens.splice(firstEmptyStringIndex, 2);\n            }\n            token[0] = 'STRING';\n            token[1] = this.makeDelimitedLiteral(converted, options);\n            locationToken = token;\n            tokensToPush = [token];\n        }\n        if (this.tokens.length > firstIndex) {\n          plusToken = this.token('+', '+');\n          plusToken[2] = {\n            first_line: locationToken[2].first_line,\n            first_column: locationToken[2].first_column,\n            last_line: locationToken[2].first_line,\n            last_column: locationToken[2].first_column\n          };\n        }\n        (ref2 = this.tokens).push.apply(ref2, tokensToPush);\n      }\n      if (lparen) {\n        lastToken = tokens[tokens.length - 1];\n        lparen.origin = [\n          'STRING', null, {\n            first_line: lparen[2].first_line,\n            first_column: lparen[2].first_column,\n            last_line: lastToken[2].last_line,\n            last_column: lastToken[2].last_column\n          }\n        ];\n        rparen = this.token('STRING_END', ')');\n        return rparen[2] = {\n          first_line: lastToken[2].last_line,\n          first_column: lastToken[2].last_column,\n          last_line: lastToken[2].last_line,\n          last_column: lastToken[2].last_column\n        };\n      }\n    };\n\n    Lexer.prototype.pair = function(tag) {\n      var lastIndent, prev, ref2, ref3, wanted;\n      ref2 = this.ends, prev = ref2[ref2.length - 1];\n      if (tag !== (wanted = prev != null ? prev.tag : void 0)) {\n        if ('OUTDENT' !== wanted) {\n          this.error(\"unmatched \" + tag);\n        }\n        ref3 = this.indents, lastIndent = ref3[ref3.length - 1];\n        this.outdentToken(lastIndent, true);\n        return this.pair(tag);\n      }\n      return this.ends.pop();\n    };\n\n    Lexer.prototype.getLineAndColumnFromChunk = function(offset) {\n      var column, lastLine, lineCount, ref2, string;\n      if (offset === 0) {\n        return [this.chunkLine, this.chunkColumn];\n      }\n      if (offset >= this.chunk.length) {\n        string = this.chunk;\n      } else {\n        string = this.chunk.slice(0, +(offset - 1) + 1 || 9e9);\n      }\n      lineCount = count(string, '\\n');\n      column = this.chunkColumn;\n      if (lineCount > 0) {\n        ref2 = string.split('\\n'), lastLine = ref2[ref2.length - 1];\n        column = lastLine.length;\n      } else {\n        column += string.length;\n      }\n      return [this.chunkLine + lineCount, column];\n    };\n\n    Lexer.prototype.makeToken = function(tag, value, offsetInChunk, length) {\n      var lastCharacter, locationData, ref2, ref3, token;\n      if (offsetInChunk == null) {\n        offsetInChunk = 0;\n      }\n      if (length == null) {\n        length = value.length;\n      }\n      locationData = {};\n      ref2 = this.getLineAndColumnFromChunk(offsetInChunk), locationData.first_line = ref2[0], locationData.first_column = ref2[1];\n      lastCharacter = Math.max(0, length - 1);\n      ref3 = this.getLineAndColumnFromChunk(offsetInChunk + lastCharacter), locationData.last_line = ref3[0], locationData.last_column = ref3[1];\n      token = [tag, value, locationData];\n      return token;\n    };\n\n    Lexer.prototype.token = function(tag, value, offsetInChunk, length, origin) {\n      var token;\n      token = this.makeToken(tag, value, offsetInChunk, length);\n      if (origin) {\n        token.origin = origin;\n      }\n      this.tokens.push(token);\n      return token;\n    };\n\n    Lexer.prototype.tag = function() {\n      var ref2, token;\n      ref2 = this.tokens, token = ref2[ref2.length - 1];\n      return token != null ? token[0] : void 0;\n    };\n\n    Lexer.prototype.value = function() {\n      var ref2, token;\n      ref2 = this.tokens, token = ref2[ref2.length - 1];\n      return token != null ? token[1] : void 0;\n    };\n\n    Lexer.prototype.unfinished = function() {\n      var ref2;\n      return LINE_CONTINUER.test(this.chunk) || ((ref2 = this.tag()) === '\\\\' || ref2 === '.' || ref2 === '?.' || ref2 === '?::' || ref2 === 'UNARY' || ref2 === 'MATH' || ref2 === 'UNARY_MATH' || ref2 === '+' || ref2 === '-' || ref2 === 'YIELD' || ref2 === '**' || ref2 === 'SHIFT' || ref2 === 'RELATION' || ref2 === 'COMPARE' || ref2 === 'LOGIC' || ref2 === 'THROW' || ref2 === 'EXTENDS');\n    };\n\n    Lexer.prototype.formatString = function(str) {\n      return str.replace(STRING_OMIT, '$1');\n    };\n\n    Lexer.prototype.formatHeregex = function(str) {\n      return str.replace(HEREGEX_OMIT, '$1$2');\n    };\n\n    Lexer.prototype.validateEscapes = function(str, options) {\n      var before, hex, invalidEscape, match, message, octal, ref2, unicode;\n      if (options == null) {\n        options = {};\n      }\n      match = INVALID_ESCAPE.exec(str);\n      if (!match) {\n        return;\n      }\n      match[0], before = match[1], octal = match[2], hex = match[3], unicode = match[4];\n      if (options.isRegex && octal && octal.charAt(0) !== '0') {\n        return;\n      }\n      message = octal ? \"octal escape sequences are not allowed\" : \"invalid escape sequence\";\n      invalidEscape = \"\\\\\" + (octal || hex || unicode);\n      return this.error(message + \" \" + invalidEscape, {\n        offset: ((ref2 = options.offsetInChunk) != null ? ref2 : 0) + match.index + before.length,\n        length: invalidEscape.length\n      });\n    };\n\n    Lexer.prototype.makeDelimitedLiteral = function(body, options) {\n      var regex;\n      if (options == null) {\n        options = {};\n      }\n      if (body === '' && options.delimiter === '/') {\n        body = '(?:)';\n      }\n      regex = RegExp(\"(\\\\\\\\\\\\\\\\)|(\\\\\\\\0(?=[1-7]))|\\\\\\\\?(\" + options.delimiter + \")|\\\\\\\\?(?:(\\\\n)|(\\\\r)|(\\\\u2028)|(\\\\u2029))|(\\\\\\\\.)\", \"g\");\n      body = body.replace(regex, function(match, backslash, nul, delimiter, lf, cr, ls, ps, other) {\n        switch (false) {\n          case !backslash:\n            if (options.double) {\n              return backslash + backslash;\n            } else {\n              return backslash;\n            }\n          case !nul:\n            return '\\\\x00';\n          case !delimiter:\n            return \"\\\\\" + delimiter;\n          case !lf:\n            return '\\\\n';\n          case !cr:\n            return '\\\\r';\n          case !ls:\n            return '\\\\u2028';\n          case !ps:\n            return '\\\\u2029';\n          case !other:\n            if (options.double) {\n              return \"\\\\\" + other;\n            } else {\n              return other;\n            }\n        }\n      });\n      return \"\" + options.delimiter + body + options.delimiter;\n    };\n\n    Lexer.prototype.error = function(message, options) {\n      var first_column, first_line, location, ref2, ref3, ref4;\n      if (options == null) {\n        options = {};\n      }\n      location = 'first_line' in options ? options : ((ref3 = this.getLineAndColumnFromChunk((ref2 = options.offset) != null ? ref2 : 0), first_line = ref3[0], first_column = ref3[1], ref3), {\n        first_line: first_line,\n        first_column: first_column,\n        last_column: first_column + ((ref4 = options.length) != null ? ref4 : 1) - 1\n      });\n      return throwSyntaxError(message, location);\n    };\n\n    return Lexer;\n\n  })();\n\n  JS_KEYWORDS = ['true', 'false', 'null', 'this', 'new', 'delete', 'typeof', 'in', 'instanceof', 'return', 'throw', 'break', 'continue', 'debugger', 'yield', 'if', 'else', 'switch', 'for', 'while', 'do', 'try', 'catch', 'finally', 'class', 'extends', 'super'];\n\n  COFFEE_KEYWORDS = ['undefined', 'then', 'unless', 'until', 'loop', 'of', 'by', 'when'];\n\n  COFFEE_ALIAS_MAP = {\n    and: '&&',\n    or: '||',\n    is: '==',\n    isnt: '!=',\n    not: '!',\n    yes: 'true',\n    no: 'false',\n    on: 'true',\n    off: 'false'\n  };\n\n  COFFEE_ALIASES = (function() {\n    var results;\n    results = [];\n    for (key in COFFEE_ALIAS_MAP) {\n      results.push(key);\n    }\n    return results;\n  })();\n\n  COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat(COFFEE_ALIASES);\n\n  RESERVED = ['case', 'default', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'export', 'import', 'native', 'implements', 'interface', 'package', 'private', 'protected', 'public', 'static'];\n\n  STRICT_PROSCRIBED = ['arguments', 'eval', 'yield*'];\n\n  JS_FORBIDDEN = JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED);\n\n  exports.RESERVED = RESERVED.concat(JS_KEYWORDS).concat(COFFEE_KEYWORDS).concat(STRICT_PROSCRIBED);\n\n  exports.STRICT_PROSCRIBED = STRICT_PROSCRIBED;\n\n  BOM = 65279;\n\n  IDENTIFIER = /^(?!\\d)((?:(?!\\s)[$\\w\\x7f-\\uffff])+)([^\\n\\S]*:(?!:))?/;\n\n  NUMBER = /^0b[01]+|^0o[0-7]+|^0x[\\da-f]+|^\\d*\\.?\\d+(?:e[+-]?\\d+)?/i;\n\n  OPERATOR = /^(?:[-=]>|[-+*\\/%<>&|^!?=]=|>>>=?|([-+:])\\1|([&|<>*\\/%])\\2=?|\\?(\\.|::)|\\.{2,3})/;\n\n  WHITESPACE = /^[^\\n\\S]+/;\n\n  COMMENT = /^###([^#][\\s\\S]*?)(?:###[^\\n\\S]*|###$)|^(?:\\s*#(?!##[^#]).*)+/;\n\n  CODE = /^[-=]>/;\n\n  MULTI_DENT = /^(?:\\n[^\\n\\S]*)+/;\n\n  JSTOKEN = /^`[^\\\\`]*(?:\\\\.[^\\\\`]*)*`/;\n\n  STRING_START = /^(?:'''|\"\"\"|'|\")/;\n\n  STRING_SINGLE = /^(?:[^\\\\']|\\\\[\\s\\S])*/;\n\n  STRING_DOUBLE = /^(?:[^\\\\\"#]|\\\\[\\s\\S]|\\#(?!\\{))*/;\n\n  HEREDOC_SINGLE = /^(?:[^\\\\']|\\\\[\\s\\S]|'(?!''))*/;\n\n  HEREDOC_DOUBLE = /^(?:[^\\\\\"#]|\\\\[\\s\\S]|\"(?!\"\")|\\#(?!\\{))*/;\n\n  STRING_OMIT = /((?:\\\\\\\\)+)|\\\\[^\\S\\n]*\\n\\s*/g;\n\n  SIMPLE_STRING_OMIT = /\\s*\\n\\s*/g;\n\n  HEREDOC_INDENT = /\\n+([^\\n\\S]*)(?=\\S)/g;\n\n  REGEX = /^\\/(?!\\/)((?:[^[\\/\\n\\\\]|\\\\[^\\n]|\\[(?:\\\\[^\\n]|[^\\]\\n\\\\])*\\])*)(\\/)?/;\n\n  REGEX_FLAGS = /^\\w*/;\n\n  VALID_FLAGS = /^(?!.*(.).*\\1)[imgy]*$/;\n\n  HEREGEX = /^(?:[^\\\\\\/#]|\\\\[\\s\\S]|\\/(?!\\/\\/)|\\#(?!\\{))*/;\n\n  HEREGEX_OMIT = /((?:\\\\\\\\)+)|\\\\(\\s)|\\s+(?:#.*)?/g;\n\n  REGEX_ILLEGAL = /^(\\/|\\/{3}\\s*)(\\*)/;\n\n  POSSIBLY_DIVISION = /^\\/=?\\s/;\n\n  HERECOMMENT_ILLEGAL = /\\*\\//;\n\n  LINE_CONTINUER = /^\\s*(?:,|\\??\\.(?![.\\d])|::)/;\n\n  INVALID_ESCAPE = /((?:^|[^\\\\])(?:\\\\\\\\)*)\\\\(?:(0[0-7]|[1-7])|(x(?![\\da-fA-F]{2}).{0,2})|(u(?![\\da-fA-F]{4}).{0,4}))/;\n\n  LEADING_BLANK_LINE = /^[^\\n\\S]*\\n/;\n\n  TRAILING_BLANK_LINE = /\\n[^\\n\\S]*$/;\n\n  TRAILING_SPACES = /\\s+$/;\n\n  COMPOUND_ASSIGN = ['-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=', '<<=', '>>=', '>>>=', '&=', '^=', '|=', '**=', '//=', '%%='];\n\n  UNARY = ['NEW', 'TYPEOF', 'DELETE', 'DO'];\n\n  UNARY_MATH = ['!', '~'];\n\n  LOGIC = ['&&', '||', '&', '|', '^'];\n\n  SHIFT = ['<<', '>>', '>>>'];\n\n  COMPARE = ['==', '!=', '<', '>', '<=', '>='];\n\n  MATH = ['*', '/', '%', '//', '%%'];\n\n  RELATION = ['IN', 'OF', 'INSTANCEOF'];\n\n  BOOL = ['TRUE', 'FALSE'];\n\n  CALLABLE = ['IDENTIFIER', ')', ']', '?', '@', 'THIS', 'SUPER'];\n\n  INDEXABLE = CALLABLE.concat(['NUMBER', 'STRING', 'STRING_END', 'REGEX', 'REGEX_END', 'BOOL', 'NULL', 'UNDEFINED', '}', '::']);\n\n  NOT_REGEX = INDEXABLE.concat(['++', '--']);\n\n  LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR'];\n\n  INDENTABLE_CLOSERS = [')', '}', ']'];\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n  var Access, Arr, Assign, Base, Block, Call, Class, Code, CodeFragment, Comment, Existence, Expansion, Extends, For, HEXNUM, IDENTIFIER, IS_REGEX, IS_STRING, If, In, Index, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, NEGATE, NO, NUMBER, Obj, Op, Param, Parens, RESERVED, Range, Return, SIMPLENUM, STRICT_PROSCRIBED, Scope, Slice, Splat, Switch, TAB, THIS, Throw, Try, UTILITIES, Value, While, YES, addLocationDataFn, compact, del, ends, extend, flatten, fragmentsToText, isComplexOrAssignable, isLiteralArguments, isLiteralThis, locationDataToString, merge, multident, parseNum, ref1, ref2, some, starts, throwSyntaxError, unfoldSoak, utility,\n    extend1 = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty,\n    indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n    slice = [].slice;\n\n  Error.stackTraceLimit = Infinity;\n\n  Scope = require('./scope').Scope;\n\n  ref1 = require('./lexer'), RESERVED = ref1.RESERVED, STRICT_PROSCRIBED = ref1.STRICT_PROSCRIBED;\n\n  ref2 = require('./helpers'), compact = ref2.compact, flatten = ref2.flatten, extend = ref2.extend, merge = ref2.merge, del = ref2.del, starts = ref2.starts, ends = ref2.ends, some = ref2.some, addLocationDataFn = ref2.addLocationDataFn, locationDataToString = ref2.locationDataToString, throwSyntaxError = ref2.throwSyntaxError;\n\n  exports.extend = extend;\n\n  exports.addLocationDataFn = addLocationDataFn;\n\n  YES = function() {\n    return true;\n  };\n\n  NO = function() {\n    return false;\n  };\n\n  THIS = function() {\n    return this;\n  };\n\n  NEGATE = function() {\n    this.negated = !this.negated;\n    return this;\n  };\n\n  exports.CodeFragment = CodeFragment = (function() {\n    function CodeFragment(parent, code) {\n      var ref3;\n      this.code = \"\" + code;\n      this.locationData = parent != null ? parent.locationData : void 0;\n      this.type = (parent != null ? (ref3 = parent.constructor) != null ? ref3.name : void 0 : void 0) || 'unknown';\n    }\n\n    CodeFragment.prototype.toString = function() {\n      return \"\" + this.code + (this.locationData ? \": \" + locationDataToString(this.locationData) : '');\n    };\n\n    return CodeFragment;\n\n  })();\n\n  fragmentsToText = function(fragments) {\n    var fragment;\n    return ((function() {\n      var j, len1, results;\n      results = [];\n      for (j = 0, len1 = fragments.length; j < len1; j++) {\n        fragment = fragments[j];\n        results.push(fragment.code);\n      }\n      return results;\n    })()).join('');\n  };\n\n  exports.Base = Base = (function() {\n    function Base() {}\n\n    Base.prototype.compile = function(o, lvl) {\n      return fragmentsToText(this.compileToFragments(o, lvl));\n    };\n\n    Base.prototype.compileToFragments = function(o, lvl) {\n      var node;\n      o = extend({}, o);\n      if (lvl) {\n        o.level = lvl;\n      }\n      node = this.unfoldSoak(o) || this;\n      node.tab = o.indent;\n      if (o.level === LEVEL_TOP || !node.isStatement(o)) {\n        return node.compileNode(o);\n      } else {\n        return node.compileClosure(o);\n      }\n    };\n\n    Base.prototype.compileClosure = function(o) {\n      var args, argumentsNode, func, jumpNode, meth, parts, ref3;\n      if (jumpNode = this.jumps()) {\n        jumpNode.error('cannot use a pure statement in an expression');\n      }\n      o.sharedScope = true;\n      func = new Code([], Block.wrap([this]));\n      args = [];\n      if ((argumentsNode = this.contains(isLiteralArguments)) || this.contains(isLiteralThis)) {\n        args = [new Literal('this')];\n        if (argumentsNode) {\n          meth = 'apply';\n          args.push(new Literal('arguments'));\n        } else {\n          meth = 'call';\n        }\n        func = new Value(func, [new Access(new Literal(meth))]);\n      }\n      parts = (new Call(func, args)).compileNode(o);\n      if (func.isGenerator || ((ref3 = func.base) != null ? ref3.isGenerator : void 0)) {\n        parts.unshift(this.makeCode(\"(yield* \"));\n        parts.push(this.makeCode(\")\"));\n      }\n      return parts;\n    };\n\n    Base.prototype.cache = function(o, level, isComplex) {\n      var complex, ref, sub;\n      complex = isComplex != null ? isComplex(this) : this.isComplex();\n      if (complex) {\n        ref = new Literal(o.scope.freeVariable('ref'));\n        sub = new Assign(ref, this);\n        if (level) {\n          return [sub.compileToFragments(o, level), [this.makeCode(ref.value)]];\n        } else {\n          return [sub, ref];\n        }\n      } else {\n        ref = level ? this.compileToFragments(o, level) : this;\n        return [ref, ref];\n      }\n    };\n\n    Base.prototype.cacheToCodeFragments = function(cacheValues) {\n      return [fragmentsToText(cacheValues[0]), fragmentsToText(cacheValues[1])];\n    };\n\n    Base.prototype.makeReturn = function(res) {\n      var me;\n      me = this.unwrapAll();\n      if (res) {\n        return new Call(new Literal(res + \".push\"), [me]);\n      } else {\n        return new Return(me);\n      }\n    };\n\n    Base.prototype.contains = function(pred) {\n      var node;\n      node = void 0;\n      this.traverseChildren(false, function(n) {\n        if (pred(n)) {\n          node = n;\n          return false;\n        }\n      });\n      return node;\n    };\n\n    Base.prototype.lastNonComment = function(list) {\n      var i;\n      i = list.length;\n      while (i--) {\n        if (!(list[i] instanceof Comment)) {\n          return list[i];\n        }\n      }\n      return null;\n    };\n\n    Base.prototype.toString = function(idt, name) {\n      var tree;\n      if (idt == null) {\n        idt = '';\n      }\n      if (name == null) {\n        name = this.constructor.name;\n      }\n      tree = '\\n' + idt + name;\n      if (this.soak) {\n        tree += '?';\n      }\n      this.eachChild(function(node) {\n        return tree += node.toString(idt + TAB);\n      });\n      return tree;\n    };\n\n    Base.prototype.eachChild = function(func) {\n      var attr, child, j, k, len1, len2, ref3, ref4;\n      if (!this.children) {\n        return this;\n      }\n      ref3 = this.children;\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        attr = ref3[j];\n        if (this[attr]) {\n          ref4 = flatten([this[attr]]);\n          for (k = 0, len2 = ref4.length; k < len2; k++) {\n            child = ref4[k];\n            if (func(child) === false) {\n              return this;\n            }\n          }\n        }\n      }\n      return this;\n    };\n\n    Base.prototype.traverseChildren = function(crossScope, func) {\n      return this.eachChild(function(child) {\n        var recur;\n        recur = func(child);\n        if (recur !== false) {\n          return child.traverseChildren(crossScope, func);\n        }\n      });\n    };\n\n    Base.prototype.invert = function() {\n      return new Op('!', this);\n    };\n\n    Base.prototype.unwrapAll = function() {\n      var node;\n      node = this;\n      while (node !== (node = node.unwrap())) {\n        continue;\n      }\n      return node;\n    };\n\n    Base.prototype.children = [];\n\n    Base.prototype.isStatement = NO;\n\n    Base.prototype.jumps = NO;\n\n    Base.prototype.isComplex = YES;\n\n    Base.prototype.isChainable = NO;\n\n    Base.prototype.isAssignable = NO;\n\n    Base.prototype.unwrap = THIS;\n\n    Base.prototype.unfoldSoak = NO;\n\n    Base.prototype.assigns = NO;\n\n    Base.prototype.updateLocationDataIfMissing = function(locationData) {\n      if (this.locationData) {\n        return this;\n      }\n      this.locationData = locationData;\n      return this.eachChild(function(child) {\n        return child.updateLocationDataIfMissing(locationData);\n      });\n    };\n\n    Base.prototype.error = function(message) {\n      return throwSyntaxError(message, this.locationData);\n    };\n\n    Base.prototype.makeCode = function(code) {\n      return new CodeFragment(this, code);\n    };\n\n    Base.prototype.wrapInBraces = function(fragments) {\n      return [].concat(this.makeCode('('), fragments, this.makeCode(')'));\n    };\n\n    Base.prototype.joinFragmentArrays = function(fragmentsList, joinStr) {\n      var answer, fragments, i, j, len1;\n      answer = [];\n      for (i = j = 0, len1 = fragmentsList.length; j < len1; i = ++j) {\n        fragments = fragmentsList[i];\n        if (i) {\n          answer.push(this.makeCode(joinStr));\n        }\n        answer = answer.concat(fragments);\n      }\n      return answer;\n    };\n\n    return Base;\n\n  })();\n\n  exports.Block = Block = (function(superClass1) {\n    extend1(Block, superClass1);\n\n    function Block(nodes) {\n      this.expressions = compact(flatten(nodes || []));\n    }\n\n    Block.prototype.children = ['expressions'];\n\n    Block.prototype.push = function(node) {\n      this.expressions.push(node);\n      return this;\n    };\n\n    Block.prototype.pop = function() {\n      return this.expressions.pop();\n    };\n\n    Block.prototype.unshift = function(node) {\n      this.expressions.unshift(node);\n      return this;\n    };\n\n    Block.prototype.unwrap = function() {\n      if (this.expressions.length === 1) {\n        return this.expressions[0];\n      } else {\n        return this;\n      }\n    };\n\n    Block.prototype.isEmpty = function() {\n      return !this.expressions.length;\n    };\n\n    Block.prototype.isStatement = function(o) {\n      var exp, j, len1, ref3;\n      ref3 = this.expressions;\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        exp = ref3[j];\n        if (exp.isStatement(o)) {\n          return true;\n        }\n      }\n      return false;\n    };\n\n    Block.prototype.jumps = function(o) {\n      var exp, j, jumpNode, len1, ref3;\n      ref3 = this.expressions;\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        exp = ref3[j];\n        if (jumpNode = exp.jumps(o)) {\n          return jumpNode;\n        }\n      }\n    };\n\n    Block.prototype.makeReturn = function(res) {\n      var expr, len;\n      len = this.expressions.length;\n      while (len--) {\n        expr = this.expressions[len];\n        if (!(expr instanceof Comment)) {\n          this.expressions[len] = expr.makeReturn(res);\n          if (expr instanceof Return && !expr.expression) {\n            this.expressions.splice(len, 1);\n          }\n          break;\n        }\n      }\n      return this;\n    };\n\n    Block.prototype.compileToFragments = function(o, level) {\n      if (o == null) {\n        o = {};\n      }\n      if (o.scope) {\n        return Block.__super__.compileToFragments.call(this, o, level);\n      } else {\n        return this.compileRoot(o);\n      }\n    };\n\n    Block.prototype.compileNode = function(o) {\n      var answer, compiledNodes, fragments, index, j, len1, node, ref3, top;\n      this.tab = o.indent;\n      top = o.level === LEVEL_TOP;\n      compiledNodes = [];\n      ref3 = this.expressions;\n      for (index = j = 0, len1 = ref3.length; j < len1; index = ++j) {\n        node = ref3[index];\n        node = node.unwrapAll();\n        node = node.unfoldSoak(o) || node;\n        if (node instanceof Block) {\n          compiledNodes.push(node.compileNode(o));\n        } else if (top) {\n          node.front = true;\n          fragments = node.compileToFragments(o);\n          if (!node.isStatement(o)) {\n            fragments.unshift(this.makeCode(\"\" + this.tab));\n            fragments.push(this.makeCode(\";\"));\n          }\n          compiledNodes.push(fragments);\n        } else {\n          compiledNodes.push(node.compileToFragments(o, LEVEL_LIST));\n        }\n      }\n      if (top) {\n        if (this.spaced) {\n          return [].concat(this.joinFragmentArrays(compiledNodes, '\\n\\n'), this.makeCode(\"\\n\"));\n        } else {\n          return this.joinFragmentArrays(compiledNodes, '\\n');\n        }\n      }\n      if (compiledNodes.length) {\n        answer = this.joinFragmentArrays(compiledNodes, ', ');\n      } else {\n        answer = [this.makeCode(\"void 0\")];\n      }\n      if (compiledNodes.length > 1 && o.level >= LEVEL_LIST) {\n        return this.wrapInBraces(answer);\n      } else {\n        return answer;\n      }\n    };\n\n    Block.prototype.compileRoot = function(o) {\n      var exp, fragments, i, j, len1, name, prelude, preludeExps, ref3, ref4, rest;\n      o.indent = o.bare ? '' : TAB;\n      o.level = LEVEL_TOP;\n      this.spaced = true;\n      o.scope = new Scope(null, this, null, (ref3 = o.referencedVars) != null ? ref3 : []);\n      ref4 = o.locals || [];\n      for (j = 0, len1 = ref4.length; j < len1; j++) {\n        name = ref4[j];\n        o.scope.parameter(name);\n      }\n      prelude = [];\n      if (!o.bare) {\n        preludeExps = (function() {\n          var k, len2, ref5, results;\n          ref5 = this.expressions;\n          results = [];\n          for (i = k = 0, len2 = ref5.length; k < len2; i = ++k) {\n            exp = ref5[i];\n            if (!(exp.unwrap() instanceof Comment)) {\n              break;\n            }\n            results.push(exp);\n          }\n          return results;\n        }).call(this);\n        rest = this.expressions.slice(preludeExps.length);\n        this.expressions = preludeExps;\n        if (preludeExps.length) {\n          prelude = this.compileNode(merge(o, {\n            indent: ''\n          }));\n          prelude.push(this.makeCode(\"\\n\"));\n        }\n        this.expressions = rest;\n      }\n      fragments = this.compileWithDeclarations(o);\n      if (o.bare) {\n        return fragments;\n      }\n      return [].concat(prelude, this.makeCode(\"(function() {\\n\"), fragments, this.makeCode(\"\\n}).call(this);\\n\"));\n    };\n\n    Block.prototype.compileWithDeclarations = function(o) {\n      var assigns, declars, exp, fragments, i, j, len1, post, ref3, ref4, ref5, rest, scope, spaced;\n      fragments = [];\n      post = [];\n      ref3 = this.expressions;\n      for (i = j = 0, len1 = ref3.length; j < len1; i = ++j) {\n        exp = ref3[i];\n        exp = exp.unwrap();\n        if (!(exp instanceof Comment || exp instanceof Literal)) {\n          break;\n        }\n      }\n      o = merge(o, {\n        level: LEVEL_TOP\n      });\n      if (i) {\n        rest = this.expressions.splice(i, 9e9);\n        ref4 = [this.spaced, false], spaced = ref4[0], this.spaced = ref4[1];\n        ref5 = [this.compileNode(o), spaced], fragments = ref5[0], this.spaced = ref5[1];\n        this.expressions = rest;\n      }\n      post = this.compileNode(o);\n      scope = o.scope;\n      if (scope.expressions === this) {\n        declars = o.scope.hasDeclarations();\n        assigns = scope.hasAssignments;\n        if (declars || assigns) {\n          if (i) {\n            fragments.push(this.makeCode('\\n'));\n          }\n          fragments.push(this.makeCode(this.tab + \"var \"));\n          if (declars) {\n            fragments.push(this.makeCode(scope.declaredVariables().join(', ')));\n          }\n          if (assigns) {\n            if (declars) {\n              fragments.push(this.makeCode(\",\\n\" + (this.tab + TAB)));\n            }\n            fragments.push(this.makeCode(scope.assignedVariables().join(\",\\n\" + (this.tab + TAB))));\n          }\n          fragments.push(this.makeCode(\";\\n\" + (this.spaced ? '\\n' : '')));\n        } else if (fragments.length && post.length) {\n          fragments.push(this.makeCode(\"\\n\"));\n        }\n      }\n      return fragments.concat(post);\n    };\n\n    Block.wrap = function(nodes) {\n      if (nodes.length === 1 && nodes[0] instanceof Block) {\n        return nodes[0];\n      }\n      return new Block(nodes);\n    };\n\n    return Block;\n\n  })(Base);\n\n  exports.Literal = Literal = (function(superClass1) {\n    extend1(Literal, superClass1);\n\n    function Literal(value1) {\n      this.value = value1;\n    }\n\n    Literal.prototype.makeReturn = function() {\n      if (this.isStatement()) {\n        return this;\n      } else {\n        return Literal.__super__.makeReturn.apply(this, arguments);\n      }\n    };\n\n    Literal.prototype.isAssignable = function() {\n      return IDENTIFIER.test(this.value);\n    };\n\n    Literal.prototype.isStatement = function() {\n      var ref3;\n      return (ref3 = this.value) === 'break' || ref3 === 'continue' || ref3 === 'debugger';\n    };\n\n    Literal.prototype.isComplex = NO;\n\n    Literal.prototype.assigns = function(name) {\n      return name === this.value;\n    };\n\n    Literal.prototype.jumps = function(o) {\n      if (this.value === 'break' && !((o != null ? o.loop : void 0) || (o != null ? o.block : void 0))) {\n        return this;\n      }\n      if (this.value === 'continue' && !(o != null ? o.loop : void 0)) {\n        return this;\n      }\n    };\n\n    Literal.prototype.compileNode = function(o) {\n      var answer, code, ref3;\n      code = this.value === 'this' ? ((ref3 = o.scope.method) != null ? ref3.bound : void 0) ? o.scope.method.context : this.value : this.value.reserved ? \"\\\"\" + this.value + \"\\\"\" : this.value;\n      answer = this.isStatement() ? \"\" + this.tab + code + \";\" : code;\n      return [this.makeCode(answer)];\n    };\n\n    Literal.prototype.toString = function() {\n      return ' \"' + this.value + '\"';\n    };\n\n    return Literal;\n\n  })(Base);\n\n  exports.Undefined = (function(superClass1) {\n    extend1(Undefined, superClass1);\n\n    function Undefined() {\n      return Undefined.__super__.constructor.apply(this, arguments);\n    }\n\n    Undefined.prototype.isAssignable = NO;\n\n    Undefined.prototype.isComplex = NO;\n\n    Undefined.prototype.compileNode = function(o) {\n      return [this.makeCode(o.level >= LEVEL_ACCESS ? '(void 0)' : 'void 0')];\n    };\n\n    return Undefined;\n\n  })(Base);\n\n  exports.Null = (function(superClass1) {\n    extend1(Null, superClass1);\n\n    function Null() {\n      return Null.__super__.constructor.apply(this, arguments);\n    }\n\n    Null.prototype.isAssignable = NO;\n\n    Null.prototype.isComplex = NO;\n\n    Null.prototype.compileNode = function() {\n      return [this.makeCode(\"null\")];\n    };\n\n    return Null;\n\n  })(Base);\n\n  exports.Bool = (function(superClass1) {\n    extend1(Bool, superClass1);\n\n    Bool.prototype.isAssignable = NO;\n\n    Bool.prototype.isComplex = NO;\n\n    Bool.prototype.compileNode = function() {\n      return [this.makeCode(this.val)];\n    };\n\n    function Bool(val1) {\n      this.val = val1;\n    }\n\n    return Bool;\n\n  })(Base);\n\n  exports.Return = Return = (function(superClass1) {\n    extend1(Return, superClass1);\n\n    function Return(expression) {\n      this.expression = expression;\n    }\n\n    Return.prototype.children = ['expression'];\n\n    Return.prototype.isStatement = YES;\n\n    Return.prototype.makeReturn = THIS;\n\n    Return.prototype.jumps = THIS;\n\n    Return.prototype.compileToFragments = function(o, level) {\n      var expr, ref3;\n      expr = (ref3 = this.expression) != null ? ref3.makeReturn() : void 0;\n      if (expr && !(expr instanceof Return)) {\n        return expr.compileToFragments(o, level);\n      } else {\n        return Return.__super__.compileToFragments.call(this, o, level);\n      }\n    };\n\n    Return.prototype.compileNode = function(o) {\n      var answer, exprIsYieldReturn, ref3;\n      answer = [];\n      exprIsYieldReturn = (ref3 = this.expression) != null ? typeof ref3.isYieldReturn === \"function\" ? ref3.isYieldReturn() : void 0 : void 0;\n      if (!exprIsYieldReturn) {\n        answer.push(this.makeCode(this.tab + (\"return\" + (this.expression ? \" \" : \"\"))));\n      }\n      if (this.expression) {\n        answer = answer.concat(this.expression.compileToFragments(o, LEVEL_PAREN));\n      }\n      if (!exprIsYieldReturn) {\n        answer.push(this.makeCode(\";\"));\n      }\n      return answer;\n    };\n\n    return Return;\n\n  })(Base);\n\n  exports.Value = Value = (function(superClass1) {\n    extend1(Value, superClass1);\n\n    function Value(base, props, tag) {\n      if (!props && base instanceof Value) {\n        return base;\n      }\n      this.base = base;\n      this.properties = props || [];\n      if (tag) {\n        this[tag] = true;\n      }\n      return this;\n    }\n\n    Value.prototype.children = ['base', 'properties'];\n\n    Value.prototype.add = function(props) {\n      this.properties = this.properties.concat(props);\n      return this;\n    };\n\n    Value.prototype.hasProperties = function() {\n      return !!this.properties.length;\n    };\n\n    Value.prototype.bareLiteral = function(type) {\n      return !this.properties.length && this.base instanceof type;\n    };\n\n    Value.prototype.isArray = function() {\n      return this.bareLiteral(Arr);\n    };\n\n    Value.prototype.isRange = function() {\n      return this.bareLiteral(Range);\n    };\n\n    Value.prototype.isComplex = function() {\n      return this.hasProperties() || this.base.isComplex();\n    };\n\n    Value.prototype.isAssignable = function() {\n      return this.hasProperties() || this.base.isAssignable();\n    };\n\n    Value.prototype.isSimpleNumber = function() {\n      return this.bareLiteral(Literal) && SIMPLENUM.test(this.base.value);\n    };\n\n    Value.prototype.isString = function() {\n      return this.bareLiteral(Literal) && IS_STRING.test(this.base.value);\n    };\n\n    Value.prototype.isRegex = function() {\n      return this.bareLiteral(Literal) && IS_REGEX.test(this.base.value);\n    };\n\n    Value.prototype.isAtomic = function() {\n      var j, len1, node, ref3;\n      ref3 = this.properties.concat(this.base);\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        node = ref3[j];\n        if (node.soak || node instanceof Call) {\n          return false;\n        }\n      }\n      return true;\n    };\n\n    Value.prototype.isNotCallable = function() {\n      return this.isSimpleNumber() || this.isString() || this.isRegex() || this.isArray() || this.isRange() || this.isSplice() || this.isObject();\n    };\n\n    Value.prototype.isStatement = function(o) {\n      return !this.properties.length && this.base.isStatement(o);\n    };\n\n    Value.prototype.assigns = function(name) {\n      return !this.properties.length && this.base.assigns(name);\n    };\n\n    Value.prototype.jumps = function(o) {\n      return !this.properties.length && this.base.jumps(o);\n    };\n\n    Value.prototype.isObject = function(onlyGenerated) {\n      if (this.properties.length) {\n        return false;\n      }\n      return (this.base instanceof Obj) && (!onlyGenerated || this.base.generated);\n    };\n\n    Value.prototype.isSplice = function() {\n      var lastProp, ref3;\n      ref3 = this.properties, lastProp = ref3[ref3.length - 1];\n      return lastProp instanceof Slice;\n    };\n\n    Value.prototype.looksStatic = function(className) {\n      var ref3;\n      return this.base.value === className && this.properties.length === 1 && ((ref3 = this.properties[0].name) != null ? ref3.value : void 0) !== 'prototype';\n    };\n\n    Value.prototype.unwrap = function() {\n      if (this.properties.length) {\n        return this;\n      } else {\n        return this.base;\n      }\n    };\n\n    Value.prototype.cacheReference = function(o) {\n      var base, bref, name, nref, ref3;\n      ref3 = this.properties, name = ref3[ref3.length - 1];\n      if (this.properties.length < 2 && !this.base.isComplex() && !(name != null ? name.isComplex() : void 0)) {\n        return [this, this];\n      }\n      base = new Value(this.base, this.properties.slice(0, -1));\n      if (base.isComplex()) {\n        bref = new Literal(o.scope.freeVariable('base'));\n        base = new Value(new Parens(new Assign(bref, base)));\n      }\n      if (!name) {\n        return [base, bref];\n      }\n      if (name.isComplex()) {\n        nref = new Literal(o.scope.freeVariable('name'));\n        name = new Index(new Assign(nref, name.index));\n        nref = new Index(nref);\n      }\n      return [base.add(name), new Value(bref || base.base, [nref || name])];\n    };\n\n    Value.prototype.compileNode = function(o) {\n      var fragments, j, len1, prop, props;\n      this.base.front = this.front;\n      props = this.properties;\n      fragments = this.base.compileToFragments(o, (props.length ? LEVEL_ACCESS : null));\n      if ((this.base instanceof Parens || props.length) && SIMPLENUM.test(fragmentsToText(fragments))) {\n        fragments.push(this.makeCode('.'));\n      }\n      for (j = 0, len1 = props.length; j < len1; j++) {\n        prop = props[j];\n        fragments.push.apply(fragments, prop.compileToFragments(o));\n      }\n      return fragments;\n    };\n\n    Value.prototype.unfoldSoak = function(o) {\n      return this.unfoldedSoak != null ? this.unfoldedSoak : this.unfoldedSoak = (function(_this) {\n        return function() {\n          var fst, i, ifn, j, len1, prop, ref, ref3, ref4, snd;\n          if (ifn = _this.base.unfoldSoak(o)) {\n            (ref3 = ifn.body.properties).push.apply(ref3, _this.properties);\n            return ifn;\n          }\n          ref4 = _this.properties;\n          for (i = j = 0, len1 = ref4.length; j < len1; i = ++j) {\n            prop = ref4[i];\n            if (!prop.soak) {\n              continue;\n            }\n            prop.soak = false;\n            fst = new Value(_this.base, _this.properties.slice(0, i));\n            snd = new Value(_this.base, _this.properties.slice(i));\n            if (fst.isComplex()) {\n              ref = new Literal(o.scope.freeVariable('ref'));\n              fst = new Parens(new Assign(ref, fst));\n              snd.base = ref;\n            }\n            return new If(new Existence(fst), snd, {\n              soak: true\n            });\n          }\n          return false;\n        };\n      })(this)();\n    };\n\n    return Value;\n\n  })(Base);\n\n  exports.Comment = Comment = (function(superClass1) {\n    extend1(Comment, superClass1);\n\n    function Comment(comment1) {\n      this.comment = comment1;\n    }\n\n    Comment.prototype.isStatement = YES;\n\n    Comment.prototype.makeReturn = THIS;\n\n    Comment.prototype.compileNode = function(o, level) {\n      var code, comment;\n      comment = this.comment.replace(/^(\\s*)#(?=\\s)/gm, \"$1 *\");\n      code = \"/*\" + (multident(comment, this.tab)) + (indexOf.call(comment, '\\n') >= 0 ? \"\\n\" + this.tab : '') + \" */\";\n      if ((level || o.level) === LEVEL_TOP) {\n        code = o.indent + code;\n      }\n      return [this.makeCode(\"\\n\"), this.makeCode(code)];\n    };\n\n    return Comment;\n\n  })(Base);\n\n  exports.Call = Call = (function(superClass1) {\n    extend1(Call, superClass1);\n\n    function Call(variable, args1, soak) {\n      this.args = args1 != null ? args1 : [];\n      this.soak = soak;\n      this.isNew = false;\n      this.isSuper = variable === 'super';\n      this.variable = this.isSuper ? null : variable;\n      if (variable instanceof Value && variable.isNotCallable()) {\n        variable.error(\"literal is not a function\");\n      }\n    }\n\n    Call.prototype.children = ['variable', 'args'];\n\n    Call.prototype.newInstance = function() {\n      var base, ref3;\n      base = ((ref3 = this.variable) != null ? ref3.base : void 0) || this.variable;\n      if (base instanceof Call && !base.isNew) {\n        base.newInstance();\n      } else {\n        this.isNew = true;\n      }\n      return this;\n    };\n\n    Call.prototype.superReference = function(o) {\n      var accesses, base, bref, klass, method, name, nref, variable;\n      method = o.scope.namedMethod();\n      if (method != null ? method.klass : void 0) {\n        klass = method.klass, name = method.name, variable = method.variable;\n        if (klass.isComplex()) {\n          bref = new Literal(o.scope.parent.freeVariable('base'));\n          base = new Value(new Parens(new Assign(bref, klass)));\n          variable.base = base;\n          variable.properties.splice(0, klass.properties.length);\n        }\n        if (name.isComplex() || (name instanceof Index && name.index.isAssignable())) {\n          nref = new Literal(o.scope.parent.freeVariable('name'));\n          name = new Index(new Assign(nref, name.index));\n          variable.properties.pop();\n          variable.properties.push(name);\n        }\n        accesses = [new Access(new Literal('__super__'))];\n        if (method[\"static\"]) {\n          accesses.push(new Access(new Literal('constructor')));\n        }\n        accesses.push(nref != null ? new Index(nref) : name);\n        return (new Value(bref != null ? bref : klass, accesses)).compile(o);\n      } else if (method != null ? method.ctor : void 0) {\n        return method.name + \".__super__.constructor\";\n      } else {\n        return this.error('cannot call super outside of an instance method.');\n      }\n    };\n\n    Call.prototype.superThis = function(o) {\n      var method;\n      method = o.scope.method;\n      return (method && !method.klass && method.context) || \"this\";\n    };\n\n    Call.prototype.unfoldSoak = function(o) {\n      var call, ifn, j, left, len1, list, ref3, ref4, rite;\n      if (this.soak) {\n        if (this.variable) {\n          if (ifn = unfoldSoak(o, this, 'variable')) {\n            return ifn;\n          }\n          ref3 = new Value(this.variable).cacheReference(o), left = ref3[0], rite = ref3[1];\n        } else {\n          left = new Literal(this.superReference(o));\n          rite = new Value(left);\n        }\n        rite = new Call(rite, this.args);\n        rite.isNew = this.isNew;\n        left = new Literal(\"typeof \" + (left.compile(o)) + \" === \\\"function\\\"\");\n        return new If(left, new Value(rite), {\n          soak: true\n        });\n      }\n      call = this;\n      list = [];\n      while (true) {\n        if (call.variable instanceof Call) {\n          list.push(call);\n          call = call.variable;\n          continue;\n        }\n        if (!(call.variable instanceof Value)) {\n          break;\n        }\n        list.push(call);\n        if (!((call = call.variable.base) instanceof Call)) {\n          break;\n        }\n      }\n      ref4 = list.reverse();\n      for (j = 0, len1 = ref4.length; j < len1; j++) {\n        call = ref4[j];\n        if (ifn) {\n          if (call.variable instanceof Call) {\n            call.variable = ifn;\n          } else {\n            call.variable.base = ifn;\n          }\n        }\n        ifn = unfoldSoak(o, call, 'variable');\n      }\n      return ifn;\n    };\n\n    Call.prototype.compileNode = function(o) {\n      var arg, argIndex, compiledArgs, compiledArray, fragments, j, len1, preface, ref3, ref4;\n      if ((ref3 = this.variable) != null) {\n        ref3.front = this.front;\n      }\n      compiledArray = Splat.compileSplattedArray(o, this.args, true);\n      if (compiledArray.length) {\n        return this.compileSplat(o, compiledArray);\n      }\n      compiledArgs = [];\n      ref4 = this.args;\n      for (argIndex = j = 0, len1 = ref4.length; j < len1; argIndex = ++j) {\n        arg = ref4[argIndex];\n        if (argIndex) {\n          compiledArgs.push(this.makeCode(\", \"));\n        }\n        compiledArgs.push.apply(compiledArgs, arg.compileToFragments(o, LEVEL_LIST));\n      }\n      fragments = [];\n      if (this.isSuper) {\n        preface = this.superReference(o) + (\".call(\" + (this.superThis(o)));\n        if (compiledArgs.length) {\n          preface += \", \";\n        }\n        fragments.push(this.makeCode(preface));\n      } else {\n        if (this.isNew) {\n          fragments.push(this.makeCode('new '));\n        }\n        fragments.push.apply(fragments, this.variable.compileToFragments(o, LEVEL_ACCESS));\n        fragments.push(this.makeCode(\"(\"));\n      }\n      fragments.push.apply(fragments, compiledArgs);\n      fragments.push(this.makeCode(\")\"));\n      return fragments;\n    };\n\n    Call.prototype.compileSplat = function(o, splatArgs) {\n      var answer, base, fun, idt, name, ref;\n      if (this.isSuper) {\n        return [].concat(this.makeCode((this.superReference(o)) + \".apply(\" + (this.superThis(o)) + \", \"), splatArgs, this.makeCode(\")\"));\n      }\n      if (this.isNew) {\n        idt = this.tab + TAB;\n        return [].concat(this.makeCode(\"(function(func, args, ctor) {\\n\" + idt + \"ctor.prototype = func.prototype;\\n\" + idt + \"var child = new ctor, result = func.apply(child, args);\\n\" + idt + \"return Object(result) === result ? result : child;\\n\" + this.tab + \"})(\"), this.variable.compileToFragments(o, LEVEL_LIST), this.makeCode(\", \"), splatArgs, this.makeCode(\", function(){})\"));\n      }\n      answer = [];\n      base = new Value(this.variable);\n      if ((name = base.properties.pop()) && base.isComplex()) {\n        ref = o.scope.freeVariable('ref');\n        answer = answer.concat(this.makeCode(\"(\" + ref + \" = \"), base.compileToFragments(o, LEVEL_LIST), this.makeCode(\")\"), name.compileToFragments(o));\n      } else {\n        fun = base.compileToFragments(o, LEVEL_ACCESS);\n        if (SIMPLENUM.test(fragmentsToText(fun))) {\n          fun = this.wrapInBraces(fun);\n        }\n        if (name) {\n          ref = fragmentsToText(fun);\n          fun.push.apply(fun, name.compileToFragments(o));\n        } else {\n          ref = 'null';\n        }\n        answer = answer.concat(fun);\n      }\n      return answer = answer.concat(this.makeCode(\".apply(\" + ref + \", \"), splatArgs, this.makeCode(\")\"));\n    };\n\n    return Call;\n\n  })(Base);\n\n  exports.Extends = Extends = (function(superClass1) {\n    extend1(Extends, superClass1);\n\n    function Extends(child1, parent1) {\n      this.child = child1;\n      this.parent = parent1;\n    }\n\n    Extends.prototype.children = ['child', 'parent'];\n\n    Extends.prototype.compileToFragments = function(o) {\n      return new Call(new Value(new Literal(utility('extend', o))), [this.child, this.parent]).compileToFragments(o);\n    };\n\n    return Extends;\n\n  })(Base);\n\n  exports.Access = Access = (function(superClass1) {\n    extend1(Access, superClass1);\n\n    function Access(name1, tag) {\n      this.name = name1;\n      this.name.asKey = true;\n      this.soak = tag === 'soak';\n    }\n\n    Access.prototype.children = ['name'];\n\n    Access.prototype.compileToFragments = function(o) {\n      var name;\n      name = this.name.compileToFragments(o);\n      if (IDENTIFIER.test(fragmentsToText(name))) {\n        name.unshift(this.makeCode(\".\"));\n      } else {\n        name.unshift(this.makeCode(\"[\"));\n        name.push(this.makeCode(\"]\"));\n      }\n      return name;\n    };\n\n    Access.prototype.isComplex = NO;\n\n    return Access;\n\n  })(Base);\n\n  exports.Index = Index = (function(superClass1) {\n    extend1(Index, superClass1);\n\n    function Index(index1) {\n      this.index = index1;\n    }\n\n    Index.prototype.children = ['index'];\n\n    Index.prototype.compileToFragments = function(o) {\n      return [].concat(this.makeCode(\"[\"), this.index.compileToFragments(o, LEVEL_PAREN), this.makeCode(\"]\"));\n    };\n\n    Index.prototype.isComplex = function() {\n      return this.index.isComplex();\n    };\n\n    return Index;\n\n  })(Base);\n\n  exports.Range = Range = (function(superClass1) {\n    extend1(Range, superClass1);\n\n    Range.prototype.children = ['from', 'to'];\n\n    function Range(from1, to1, tag) {\n      this.from = from1;\n      this.to = to1;\n      this.exclusive = tag === 'exclusive';\n      this.equals = this.exclusive ? '' : '=';\n    }\n\n    Range.prototype.compileVariables = function(o) {\n      var isComplex, ref3, ref4, ref5, ref6, step;\n      o = merge(o, {\n        top: true\n      });\n      isComplex = del(o, 'isComplex');\n      ref3 = this.cacheToCodeFragments(this.from.cache(o, LEVEL_LIST, isComplex)), this.fromC = ref3[0], this.fromVar = ref3[1];\n      ref4 = this.cacheToCodeFragments(this.to.cache(o, LEVEL_LIST, isComplex)), this.toC = ref4[0], this.toVar = ref4[1];\n      if (step = del(o, 'step')) {\n        ref5 = this.cacheToCodeFragments(step.cache(o, LEVEL_LIST, isComplex)), this.step = ref5[0], this.stepVar = ref5[1];\n      }\n      ref6 = [this.fromVar.match(NUMBER), this.toVar.match(NUMBER)], this.fromNum = ref6[0], this.toNum = ref6[1];\n      if (this.stepVar) {\n        return this.stepNum = this.stepVar.match(NUMBER);\n      }\n    };\n\n    Range.prototype.compileNode = function(o) {\n      var cond, condPart, from, gt, idx, idxName, known, lt, namedIndex, ref3, ref4, stepPart, to, varPart;\n      if (!this.fromVar) {\n        this.compileVariables(o);\n      }\n      if (!o.index) {\n        return this.compileArray(o);\n      }\n      known = this.fromNum && this.toNum;\n      idx = del(o, 'index');\n      idxName = del(o, 'name');\n      namedIndex = idxName && idxName !== idx;\n      varPart = idx + \" = \" + this.fromC;\n      if (this.toC !== this.toVar) {\n        varPart += \", \" + this.toC;\n      }\n      if (this.step !== this.stepVar) {\n        varPart += \", \" + this.step;\n      }\n      ref3 = [idx + \" <\" + this.equals, idx + \" >\" + this.equals], lt = ref3[0], gt = ref3[1];\n      condPart = this.stepNum ? parseNum(this.stepNum[0]) > 0 ? lt + \" \" + this.toVar : gt + \" \" + this.toVar : known ? ((ref4 = [parseNum(this.fromNum[0]), parseNum(this.toNum[0])], from = ref4[0], to = ref4[1], ref4), from <= to ? lt + \" \" + to : gt + \" \" + to) : (cond = this.stepVar ? this.stepVar + \" > 0\" : this.fromVar + \" <= \" + this.toVar, cond + \" ? \" + lt + \" \" + this.toVar + \" : \" + gt + \" \" + this.toVar);\n      stepPart = this.stepVar ? idx + \" += \" + this.stepVar : known ? namedIndex ? from <= to ? \"++\" + idx : \"--\" + idx : from <= to ? idx + \"++\" : idx + \"--\" : namedIndex ? cond + \" ? ++\" + idx + \" : --\" + idx : cond + \" ? \" + idx + \"++ : \" + idx + \"--\";\n      if (namedIndex) {\n        varPart = idxName + \" = \" + varPart;\n      }\n      if (namedIndex) {\n        stepPart = idxName + \" = \" + stepPart;\n      }\n      return [this.makeCode(varPart + \"; \" + condPart + \"; \" + stepPart)];\n    };\n\n    Range.prototype.compileArray = function(o) {\n      var args, body, cond, hasArgs, i, idt, j, post, pre, range, ref3, ref4, result, results, vars;\n      if (this.fromNum && this.toNum && Math.abs(this.fromNum - this.toNum) <= 20) {\n        range = (function() {\n          results = [];\n          for (var j = ref3 = +this.fromNum, ref4 = +this.toNum; ref3 <= ref4 ? j <= ref4 : j >= ref4; ref3 <= ref4 ? j++ : j--){ results.push(j); }\n          return results;\n        }).apply(this);\n        if (this.exclusive) {\n          range.pop();\n        }\n        return [this.makeCode(\"[\" + (range.join(', ')) + \"]\")];\n      }\n      idt = this.tab + TAB;\n      i = o.scope.freeVariable('i', {\n        single: true\n      });\n      result = o.scope.freeVariable('results');\n      pre = \"\\n\" + idt + result + \" = [];\";\n      if (this.fromNum && this.toNum) {\n        o.index = i;\n        body = fragmentsToText(this.compileNode(o));\n      } else {\n        vars = (i + \" = \" + this.fromC) + (this.toC !== this.toVar ? \", \" + this.toC : '');\n        cond = this.fromVar + \" <= \" + this.toVar;\n        body = \"var \" + vars + \"; \" + cond + \" ? \" + i + \" <\" + this.equals + \" \" + this.toVar + \" : \" + i + \" >\" + this.equals + \" \" + this.toVar + \"; \" + cond + \" ? \" + i + \"++ : \" + i + \"--\";\n      }\n      post = \"{ \" + result + \".push(\" + i + \"); }\\n\" + idt + \"return \" + result + \";\\n\" + o.indent;\n      hasArgs = function(node) {\n        return node != null ? node.contains(isLiteralArguments) : void 0;\n      };\n      if (hasArgs(this.from) || hasArgs(this.to)) {\n        args = ', arguments';\n      }\n      return [this.makeCode(\"(function() {\" + pre + \"\\n\" + idt + \"for (\" + body + \")\" + post + \"}).apply(this\" + (args != null ? args : '') + \")\")];\n    };\n\n    return Range;\n\n  })(Base);\n\n  exports.Slice = Slice = (function(superClass1) {\n    extend1(Slice, superClass1);\n\n    Slice.prototype.children = ['range'];\n\n    function Slice(range1) {\n      this.range = range1;\n      Slice.__super__.constructor.call(this);\n    }\n\n    Slice.prototype.compileNode = function(o) {\n      var compiled, compiledText, from, fromCompiled, ref3, to, toStr;\n      ref3 = this.range, to = ref3.to, from = ref3.from;\n      fromCompiled = from && from.compileToFragments(o, LEVEL_PAREN) || [this.makeCode('0')];\n      if (to) {\n        compiled = to.compileToFragments(o, LEVEL_PAREN);\n        compiledText = fragmentsToText(compiled);\n        if (!(!this.range.exclusive && +compiledText === -1)) {\n          toStr = ', ' + (this.range.exclusive ? compiledText : SIMPLENUM.test(compiledText) ? \"\" + (+compiledText + 1) : (compiled = to.compileToFragments(o, LEVEL_ACCESS), \"+\" + (fragmentsToText(compiled)) + \" + 1 || 9e9\"));\n        }\n      }\n      return [this.makeCode(\".slice(\" + (fragmentsToText(fromCompiled)) + (toStr || '') + \")\")];\n    };\n\n    return Slice;\n\n  })(Base);\n\n  exports.Obj = Obj = (function(superClass1) {\n    extend1(Obj, superClass1);\n\n    function Obj(props, generated) {\n      this.generated = generated != null ? generated : false;\n      this.objects = this.properties = props || [];\n    }\n\n    Obj.prototype.children = ['properties'];\n\n    Obj.prototype.compileNode = function(o) {\n      var answer, dynamicIndex, hasDynamic, i, idt, indent, j, join, k, key, l, lastNoncom, len1, len2, len3, node, oref, prop, props, ref3, value;\n      props = this.properties;\n      if (this.generated) {\n        for (j = 0, len1 = props.length; j < len1; j++) {\n          node = props[j];\n          if (node instanceof Value) {\n            node.error('cannot have an implicit value in an implicit object');\n          }\n        }\n      }\n      for (dynamicIndex = k = 0, len2 = props.length; k < len2; dynamicIndex = ++k) {\n        prop = props[dynamicIndex];\n        if ((prop.variable || prop).base instanceof Parens) {\n          break;\n        }\n      }\n      hasDynamic = dynamicIndex < props.length;\n      idt = o.indent += TAB;\n      lastNoncom = this.lastNonComment(this.properties);\n      answer = [];\n      if (hasDynamic) {\n        oref = o.scope.freeVariable('obj');\n        answer.push(this.makeCode(\"(\\n\" + idt + oref + \" = \"));\n      }\n      answer.push(this.makeCode(\"{\" + (props.length === 0 || dynamicIndex === 0 ? '}' : '\\n')));\n      for (i = l = 0, len3 = props.length; l < len3; i = ++l) {\n        prop = props[i];\n        if (i === dynamicIndex) {\n          if (i !== 0) {\n            answer.push(this.makeCode(\"\\n\" + idt + \"}\"));\n          }\n          answer.push(this.makeCode(',\\n'));\n        }\n        join = i === props.length - 1 || i === dynamicIndex - 1 ? '' : prop === lastNoncom || prop instanceof Comment ? '\\n' : ',\\n';\n        indent = prop instanceof Comment ? '' : idt;\n        if (hasDynamic && i < dynamicIndex) {\n          indent += TAB;\n        }\n        if (prop instanceof Assign) {\n          if (prop.context !== 'object') {\n            prop.operatorToken.error(\"unexpected \" + prop.operatorToken.value);\n          }\n          if (prop.variable instanceof Value && prop.variable.hasProperties()) {\n            prop.variable.error('invalid object key');\n          }\n        }\n        if (prop instanceof Value && prop[\"this\"]) {\n          prop = new Assign(prop.properties[0].name, prop, 'object');\n        }\n        if (!(prop instanceof Comment)) {\n          if (i < dynamicIndex) {\n            if (!(prop instanceof Assign)) {\n              prop = new Assign(prop, prop, 'object');\n            }\n            (prop.variable.base || prop.variable).asKey = true;\n          } else {\n            if (prop instanceof Assign) {\n              key = prop.variable;\n              value = prop.value;\n            } else {\n              ref3 = prop.base.cache(o), key = ref3[0], value = ref3[1];\n            }\n            prop = new Assign(new Value(new Literal(oref), [new Access(key)]), value);\n          }\n        }\n        if (indent) {\n          answer.push(this.makeCode(indent));\n        }\n        answer.push.apply(answer, prop.compileToFragments(o, LEVEL_TOP));\n        if (join) {\n          answer.push(this.makeCode(join));\n        }\n      }\n      if (hasDynamic) {\n        answer.push(this.makeCode(\",\\n\" + idt + oref + \"\\n\" + this.tab + \")\"));\n      } else {\n        if (props.length !== 0) {\n          answer.push(this.makeCode(\"\\n\" + this.tab + \"}\"));\n        }\n      }\n      if (this.front && !hasDynamic) {\n        return this.wrapInBraces(answer);\n      } else {\n        return answer;\n      }\n    };\n\n    Obj.prototype.assigns = function(name) {\n      var j, len1, prop, ref3;\n      ref3 = this.properties;\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        prop = ref3[j];\n        if (prop.assigns(name)) {\n          return true;\n        }\n      }\n      return false;\n    };\n\n    return Obj;\n\n  })(Base);\n\n  exports.Arr = Arr = (function(superClass1) {\n    extend1(Arr, superClass1);\n\n    function Arr(objs) {\n      this.objects = objs || [];\n    }\n\n    Arr.prototype.children = ['objects'];\n\n    Arr.prototype.compileNode = function(o) {\n      var answer, compiledObjs, fragments, index, j, len1, obj;\n      if (!this.objects.length) {\n        return [this.makeCode('[]')];\n      }\n      o.indent += TAB;\n      answer = Splat.compileSplattedArray(o, this.objects);\n      if (answer.length) {\n        return answer;\n      }\n      answer = [];\n      compiledObjs = (function() {\n        var j, len1, ref3, results;\n        ref3 = this.objects;\n        results = [];\n        for (j = 0, len1 = ref3.length; j < len1; j++) {\n          obj = ref3[j];\n          results.push(obj.compileToFragments(o, LEVEL_LIST));\n        }\n        return results;\n      }).call(this);\n      for (index = j = 0, len1 = compiledObjs.length; j < len1; index = ++j) {\n        fragments = compiledObjs[index];\n        if (index) {\n          answer.push(this.makeCode(\", \"));\n        }\n        answer.push.apply(answer, fragments);\n      }\n      if (fragmentsToText(answer).indexOf('\\n') >= 0) {\n        answer.unshift(this.makeCode(\"[\\n\" + o.indent));\n        answer.push(this.makeCode(\"\\n\" + this.tab + \"]\"));\n      } else {\n        answer.unshift(this.makeCode(\"[\"));\n        answer.push(this.makeCode(\"]\"));\n      }\n      return answer;\n    };\n\n    Arr.prototype.assigns = function(name) {\n      var j, len1, obj, ref3;\n      ref3 = this.objects;\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        obj = ref3[j];\n        if (obj.assigns(name)) {\n          return true;\n        }\n      }\n      return false;\n    };\n\n    return Arr;\n\n  })(Base);\n\n  exports.Class = Class = (function(superClass1) {\n    extend1(Class, superClass1);\n\n    function Class(variable1, parent1, body1) {\n      this.variable = variable1;\n      this.parent = parent1;\n      this.body = body1 != null ? body1 : new Block;\n      this.boundFuncs = [];\n      this.body.classBody = true;\n    }\n\n    Class.prototype.children = ['variable', 'parent', 'body'];\n\n    Class.prototype.determineName = function() {\n      var decl, ref3, tail;\n      if (!this.variable) {\n        return null;\n      }\n      ref3 = this.variable.properties, tail = ref3[ref3.length - 1];\n      decl = tail ? tail instanceof Access && tail.name.value : this.variable.base.value;\n      if (indexOf.call(STRICT_PROSCRIBED, decl) >= 0) {\n        this.variable.error(\"class variable name may not be \" + decl);\n      }\n      return decl && (decl = IDENTIFIER.test(decl) && decl);\n    };\n\n    Class.prototype.setContext = function(name) {\n      return this.body.traverseChildren(false, function(node) {\n        if (node.classBody) {\n          return false;\n        }\n        if (node instanceof Literal && node.value === 'this') {\n          return node.value = name;\n        } else if (node instanceof Code) {\n          if (node.bound) {\n            return node.context = name;\n          }\n        }\n      });\n    };\n\n    Class.prototype.addBoundFunctions = function(o) {\n      var bvar, j, len1, lhs, ref3;\n      ref3 = this.boundFuncs;\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        bvar = ref3[j];\n        lhs = (new Value(new Literal(\"this\"), [new Access(bvar)])).compile(o);\n        this.ctor.body.unshift(new Literal(lhs + \" = \" + (utility('bind', o)) + \"(\" + lhs + \", this)\"));\n      }\n    };\n\n    Class.prototype.addProperties = function(node, name, o) {\n      var acc, assign, base, exprs, func, props;\n      props = node.base.properties.slice(0);\n      exprs = (function() {\n        var results;\n        results = [];\n        while (assign = props.shift()) {\n          if (assign instanceof Assign) {\n            base = assign.variable.base;\n            delete assign.context;\n            func = assign.value;\n            if (base.value === 'constructor') {\n              if (this.ctor) {\n                assign.error('cannot define more than one constructor in a class');\n              }\n              if (func.bound) {\n                assign.error('cannot define a constructor as a bound function');\n              }\n              if (func instanceof Code) {\n                assign = this.ctor = func;\n              } else {\n                this.externalCtor = o.classScope.freeVariable('class');\n                assign = new Assign(new Literal(this.externalCtor), func);\n              }\n            } else {\n              if (assign.variable[\"this\"]) {\n                func[\"static\"] = true;\n              } else {\n                acc = base.isComplex() ? new Index(base) : new Access(base);\n                assign.variable = new Value(new Literal(name), [new Access(new Literal('prototype')), acc]);\n                if (func instanceof Code && func.bound) {\n                  this.boundFuncs.push(base);\n                  func.bound = false;\n                }\n              }\n            }\n          }\n          results.push(assign);\n        }\n        return results;\n      }).call(this);\n      return compact(exprs);\n    };\n\n    Class.prototype.walkBody = function(name, o) {\n      return this.traverseChildren(false, (function(_this) {\n        return function(child) {\n          var cont, exps, i, j, len1, node, ref3;\n          cont = true;\n          if (child instanceof Class) {\n            return false;\n          }\n          if (child instanceof Block) {\n            ref3 = exps = child.expressions;\n            for (i = j = 0, len1 = ref3.length; j < len1; i = ++j) {\n              node = ref3[i];\n              if (node instanceof Assign && node.variable.looksStatic(name)) {\n                node.value[\"static\"] = true;\n              } else if (node instanceof Value && node.isObject(true)) {\n                cont = false;\n                exps[i] = _this.addProperties(node, name, o);\n              }\n            }\n            child.expressions = exps = flatten(exps);\n          }\n          return cont && !(child instanceof Class);\n        };\n      })(this));\n    };\n\n    Class.prototype.hoistDirectivePrologue = function() {\n      var expressions, index, node;\n      index = 0;\n      expressions = this.body.expressions;\n      while ((node = expressions[index]) && node instanceof Comment || node instanceof Value && node.isString()) {\n        ++index;\n      }\n      return this.directives = expressions.splice(0, index);\n    };\n\n    Class.prototype.ensureConstructor = function(name) {\n      if (!this.ctor) {\n        this.ctor = new Code;\n        if (this.externalCtor) {\n          this.ctor.body.push(new Literal(this.externalCtor + \".apply(this, arguments)\"));\n        } else if (this.parent) {\n          this.ctor.body.push(new Literal(name + \".__super__.constructor.apply(this, arguments)\"));\n        }\n        this.ctor.body.makeReturn();\n        this.body.expressions.unshift(this.ctor);\n      }\n      this.ctor.ctor = this.ctor.name = name;\n      this.ctor.klass = null;\n      return this.ctor.noReturn = true;\n    };\n\n    Class.prototype.compileNode = function(o) {\n      var args, argumentsNode, func, jumpNode, klass, lname, name, ref3, superClass;\n      if (jumpNode = this.body.jumps()) {\n        jumpNode.error('Class bodies cannot contain pure statements');\n      }\n      if (argumentsNode = this.body.contains(isLiteralArguments)) {\n        argumentsNode.error(\"Class bodies shouldn't reference arguments\");\n      }\n      name = this.determineName() || '_Class';\n      if (name.reserved) {\n        name = \"_\" + name;\n      }\n      lname = new Literal(name);\n      func = new Code([], Block.wrap([this.body]));\n      args = [];\n      o.classScope = func.makeScope(o.scope);\n      this.hoistDirectivePrologue();\n      this.setContext(name);\n      this.walkBody(name, o);\n      this.ensureConstructor(name);\n      this.addBoundFunctions(o);\n      this.body.spaced = true;\n      this.body.expressions.push(lname);\n      if (this.parent) {\n        superClass = new Literal(o.classScope.freeVariable('superClass', {\n          reserve: false\n        }));\n        this.body.expressions.unshift(new Extends(lname, superClass));\n        func.params.push(new Param(superClass));\n        args.push(this.parent);\n      }\n      (ref3 = this.body.expressions).unshift.apply(ref3, this.directives);\n      klass = new Parens(new Call(func, args));\n      if (this.variable) {\n        klass = new Assign(this.variable, klass);\n      }\n      return klass.compileToFragments(o);\n    };\n\n    return Class;\n\n  })(Base);\n\n  exports.Assign = Assign = (function(superClass1) {\n    extend1(Assign, superClass1);\n\n    function Assign(variable1, value1, context, options) {\n      var forbidden, name, ref3;\n      this.variable = variable1;\n      this.value = value1;\n      this.context = context;\n      if (options == null) {\n        options = {};\n      }\n      this.param = options.param, this.subpattern = options.subpattern, this.operatorToken = options.operatorToken;\n      forbidden = (ref3 = (name = this.variable.unwrapAll().value), indexOf.call(STRICT_PROSCRIBED, ref3) >= 0);\n      if (forbidden && this.context !== 'object') {\n        this.variable.error(\"variable name may not be \\\"\" + name + \"\\\"\");\n      }\n    }\n\n    Assign.prototype.children = ['variable', 'value'];\n\n    Assign.prototype.isStatement = function(o) {\n      return (o != null ? o.level : void 0) === LEVEL_TOP && (this.context != null) && indexOf.call(this.context, \"?\") >= 0;\n    };\n\n    Assign.prototype.assigns = function(name) {\n      return this[this.context === 'object' ? 'value' : 'variable'].assigns(name);\n    };\n\n    Assign.prototype.unfoldSoak = function(o) {\n      return unfoldSoak(o, this, 'variable');\n    };\n\n    Assign.prototype.compileNode = function(o) {\n      var answer, compiledName, isValue, j, name, properties, prototype, ref3, ref4, ref5, ref6, ref7, val, varBase;\n      if (isValue = this.variable instanceof Value) {\n        if (this.variable.isArray() || this.variable.isObject()) {\n          return this.compilePatternMatch(o);\n        }\n        if (this.variable.isSplice()) {\n          return this.compileSplice(o);\n        }\n        if ((ref3 = this.context) === '||=' || ref3 === '&&=' || ref3 === '?=') {\n          return this.compileConditional(o);\n        }\n        if ((ref4 = this.context) === '**=' || ref4 === '//=' || ref4 === '%%=') {\n          return this.compileSpecialMath(o);\n        }\n      }\n      if (this.value instanceof Code) {\n        if (this.value[\"static\"]) {\n          this.value.klass = this.variable.base;\n          this.value.name = this.variable.properties[0];\n          this.value.variable = this.variable;\n        } else if (((ref5 = this.variable.properties) != null ? ref5.length : void 0) >= 2) {\n          ref6 = this.variable.properties, properties = 3 <= ref6.length ? slice.call(ref6, 0, j = ref6.length - 2) : (j = 0, []), prototype = ref6[j++], name = ref6[j++];\n          if (((ref7 = prototype.name) != null ? ref7.value : void 0) === 'prototype') {\n            this.value.klass = new Value(this.variable.base, properties);\n            this.value.name = name;\n            this.value.variable = this.variable;\n          }\n        }\n      }\n      if (!this.context) {\n        varBase = this.variable.unwrapAll();\n        if (!varBase.isAssignable()) {\n          this.variable.error(\"\\\"\" + (this.variable.compile(o)) + \"\\\" cannot be assigned\");\n        }\n        if (!(typeof varBase.hasProperties === \"function\" ? varBase.hasProperties() : void 0)) {\n          if (this.param) {\n            o.scope.add(varBase.value, 'var');\n          } else {\n            o.scope.find(varBase.value);\n          }\n        }\n      }\n      val = this.value.compileToFragments(o, LEVEL_LIST);\n      if (isValue && this.variable.base instanceof Obj) {\n        this.variable.front = true;\n      }\n      compiledName = this.variable.compileToFragments(o, LEVEL_LIST);\n      if (this.context === 'object') {\n        return compiledName.concat(this.makeCode(\": \"), val);\n      }\n      answer = compiledName.concat(this.makeCode(\" \" + (this.context || '=') + \" \"), val);\n      if (o.level <= LEVEL_LIST) {\n        return answer;\n      } else {\n        return this.wrapInBraces(answer);\n      }\n    };\n\n    Assign.prototype.compilePatternMatch = function(o) {\n      var acc, assigns, code, defaultValue, expandedIdx, fragments, i, idx, isObject, ivar, j, len1, name, obj, objects, olen, ref, ref3, ref4, ref5, ref6, ref7, rest, top, val, value, vvar, vvarText;\n      top = o.level === LEVEL_TOP;\n      value = this.value;\n      objects = this.variable.base.objects;\n      if (!(olen = objects.length)) {\n        code = value.compileToFragments(o);\n        if (o.level >= LEVEL_OP) {\n          return this.wrapInBraces(code);\n        } else {\n          return code;\n        }\n      }\n      obj = objects[0];\n      if (olen === 1 && obj instanceof Expansion) {\n        obj.error('Destructuring assignment has no target');\n      }\n      isObject = this.variable.isObject();\n      if (top && olen === 1 && !(obj instanceof Splat)) {\n        defaultValue = null;\n        if (obj instanceof Assign && obj.context === 'object') {\n          ref3 = obj, (ref4 = ref3.variable, idx = ref4.base), obj = ref3.value;\n          if (obj instanceof Assign) {\n            defaultValue = obj.value;\n            obj = obj.variable;\n          }\n        } else {\n          if (obj instanceof Assign) {\n            defaultValue = obj.value;\n            obj = obj.variable;\n          }\n          idx = isObject ? obj[\"this\"] ? obj.properties[0].name : obj : new Literal(0);\n        }\n        acc = IDENTIFIER.test(idx.unwrap().value);\n        value = new Value(value);\n        value.properties.push(new (acc ? Access : Index)(idx));\n        if (ref5 = obj.unwrap().value, indexOf.call(RESERVED, ref5) >= 0) {\n          obj.error(\"assignment to a reserved word: \" + (obj.compile(o)));\n        }\n        if (defaultValue) {\n          value = new Op('?', value, defaultValue);\n        }\n        return new Assign(obj, value, null, {\n          param: this.param\n        }).compileToFragments(o, LEVEL_TOP);\n      }\n      vvar = value.compileToFragments(o, LEVEL_LIST);\n      vvarText = fragmentsToText(vvar);\n      assigns = [];\n      expandedIdx = false;\n      if (!IDENTIFIER.test(vvarText) || this.variable.assigns(vvarText)) {\n        assigns.push([this.makeCode((ref = o.scope.freeVariable('ref')) + \" = \")].concat(slice.call(vvar)));\n        vvar = [this.makeCode(ref)];\n        vvarText = ref;\n      }\n      for (i = j = 0, len1 = objects.length; j < len1; i = ++j) {\n        obj = objects[i];\n        idx = i;\n        if (!expandedIdx && obj instanceof Splat) {\n          name = obj.name.unwrap().value;\n          obj = obj.unwrap();\n          val = olen + \" <= \" + vvarText + \".length ? \" + (utility('slice', o)) + \".call(\" + vvarText + \", \" + i;\n          if (rest = olen - i - 1) {\n            ivar = o.scope.freeVariable('i', {\n              single: true\n            });\n            val += \", \" + ivar + \" = \" + vvarText + \".length - \" + rest + \") : (\" + ivar + \" = \" + i + \", [])\";\n          } else {\n            val += \") : []\";\n          }\n          val = new Literal(val);\n          expandedIdx = ivar + \"++\";\n        } else if (!expandedIdx && obj instanceof Expansion) {\n          if (rest = olen - i - 1) {\n            if (rest === 1) {\n              expandedIdx = vvarText + \".length - 1\";\n            } else {\n              ivar = o.scope.freeVariable('i', {\n                single: true\n              });\n              val = new Literal(ivar + \" = \" + vvarText + \".length - \" + rest);\n              expandedIdx = ivar + \"++\";\n              assigns.push(val.compileToFragments(o, LEVEL_LIST));\n            }\n          }\n          continue;\n        } else {\n          if (obj instanceof Splat || obj instanceof Expansion) {\n            obj.error(\"multiple splats/expansions are disallowed in an assignment\");\n          }\n          defaultValue = null;\n          if (obj instanceof Assign && obj.context === 'object') {\n            ref6 = obj, (ref7 = ref6.variable, idx = ref7.base), obj = ref6.value;\n            if (obj instanceof Assign) {\n              defaultValue = obj.value;\n              obj = obj.variable;\n            }\n          } else {\n            if (obj instanceof Assign) {\n              defaultValue = obj.value;\n              obj = obj.variable;\n            }\n            idx = isObject ? obj[\"this\"] ? obj.properties[0].name : obj : new Literal(expandedIdx || idx);\n          }\n          name = obj.unwrap().value;\n          acc = IDENTIFIER.test(idx.unwrap().value);\n          val = new Value(new Literal(vvarText), [new (acc ? Access : Index)(idx)]);\n          if (defaultValue) {\n            val = new Op('?', val, defaultValue);\n          }\n        }\n        if ((name != null) && indexOf.call(RESERVED, name) >= 0) {\n          obj.error(\"assignment to a reserved word: \" + (obj.compile(o)));\n        }\n        assigns.push(new Assign(obj, val, null, {\n          param: this.param,\n          subpattern: true\n        }).compileToFragments(o, LEVEL_LIST));\n      }\n      if (!(top || this.subpattern)) {\n        assigns.push(vvar);\n      }\n      fragments = this.joinFragmentArrays(assigns, ', ');\n      if (o.level < LEVEL_LIST) {\n        return fragments;\n      } else {\n        return this.wrapInBraces(fragments);\n      }\n    };\n\n    Assign.prototype.compileConditional = function(o) {\n      var fragments, left, ref3, right;\n      ref3 = this.variable.cacheReference(o), left = ref3[0], right = ref3[1];\n      if (!left.properties.length && left.base instanceof Literal && left.base.value !== \"this\" && !o.scope.check(left.base.value)) {\n        this.variable.error(\"the variable \\\"\" + left.base.value + \"\\\" can't be assigned with \" + this.context + \" because it has not been declared before\");\n      }\n      if (indexOf.call(this.context, \"?\") >= 0) {\n        o.isExistentialEquals = true;\n        return new If(new Existence(left), right, {\n          type: 'if'\n        }).addElse(new Assign(right, this.value, '=')).compileToFragments(o);\n      } else {\n        fragments = new Op(this.context.slice(0, -1), left, new Assign(right, this.value, '=')).compileToFragments(o);\n        if (o.level <= LEVEL_LIST) {\n          return fragments;\n        } else {\n          return this.wrapInBraces(fragments);\n        }\n      }\n    };\n\n    Assign.prototype.compileSpecialMath = function(o) {\n      var left, ref3, right;\n      ref3 = this.variable.cacheReference(o), left = ref3[0], right = ref3[1];\n      return new Assign(left, new Op(this.context.slice(0, -1), right, this.value)).compileToFragments(o);\n    };\n\n    Assign.prototype.compileSplice = function(o) {\n      var answer, exclusive, from, fromDecl, fromRef, name, ref3, ref4, ref5, to, valDef, valRef;\n      ref3 = this.variable.properties.pop().range, from = ref3.from, to = ref3.to, exclusive = ref3.exclusive;\n      name = this.variable.compile(o);\n      if (from) {\n        ref4 = this.cacheToCodeFragments(from.cache(o, LEVEL_OP)), fromDecl = ref4[0], fromRef = ref4[1];\n      } else {\n        fromDecl = fromRef = '0';\n      }\n      if (to) {\n        if (from instanceof Value && from.isSimpleNumber() && to instanceof Value && to.isSimpleNumber()) {\n          to = to.compile(o) - fromRef;\n          if (!exclusive) {\n            to += 1;\n          }\n        } else {\n          to = to.compile(o, LEVEL_ACCESS) + ' - ' + fromRef;\n          if (!exclusive) {\n            to += ' + 1';\n          }\n        }\n      } else {\n        to = \"9e9\";\n      }\n      ref5 = this.value.cache(o, LEVEL_LIST), valDef = ref5[0], valRef = ref5[1];\n      answer = [].concat(this.makeCode(\"[].splice.apply(\" + name + \", [\" + fromDecl + \", \" + to + \"].concat(\"), valDef, this.makeCode(\")), \"), valRef);\n      if (o.level > LEVEL_TOP) {\n        return this.wrapInBraces(answer);\n      } else {\n        return answer;\n      }\n    };\n\n    return Assign;\n\n  })(Base);\n\n  exports.Code = Code = (function(superClass1) {\n    extend1(Code, superClass1);\n\n    function Code(params, body, tag) {\n      this.params = params || [];\n      this.body = body || new Block;\n      this.bound = tag === 'boundfunc';\n      this.isGenerator = !!this.body.contains(function(node) {\n        var ref3;\n        return node instanceof Op && ((ref3 = node.operator) === 'yield' || ref3 === 'yield*');\n      });\n    }\n\n    Code.prototype.children = ['params', 'body'];\n\n    Code.prototype.isStatement = function() {\n      return !!this.ctor;\n    };\n\n    Code.prototype.jumps = NO;\n\n    Code.prototype.makeScope = function(parentScope) {\n      return new Scope(parentScope, this.body, this);\n    };\n\n    Code.prototype.compileNode = function(o) {\n      var answer, boundfunc, code, exprs, i, j, k, l, len1, len2, len3, len4, len5, len6, lit, m, p, param, params, q, r, ref, ref3, ref4, ref5, ref6, ref7, ref8, splats, uniqs, val, wasEmpty, wrapper;\n      if (this.bound && ((ref3 = o.scope.method) != null ? ref3.bound : void 0)) {\n        this.context = o.scope.method.context;\n      }\n      if (this.bound && !this.context) {\n        this.context = '_this';\n        wrapper = new Code([new Param(new Literal(this.context))], new Block([this]));\n        boundfunc = new Call(wrapper, [new Literal('this')]);\n        boundfunc.updateLocationDataIfMissing(this.locationData);\n        return boundfunc.compileNode(o);\n      }\n      o.scope = del(o, 'classScope') || this.makeScope(o.scope);\n      o.scope.shared = del(o, 'sharedScope');\n      o.indent += TAB;\n      delete o.bare;\n      delete o.isExistentialEquals;\n      params = [];\n      exprs = [];\n      ref4 = this.params;\n      for (j = 0, len1 = ref4.length; j < len1; j++) {\n        param = ref4[j];\n        if (!(param instanceof Expansion)) {\n          o.scope.parameter(param.asReference(o));\n        }\n      }\n      ref5 = this.params;\n      for (k = 0, len2 = ref5.length; k < len2; k++) {\n        param = ref5[k];\n        if (!(param.splat || param instanceof Expansion)) {\n          continue;\n        }\n        ref6 = this.params;\n        for (l = 0, len3 = ref6.length; l < len3; l++) {\n          p = ref6[l];\n          if (!(p instanceof Expansion) && p.name.value) {\n            o.scope.add(p.name.value, 'var', true);\n          }\n        }\n        splats = new Assign(new Value(new Arr((function() {\n          var len4, m, ref7, results;\n          ref7 = this.params;\n          results = [];\n          for (m = 0, len4 = ref7.length; m < len4; m++) {\n            p = ref7[m];\n            results.push(p.asReference(o));\n          }\n          return results;\n        }).call(this))), new Value(new Literal('arguments')));\n        break;\n      }\n      ref7 = this.params;\n      for (m = 0, len4 = ref7.length; m < len4; m++) {\n        param = ref7[m];\n        if (param.isComplex()) {\n          val = ref = param.asReference(o);\n          if (param.value) {\n            val = new Op('?', ref, param.value);\n          }\n          exprs.push(new Assign(new Value(param.name), val, '=', {\n            param: true\n          }));\n        } else {\n          ref = param;\n          if (param.value) {\n            lit = new Literal(ref.name.value + ' == null');\n            val = new Assign(new Value(param.name), param.value, '=');\n            exprs.push(new If(lit, val));\n          }\n        }\n        if (!splats) {\n          params.push(ref);\n        }\n      }\n      wasEmpty = this.body.isEmpty();\n      if (splats) {\n        exprs.unshift(splats);\n      }\n      if (exprs.length) {\n        (ref8 = this.body.expressions).unshift.apply(ref8, exprs);\n      }\n      for (i = q = 0, len5 = params.length; q < len5; i = ++q) {\n        p = params[i];\n        params[i] = p.compileToFragments(o);\n        o.scope.parameter(fragmentsToText(params[i]));\n      }\n      uniqs = [];\n      this.eachParamName(function(name, node) {\n        if (indexOf.call(uniqs, name) >= 0) {\n          node.error(\"multiple parameters named \" + name);\n        }\n        return uniqs.push(name);\n      });\n      if (!(wasEmpty || this.noReturn)) {\n        this.body.makeReturn();\n      }\n      code = 'function';\n      if (this.isGenerator) {\n        code += '*';\n      }\n      if (this.ctor) {\n        code += ' ' + this.name;\n      }\n      code += '(';\n      answer = [this.makeCode(code)];\n      for (i = r = 0, len6 = params.length; r < len6; i = ++r) {\n        p = params[i];\n        if (i) {\n          answer.push(this.makeCode(\", \"));\n        }\n        answer.push.apply(answer, p);\n      }\n      answer.push(this.makeCode(') {'));\n      if (!this.body.isEmpty()) {\n        answer = answer.concat(this.makeCode(\"\\n\"), this.body.compileWithDeclarations(o), this.makeCode(\"\\n\" + this.tab));\n      }\n      answer.push(this.makeCode('}'));\n      if (this.ctor) {\n        return [this.makeCode(this.tab)].concat(slice.call(answer));\n      }\n      if (this.front || (o.level >= LEVEL_ACCESS)) {\n        return this.wrapInBraces(answer);\n      } else {\n        return answer;\n      }\n    };\n\n    Code.prototype.eachParamName = function(iterator) {\n      var j, len1, param, ref3, results;\n      ref3 = this.params;\n      results = [];\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        param = ref3[j];\n        results.push(param.eachName(iterator));\n      }\n      return results;\n    };\n\n    Code.prototype.traverseChildren = function(crossScope, func) {\n      if (crossScope) {\n        return Code.__super__.traverseChildren.call(this, crossScope, func);\n      }\n    };\n\n    return Code;\n\n  })(Base);\n\n  exports.Param = Param = (function(superClass1) {\n    extend1(Param, superClass1);\n\n    function Param(name1, value1, splat) {\n      var name, ref3, token;\n      this.name = name1;\n      this.value = value1;\n      this.splat = splat;\n      if (ref3 = (name = this.name.unwrapAll().value), indexOf.call(STRICT_PROSCRIBED, ref3) >= 0) {\n        this.name.error(\"parameter name \\\"\" + name + \"\\\" is not allowed\");\n      }\n      if (this.name instanceof Obj && this.name.generated) {\n        token = this.name.objects[0].operatorToken;\n        token.error(\"unexpected \" + token.value);\n      }\n    }\n\n    Param.prototype.children = ['name', 'value'];\n\n    Param.prototype.compileToFragments = function(o) {\n      return this.name.compileToFragments(o, LEVEL_LIST);\n    };\n\n    Param.prototype.asReference = function(o) {\n      var name, node;\n      if (this.reference) {\n        return this.reference;\n      }\n      node = this.name;\n      if (node[\"this\"]) {\n        name = node.properties[0].name.value;\n        if (name.reserved) {\n          name = \"_\" + name;\n        }\n        node = new Literal(o.scope.freeVariable(name));\n      } else if (node.isComplex()) {\n        node = new Literal(o.scope.freeVariable('arg'));\n      }\n      node = new Value(node);\n      if (this.splat) {\n        node = new Splat(node);\n      }\n      node.updateLocationDataIfMissing(this.locationData);\n      return this.reference = node;\n    };\n\n    Param.prototype.isComplex = function() {\n      return this.name.isComplex();\n    };\n\n    Param.prototype.eachName = function(iterator, name) {\n      var atParam, j, len1, node, obj, ref3;\n      if (name == null) {\n        name = this.name;\n      }\n      atParam = function(obj) {\n        return iterator(\"@\" + obj.properties[0].name.value, obj);\n      };\n      if (name instanceof Literal) {\n        return iterator(name.value, name);\n      }\n      if (name instanceof Value) {\n        return atParam(name);\n      }\n      ref3 = name.objects;\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        obj = ref3[j];\n        if (obj instanceof Assign && (obj.context == null)) {\n          obj = obj.variable;\n        }\n        if (obj instanceof Assign) {\n          this.eachName(iterator, obj.value.unwrap());\n        } else if (obj instanceof Splat) {\n          node = obj.name.unwrap();\n          iterator(node.value, node);\n        } else if (obj instanceof Value) {\n          if (obj.isArray() || obj.isObject()) {\n            this.eachName(iterator, obj.base);\n          } else if (obj[\"this\"]) {\n            atParam(obj);\n          } else {\n            iterator(obj.base.value, obj.base);\n          }\n        } else if (!(obj instanceof Expansion)) {\n          obj.error(\"illegal parameter \" + (obj.compile()));\n        }\n      }\n    };\n\n    return Param;\n\n  })(Base);\n\n  exports.Splat = Splat = (function(superClass1) {\n    extend1(Splat, superClass1);\n\n    Splat.prototype.children = ['name'];\n\n    Splat.prototype.isAssignable = YES;\n\n    function Splat(name) {\n      this.name = name.compile ? name : new Literal(name);\n    }\n\n    Splat.prototype.assigns = function(name) {\n      return this.name.assigns(name);\n    };\n\n    Splat.prototype.compileToFragments = function(o) {\n      return this.name.compileToFragments(o);\n    };\n\n    Splat.prototype.unwrap = function() {\n      return this.name;\n    };\n\n    Splat.compileSplattedArray = function(o, list, apply) {\n      var args, base, compiledNode, concatPart, fragments, i, index, j, last, len1, node;\n      index = -1;\n      while ((node = list[++index]) && !(node instanceof Splat)) {\n        continue;\n      }\n      if (index >= list.length) {\n        return [];\n      }\n      if (list.length === 1) {\n        node = list[0];\n        fragments = node.compileToFragments(o, LEVEL_LIST);\n        if (apply) {\n          return fragments;\n        }\n        return [].concat(node.makeCode((utility('slice', o)) + \".call(\"), fragments, node.makeCode(\")\"));\n      }\n      args = list.slice(index);\n      for (i = j = 0, len1 = args.length; j < len1; i = ++j) {\n        node = args[i];\n        compiledNode = node.compileToFragments(o, LEVEL_LIST);\n        args[i] = node instanceof Splat ? [].concat(node.makeCode((utility('slice', o)) + \".call(\"), compiledNode, node.makeCode(\")\")) : [].concat(node.makeCode(\"[\"), compiledNode, node.makeCode(\"]\"));\n      }\n      if (index === 0) {\n        node = list[0];\n        concatPart = node.joinFragmentArrays(args.slice(1), ', ');\n        return args[0].concat(node.makeCode(\".concat(\"), concatPart, node.makeCode(\")\"));\n      }\n      base = (function() {\n        var k, len2, ref3, results;\n        ref3 = list.slice(0, index);\n        results = [];\n        for (k = 0, len2 = ref3.length; k < len2; k++) {\n          node = ref3[k];\n          results.push(node.compileToFragments(o, LEVEL_LIST));\n        }\n        return results;\n      })();\n      base = list[0].joinFragmentArrays(base, ', ');\n      concatPart = list[index].joinFragmentArrays(args, ', ');\n      last = list[list.length - 1];\n      return [].concat(list[0].makeCode(\"[\"), base, list[index].makeCode(\"].concat(\"), concatPart, last.makeCode(\")\"));\n    };\n\n    return Splat;\n\n  })(Base);\n\n  exports.Expansion = Expansion = (function(superClass1) {\n    extend1(Expansion, superClass1);\n\n    function Expansion() {\n      return Expansion.__super__.constructor.apply(this, arguments);\n    }\n\n    Expansion.prototype.isComplex = NO;\n\n    Expansion.prototype.compileNode = function(o) {\n      return this.error('Expansion must be used inside a destructuring assignment or parameter list');\n    };\n\n    Expansion.prototype.asReference = function(o) {\n      return this;\n    };\n\n    Expansion.prototype.eachName = function(iterator) {};\n\n    return Expansion;\n\n  })(Base);\n\n  exports.While = While = (function(superClass1) {\n    extend1(While, superClass1);\n\n    function While(condition, options) {\n      this.condition = (options != null ? options.invert : void 0) ? condition.invert() : condition;\n      this.guard = options != null ? options.guard : void 0;\n    }\n\n    While.prototype.children = ['condition', 'guard', 'body'];\n\n    While.prototype.isStatement = YES;\n\n    While.prototype.makeReturn = function(res) {\n      if (res) {\n        return While.__super__.makeReturn.apply(this, arguments);\n      } else {\n        this.returns = !this.jumps({\n          loop: true\n        });\n        return this;\n      }\n    };\n\n    While.prototype.addBody = function(body1) {\n      this.body = body1;\n      return this;\n    };\n\n    While.prototype.jumps = function() {\n      var expressions, j, jumpNode, len1, node;\n      expressions = this.body.expressions;\n      if (!expressions.length) {\n        return false;\n      }\n      for (j = 0, len1 = expressions.length; j < len1; j++) {\n        node = expressions[j];\n        if (jumpNode = node.jumps({\n          loop: true\n        })) {\n          return jumpNode;\n        }\n      }\n      return false;\n    };\n\n    While.prototype.compileNode = function(o) {\n      var answer, body, rvar, set;\n      o.indent += TAB;\n      set = '';\n      body = this.body;\n      if (body.isEmpty()) {\n        body = this.makeCode('');\n      } else {\n        if (this.returns) {\n          body.makeReturn(rvar = o.scope.freeVariable('results'));\n          set = \"\" + this.tab + rvar + \" = [];\\n\";\n        }\n        if (this.guard) {\n          if (body.expressions.length > 1) {\n            body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal(\"continue\")));\n          } else {\n            if (this.guard) {\n              body = Block.wrap([new If(this.guard, body)]);\n            }\n          }\n        }\n        body = [].concat(this.makeCode(\"\\n\"), body.compileToFragments(o, LEVEL_TOP), this.makeCode(\"\\n\" + this.tab));\n      }\n      answer = [].concat(this.makeCode(set + this.tab + \"while (\"), this.condition.compileToFragments(o, LEVEL_PAREN), this.makeCode(\") {\"), body, this.makeCode(\"}\"));\n      if (this.returns) {\n        answer.push(this.makeCode(\"\\n\" + this.tab + \"return \" + rvar + \";\"));\n      }\n      return answer;\n    };\n\n    return While;\n\n  })(Base);\n\n  exports.Op = Op = (function(superClass1) {\n    var CONVERSIONS, INVERSIONS;\n\n    extend1(Op, superClass1);\n\n    function Op(op, first, second, flip) {\n      if (op === 'in') {\n        return new In(first, second);\n      }\n      if (op === 'do') {\n        return this.generateDo(first);\n      }\n      if (op === 'new') {\n        if (first instanceof Call && !first[\"do\"] && !first.isNew) {\n          return first.newInstance();\n        }\n        if (first instanceof Code && first.bound || first[\"do\"]) {\n          first = new Parens(first);\n        }\n      }\n      this.operator = CONVERSIONS[op] || op;\n      this.first = first;\n      this.second = second;\n      this.flip = !!flip;\n      return this;\n    }\n\n    CONVERSIONS = {\n      '==': '===',\n      '!=': '!==',\n      'of': 'in',\n      'yieldfrom': 'yield*'\n    };\n\n    INVERSIONS = {\n      '!==': '===',\n      '===': '!=='\n    };\n\n    Op.prototype.children = ['first', 'second'];\n\n    Op.prototype.isSimpleNumber = NO;\n\n    Op.prototype.isYield = function() {\n      var ref3;\n      return (ref3 = this.operator) === 'yield' || ref3 === 'yield*';\n    };\n\n    Op.prototype.isYieldReturn = function() {\n      return this.isYield() && this.first instanceof Return;\n    };\n\n    Op.prototype.isUnary = function() {\n      return !this.second;\n    };\n\n    Op.prototype.isComplex = function() {\n      var ref3;\n      return !(this.isUnary() && ((ref3 = this.operator) === '+' || ref3 === '-') && this.first instanceof Value && this.first.isSimpleNumber());\n    };\n\n    Op.prototype.isChainable = function() {\n      var ref3;\n      return (ref3 = this.operator) === '<' || ref3 === '>' || ref3 === '>=' || ref3 === '<=' || ref3 === '===' || ref3 === '!==';\n    };\n\n    Op.prototype.invert = function() {\n      var allInvertable, curr, fst, op, ref3;\n      if (this.isChainable() && this.first.isChainable()) {\n        allInvertable = true;\n        curr = this;\n        while (curr && curr.operator) {\n          allInvertable && (allInvertable = curr.operator in INVERSIONS);\n          curr = curr.first;\n        }\n        if (!allInvertable) {\n          return new Parens(this).invert();\n        }\n        curr = this;\n        while (curr && curr.operator) {\n          curr.invert = !curr.invert;\n          curr.operator = INVERSIONS[curr.operator];\n          curr = curr.first;\n        }\n        return this;\n      } else if (op = INVERSIONS[this.operator]) {\n        this.operator = op;\n        if (this.first.unwrap() instanceof Op) {\n          this.first.invert();\n        }\n        return this;\n      } else if (this.second) {\n        return new Parens(this).invert();\n      } else if (this.operator === '!' && (fst = this.first.unwrap()) instanceof Op && ((ref3 = fst.operator) === '!' || ref3 === 'in' || ref3 === 'instanceof')) {\n        return fst;\n      } else {\n        return new Op('!', this);\n      }\n    };\n\n    Op.prototype.unfoldSoak = function(o) {\n      var ref3;\n      return ((ref3 = this.operator) === '++' || ref3 === '--' || ref3 === 'delete') && unfoldSoak(o, this, 'first');\n    };\n\n    Op.prototype.generateDo = function(exp) {\n      var call, func, j, len1, param, passedParams, ref, ref3;\n      passedParams = [];\n      func = exp instanceof Assign && (ref = exp.value.unwrap()) instanceof Code ? ref : exp;\n      ref3 = func.params || [];\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        param = ref3[j];\n        if (param.value) {\n          passedParams.push(param.value);\n          delete param.value;\n        } else {\n          passedParams.push(param);\n        }\n      }\n      call = new Call(exp, passedParams);\n      call[\"do\"] = true;\n      return call;\n    };\n\n    Op.prototype.compileNode = function(o) {\n      var answer, isChain, lhs, ref3, ref4, rhs;\n      isChain = this.isChainable() && this.first.isChainable();\n      if (!isChain) {\n        this.first.front = this.front;\n      }\n      if (this.operator === 'delete' && o.scope.check(this.first.unwrapAll().value)) {\n        this.error('delete operand may not be argument or var');\n      }\n      if (((ref3 = this.operator) === '--' || ref3 === '++') && (ref4 = this.first.unwrapAll().value, indexOf.call(STRICT_PROSCRIBED, ref4) >= 0)) {\n        this.error(\"cannot increment/decrement \\\"\" + (this.first.unwrapAll().value) + \"\\\"\");\n      }\n      if (this.isYield()) {\n        return this.compileYield(o);\n      }\n      if (this.isUnary()) {\n        return this.compileUnary(o);\n      }\n      if (isChain) {\n        return this.compileChain(o);\n      }\n      switch (this.operator) {\n        case '?':\n          return this.compileExistence(o);\n        case '**':\n          return this.compilePower(o);\n        case '//':\n          return this.compileFloorDivision(o);\n        case '%%':\n          return this.compileModulo(o);\n        default:\n          lhs = this.first.compileToFragments(o, LEVEL_OP);\n          rhs = this.second.compileToFragments(o, LEVEL_OP);\n          answer = [].concat(lhs, this.makeCode(\" \" + this.operator + \" \"), rhs);\n          if (o.level <= LEVEL_OP) {\n            return answer;\n          } else {\n            return this.wrapInBraces(answer);\n          }\n      }\n    };\n\n    Op.prototype.compileChain = function(o) {\n      var fragments, fst, ref3, shared;\n      ref3 = this.first.second.cache(o), this.first.second = ref3[0], shared = ref3[1];\n      fst = this.first.compileToFragments(o, LEVEL_OP);\n      fragments = fst.concat(this.makeCode(\" \" + (this.invert ? '&&' : '||') + \" \"), shared.compileToFragments(o), this.makeCode(\" \" + this.operator + \" \"), this.second.compileToFragments(o, LEVEL_OP));\n      return this.wrapInBraces(fragments);\n    };\n\n    Op.prototype.compileExistence = function(o) {\n      var fst, ref;\n      if (this.first.isComplex()) {\n        ref = new Literal(o.scope.freeVariable('ref'));\n        fst = new Parens(new Assign(ref, this.first));\n      } else {\n        fst = this.first;\n        ref = fst;\n      }\n      return new If(new Existence(fst), ref, {\n        type: 'if'\n      }).addElse(this.second).compileToFragments(o);\n    };\n\n    Op.prototype.compileUnary = function(o) {\n      var op, parts, plusMinus;\n      parts = [];\n      op = this.operator;\n      parts.push([this.makeCode(op)]);\n      if (op === '!' && this.first instanceof Existence) {\n        this.first.negated = !this.first.negated;\n        return this.first.compileToFragments(o);\n      }\n      if (o.level >= LEVEL_ACCESS) {\n        return (new Parens(this)).compileToFragments(o);\n      }\n      plusMinus = op === '+' || op === '-';\n      if ((op === 'new' || op === 'typeof' || op === 'delete') || plusMinus && this.first instanceof Op && this.first.operator === op) {\n        parts.push([this.makeCode(' ')]);\n      }\n      if ((plusMinus && this.first instanceof Op) || (op === 'new' && this.first.isStatement(o))) {\n        this.first = new Parens(this.first);\n      }\n      parts.push(this.first.compileToFragments(o, LEVEL_OP));\n      if (this.flip) {\n        parts.reverse();\n      }\n      return this.joinFragmentArrays(parts, '');\n    };\n\n    Op.prototype.compileYield = function(o) {\n      var op, parts;\n      parts = [];\n      op = this.operator;\n      if (o.scope.parent == null) {\n        this.error('yield statements must occur within a function generator.');\n      }\n      if (indexOf.call(Object.keys(this.first), 'expression') >= 0 && !(this.first instanceof Throw)) {\n        if (this.isYieldReturn()) {\n          parts.push(this.first.compileToFragments(o, LEVEL_TOP));\n        } else if (this.first.expression != null) {\n          parts.push(this.first.expression.compileToFragments(o, LEVEL_OP));\n        }\n      } else {\n        parts.push([this.makeCode(\"(\" + op + \" \")]);\n        parts.push(this.first.compileToFragments(o, LEVEL_OP));\n        parts.push([this.makeCode(\")\")]);\n      }\n      return this.joinFragmentArrays(parts, '');\n    };\n\n    Op.prototype.compilePower = function(o) {\n      var pow;\n      pow = new Value(new Literal('Math'), [new Access(new Literal('pow'))]);\n      return new Call(pow, [this.first, this.second]).compileToFragments(o);\n    };\n\n    Op.prototype.compileFloorDivision = function(o) {\n      var div, floor;\n      floor = new Value(new Literal('Math'), [new Access(new Literal('floor'))]);\n      div = new Op('/', this.first, this.second);\n      return new Call(floor, [div]).compileToFragments(o);\n    };\n\n    Op.prototype.compileModulo = function(o) {\n      var mod;\n      mod = new Value(new Literal(utility('modulo', o)));\n      return new Call(mod, [this.first, this.second]).compileToFragments(o);\n    };\n\n    Op.prototype.toString = function(idt) {\n      return Op.__super__.toString.call(this, idt, this.constructor.name + ' ' + this.operator);\n    };\n\n    return Op;\n\n  })(Base);\n\n  exports.In = In = (function(superClass1) {\n    extend1(In, superClass1);\n\n    function In(object, array) {\n      this.object = object;\n      this.array = array;\n    }\n\n    In.prototype.children = ['object', 'array'];\n\n    In.prototype.invert = NEGATE;\n\n    In.prototype.compileNode = function(o) {\n      var hasSplat, j, len1, obj, ref3;\n      if (this.array instanceof Value && this.array.isArray() && this.array.base.objects.length) {\n        ref3 = this.array.base.objects;\n        for (j = 0, len1 = ref3.length; j < len1; j++) {\n          obj = ref3[j];\n          if (!(obj instanceof Splat)) {\n            continue;\n          }\n          hasSplat = true;\n          break;\n        }\n        if (!hasSplat) {\n          return this.compileOrTest(o);\n        }\n      }\n      return this.compileLoopTest(o);\n    };\n\n    In.prototype.compileOrTest = function(o) {\n      var cmp, cnj, i, item, j, len1, ref, ref3, ref4, ref5, sub, tests;\n      ref3 = this.object.cache(o, LEVEL_OP), sub = ref3[0], ref = ref3[1];\n      ref4 = this.negated ? [' !== ', ' && '] : [' === ', ' || '], cmp = ref4[0], cnj = ref4[1];\n      tests = [];\n      ref5 = this.array.base.objects;\n      for (i = j = 0, len1 = ref5.length; j < len1; i = ++j) {\n        item = ref5[i];\n        if (i) {\n          tests.push(this.makeCode(cnj));\n        }\n        tests = tests.concat((i ? ref : sub), this.makeCode(cmp), item.compileToFragments(o, LEVEL_ACCESS));\n      }\n      if (o.level < LEVEL_OP) {\n        return tests;\n      } else {\n        return this.wrapInBraces(tests);\n      }\n    };\n\n    In.prototype.compileLoopTest = function(o) {\n      var fragments, ref, ref3, sub;\n      ref3 = this.object.cache(o, LEVEL_LIST), sub = ref3[0], ref = ref3[1];\n      fragments = [].concat(this.makeCode(utility('indexOf', o) + \".call(\"), this.array.compileToFragments(o, LEVEL_LIST), this.makeCode(\", \"), ref, this.makeCode(\") \" + (this.negated ? '< 0' : '>= 0')));\n      if (fragmentsToText(sub) === fragmentsToText(ref)) {\n        return fragments;\n      }\n      fragments = sub.concat(this.makeCode(', '), fragments);\n      if (o.level < LEVEL_LIST) {\n        return fragments;\n      } else {\n        return this.wrapInBraces(fragments);\n      }\n    };\n\n    In.prototype.toString = function(idt) {\n      return In.__super__.toString.call(this, idt, this.constructor.name + (this.negated ? '!' : ''));\n    };\n\n    return In;\n\n  })(Base);\n\n  exports.Try = Try = (function(superClass1) {\n    extend1(Try, superClass1);\n\n    function Try(attempt, errorVariable, recovery, ensure) {\n      this.attempt = attempt;\n      this.errorVariable = errorVariable;\n      this.recovery = recovery;\n      this.ensure = ensure;\n    }\n\n    Try.prototype.children = ['attempt', 'recovery', 'ensure'];\n\n    Try.prototype.isStatement = YES;\n\n    Try.prototype.jumps = function(o) {\n      var ref3;\n      return this.attempt.jumps(o) || ((ref3 = this.recovery) != null ? ref3.jumps(o) : void 0);\n    };\n\n    Try.prototype.makeReturn = function(res) {\n      if (this.attempt) {\n        this.attempt = this.attempt.makeReturn(res);\n      }\n      if (this.recovery) {\n        this.recovery = this.recovery.makeReturn(res);\n      }\n      return this;\n    };\n\n    Try.prototype.compileNode = function(o) {\n      var catchPart, ensurePart, generatedErrorVariableName, placeholder, tryPart;\n      o.indent += TAB;\n      tryPart = this.attempt.compileToFragments(o, LEVEL_TOP);\n      catchPart = this.recovery ? (generatedErrorVariableName = o.scope.freeVariable('error'), placeholder = new Literal(generatedErrorVariableName), this.errorVariable ? this.recovery.unshift(new Assign(this.errorVariable, placeholder)) : void 0, [].concat(this.makeCode(\" catch (\"), placeholder.compileToFragments(o), this.makeCode(\") {\\n\"), this.recovery.compileToFragments(o, LEVEL_TOP), this.makeCode(\"\\n\" + this.tab + \"}\"))) : !(this.ensure || this.recovery) ? [this.makeCode(\" catch (\" + generatedErrorVariableName + \") {}\")] : [];\n      ensurePart = this.ensure ? [].concat(this.makeCode(\" finally {\\n\"), this.ensure.compileToFragments(o, LEVEL_TOP), this.makeCode(\"\\n\" + this.tab + \"}\")) : [];\n      return [].concat(this.makeCode(this.tab + \"try {\\n\"), tryPart, this.makeCode(\"\\n\" + this.tab + \"}\"), catchPart, ensurePart);\n    };\n\n    return Try;\n\n  })(Base);\n\n  exports.Throw = Throw = (function(superClass1) {\n    extend1(Throw, superClass1);\n\n    function Throw(expression) {\n      this.expression = expression;\n    }\n\n    Throw.prototype.children = ['expression'];\n\n    Throw.prototype.isStatement = YES;\n\n    Throw.prototype.jumps = NO;\n\n    Throw.prototype.makeReturn = THIS;\n\n    Throw.prototype.compileNode = function(o) {\n      return [].concat(this.makeCode(this.tab + \"throw \"), this.expression.compileToFragments(o), this.makeCode(\";\"));\n    };\n\n    return Throw;\n\n  })(Base);\n\n  exports.Existence = Existence = (function(superClass1) {\n    extend1(Existence, superClass1);\n\n    function Existence(expression) {\n      this.expression = expression;\n    }\n\n    Existence.prototype.children = ['expression'];\n\n    Existence.prototype.invert = NEGATE;\n\n    Existence.prototype.compileNode = function(o) {\n      var cmp, cnj, code, ref3;\n      this.expression.front = this.front;\n      code = this.expression.compile(o, LEVEL_OP);\n      if (IDENTIFIER.test(code) && !o.scope.check(code)) {\n        ref3 = this.negated ? ['===', '||'] : ['!==', '&&'], cmp = ref3[0], cnj = ref3[1];\n        code = \"typeof \" + code + \" \" + cmp + \" \\\"undefined\\\" \" + cnj + \" \" + code + \" \" + cmp + \" null\";\n      } else {\n        code = code + \" \" + (this.negated ? '==' : '!=') + \" null\";\n      }\n      return [this.makeCode(o.level <= LEVEL_COND ? code : \"(\" + code + \")\")];\n    };\n\n    return Existence;\n\n  })(Base);\n\n  exports.Parens = Parens = (function(superClass1) {\n    extend1(Parens, superClass1);\n\n    function Parens(body1) {\n      this.body = body1;\n    }\n\n    Parens.prototype.children = ['body'];\n\n    Parens.prototype.unwrap = function() {\n      return this.body;\n    };\n\n    Parens.prototype.isComplex = function() {\n      return this.body.isComplex();\n    };\n\n    Parens.prototype.compileNode = function(o) {\n      var bare, expr, fragments;\n      expr = this.body.unwrap();\n      if (expr instanceof Value && expr.isAtomic()) {\n        expr.front = this.front;\n        return expr.compileToFragments(o);\n      }\n      fragments = expr.compileToFragments(o, LEVEL_PAREN);\n      bare = o.level < LEVEL_OP && (expr instanceof Op || expr instanceof Call || (expr instanceof For && expr.returns));\n      if (bare) {\n        return fragments;\n      } else {\n        return this.wrapInBraces(fragments);\n      }\n    };\n\n    return Parens;\n\n  })(Base);\n\n  exports.For = For = (function(superClass1) {\n    extend1(For, superClass1);\n\n    function For(body, source) {\n      var ref3;\n      this.source = source.source, this.guard = source.guard, this.step = source.step, this.name = source.name, this.index = source.index;\n      this.body = Block.wrap([body]);\n      this.own = !!source.own;\n      this.object = !!source.object;\n      if (this.object) {\n        ref3 = [this.index, this.name], this.name = ref3[0], this.index = ref3[1];\n      }\n      if (this.index instanceof Value) {\n        this.index.error('index cannot be a pattern matching expression');\n      }\n      this.range = this.source instanceof Value && this.source.base instanceof Range && !this.source.properties.length;\n      this.pattern = this.name instanceof Value;\n      if (this.range && this.index) {\n        this.index.error('indexes do not apply to range loops');\n      }\n      if (this.range && this.pattern) {\n        this.name.error('cannot pattern match over range loops');\n      }\n      if (this.own && !this.object) {\n        this.name.error('cannot use own with for-in');\n      }\n      this.returns = false;\n    }\n\n    For.prototype.children = ['body', 'source', 'guard', 'step'];\n\n    For.prototype.compileNode = function(o) {\n      var body, bodyFragments, compare, compareDown, declare, declareDown, defPart, defPartFragments, down, forPartFragments, guardPart, idt1, increment, index, ivar, kvar, kvarAssign, last, lvar, name, namePart, ref, ref3, ref4, resultPart, returnResult, rvar, scope, source, step, stepNum, stepVar, svar, varPart;\n      body = Block.wrap([this.body]);\n      ref3 = body.expressions, last = ref3[ref3.length - 1];\n      if ((last != null ? last.jumps() : void 0) instanceof Return) {\n        this.returns = false;\n      }\n      source = this.range ? this.source.base : this.source;\n      scope = o.scope;\n      if (!this.pattern) {\n        name = this.name && (this.name.compile(o, LEVEL_LIST));\n      }\n      index = this.index && (this.index.compile(o, LEVEL_LIST));\n      if (name && !this.pattern) {\n        scope.find(name);\n      }\n      if (index) {\n        scope.find(index);\n      }\n      if (this.returns) {\n        rvar = scope.freeVariable('results');\n      }\n      ivar = (this.object && index) || scope.freeVariable('i', {\n        single: true\n      });\n      kvar = (this.range && name) || index || ivar;\n      kvarAssign = kvar !== ivar ? kvar + \" = \" : \"\";\n      if (this.step && !this.range) {\n        ref4 = this.cacheToCodeFragments(this.step.cache(o, LEVEL_LIST, isComplexOrAssignable)), step = ref4[0], stepVar = ref4[1];\n        stepNum = stepVar.match(NUMBER);\n      }\n      if (this.pattern) {\n        name = ivar;\n      }\n      varPart = '';\n      guardPart = '';\n      defPart = '';\n      idt1 = this.tab + TAB;\n      if (this.range) {\n        forPartFragments = source.compileToFragments(merge(o, {\n          index: ivar,\n          name: name,\n          step: this.step,\n          isComplex: isComplexOrAssignable\n        }));\n      } else {\n        svar = this.source.compile(o, LEVEL_LIST);\n        if ((name || this.own) && !IDENTIFIER.test(svar)) {\n          defPart += \"\" + this.tab + (ref = scope.freeVariable('ref')) + \" = \" + svar + \";\\n\";\n          svar = ref;\n        }\n        if (name && !this.pattern) {\n          namePart = name + \" = \" + svar + \"[\" + kvar + \"]\";\n        }\n        if (!this.object) {\n          if (step !== stepVar) {\n            defPart += \"\" + this.tab + step + \";\\n\";\n          }\n          if (!(this.step && stepNum && (down = parseNum(stepNum[0]) < 0))) {\n            lvar = scope.freeVariable('len');\n          }\n          declare = \"\" + kvarAssign + ivar + \" = 0, \" + lvar + \" = \" + svar + \".length\";\n          declareDown = \"\" + kvarAssign + ivar + \" = \" + svar + \".length - 1\";\n          compare = ivar + \" < \" + lvar;\n          compareDown = ivar + \" >= 0\";\n          if (this.step) {\n            if (stepNum) {\n              if (down) {\n                compare = compareDown;\n                declare = declareDown;\n              }\n            } else {\n              compare = stepVar + \" > 0 ? \" + compare + \" : \" + compareDown;\n              declare = \"(\" + stepVar + \" > 0 ? (\" + declare + \") : \" + declareDown + \")\";\n            }\n            increment = ivar + \" += \" + stepVar;\n          } else {\n            increment = \"\" + (kvar !== ivar ? \"++\" + ivar : ivar + \"++\");\n          }\n          forPartFragments = [this.makeCode(declare + \"; \" + compare + \"; \" + kvarAssign + increment)];\n        }\n      }\n      if (this.returns) {\n        resultPart = \"\" + this.tab + rvar + \" = [];\\n\";\n        returnResult = \"\\n\" + this.tab + \"return \" + rvar + \";\";\n        body.makeReturn(rvar);\n      }\n      if (this.guard) {\n        if (body.expressions.length > 1) {\n          body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal(\"continue\")));\n        } else {\n          if (this.guard) {\n            body = Block.wrap([new If(this.guard, body)]);\n          }\n        }\n      }\n      if (this.pattern) {\n        body.expressions.unshift(new Assign(this.name, new Literal(svar + \"[\" + kvar + \"]\")));\n      }\n      defPartFragments = [].concat(this.makeCode(defPart), this.pluckDirectCall(o, body));\n      if (namePart) {\n        varPart = \"\\n\" + idt1 + namePart + \";\";\n      }\n      if (this.object) {\n        forPartFragments = [this.makeCode(kvar + \" in \" + svar)];\n        if (this.own) {\n          guardPart = \"\\n\" + idt1 + \"if (!\" + (utility('hasProp', o)) + \".call(\" + svar + \", \" + kvar + \")) continue;\";\n        }\n      }\n      bodyFragments = body.compileToFragments(merge(o, {\n        indent: idt1\n      }), LEVEL_TOP);\n      if (bodyFragments && (bodyFragments.length > 0)) {\n        bodyFragments = [].concat(this.makeCode(\"\\n\"), bodyFragments, this.makeCode(\"\\n\"));\n      }\n      return [].concat(defPartFragments, this.makeCode(\"\" + (resultPart || '') + this.tab + \"for (\"), forPartFragments, this.makeCode(\") {\" + guardPart + varPart), bodyFragments, this.makeCode(this.tab + \"}\" + (returnResult || '')));\n    };\n\n    For.prototype.pluckDirectCall = function(o, body) {\n      var base, defs, expr, fn, idx, j, len1, ref, ref3, ref4, ref5, ref6, ref7, ref8, ref9, val;\n      defs = [];\n      ref3 = body.expressions;\n      for (idx = j = 0, len1 = ref3.length; j < len1; idx = ++j) {\n        expr = ref3[idx];\n        expr = expr.unwrapAll();\n        if (!(expr instanceof Call)) {\n          continue;\n        }\n        val = (ref4 = expr.variable) != null ? ref4.unwrapAll() : void 0;\n        if (!((val instanceof Code) || (val instanceof Value && ((ref5 = val.base) != null ? ref5.unwrapAll() : void 0) instanceof Code && val.properties.length === 1 && ((ref6 = (ref7 = val.properties[0].name) != null ? ref7.value : void 0) === 'call' || ref6 === 'apply')))) {\n          continue;\n        }\n        fn = ((ref8 = val.base) != null ? ref8.unwrapAll() : void 0) || val;\n        ref = new Literal(o.scope.freeVariable('fn'));\n        base = new Value(ref);\n        if (val.base) {\n          ref9 = [base, val], val.base = ref9[0], base = ref9[1];\n        }\n        body.expressions[idx] = new Call(base, expr.args);\n        defs = defs.concat(this.makeCode(this.tab), new Assign(ref, fn).compileToFragments(o, LEVEL_TOP), this.makeCode(';\\n'));\n      }\n      return defs;\n    };\n\n    return For;\n\n  })(While);\n\n  exports.Switch = Switch = (function(superClass1) {\n    extend1(Switch, superClass1);\n\n    function Switch(subject, cases, otherwise) {\n      this.subject = subject;\n      this.cases = cases;\n      this.otherwise = otherwise;\n    }\n\n    Switch.prototype.children = ['subject', 'cases', 'otherwise'];\n\n    Switch.prototype.isStatement = YES;\n\n    Switch.prototype.jumps = function(o) {\n      var block, conds, j, jumpNode, len1, ref3, ref4, ref5;\n      if (o == null) {\n        o = {\n          block: true\n        };\n      }\n      ref3 = this.cases;\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        ref4 = ref3[j], conds = ref4[0], block = ref4[1];\n        if (jumpNode = block.jumps(o)) {\n          return jumpNode;\n        }\n      }\n      return (ref5 = this.otherwise) != null ? ref5.jumps(o) : void 0;\n    };\n\n    Switch.prototype.makeReturn = function(res) {\n      var j, len1, pair, ref3, ref4;\n      ref3 = this.cases;\n      for (j = 0, len1 = ref3.length; j < len1; j++) {\n        pair = ref3[j];\n        pair[1].makeReturn(res);\n      }\n      if (res) {\n        this.otherwise || (this.otherwise = new Block([new Literal('void 0')]));\n      }\n      if ((ref4 = this.otherwise) != null) {\n        ref4.makeReturn(res);\n      }\n      return this;\n    };\n\n    Switch.prototype.compileNode = function(o) {\n      var block, body, cond, conditions, expr, fragments, i, idt1, idt2, j, k, len1, len2, ref3, ref4, ref5;\n      idt1 = o.indent + TAB;\n      idt2 = o.indent = idt1 + TAB;\n      fragments = [].concat(this.makeCode(this.tab + \"switch (\"), (this.subject ? this.subject.compileToFragments(o, LEVEL_PAREN) : this.makeCode(\"false\")), this.makeCode(\") {\\n\"));\n      ref3 = this.cases;\n      for (i = j = 0, len1 = ref3.length; j < len1; i = ++j) {\n        ref4 = ref3[i], conditions = ref4[0], block = ref4[1];\n        ref5 = flatten([conditions]);\n        for (k = 0, len2 = ref5.length; k < len2; k++) {\n          cond = ref5[k];\n          if (!this.subject) {\n            cond = cond.invert();\n          }\n          fragments = fragments.concat(this.makeCode(idt1 + \"case \"), cond.compileToFragments(o, LEVEL_PAREN), this.makeCode(\":\\n\"));\n        }\n        if ((body = block.compileToFragments(o, LEVEL_TOP)).length > 0) {\n          fragments = fragments.concat(body, this.makeCode('\\n'));\n        }\n        if (i === this.cases.length - 1 && !this.otherwise) {\n          break;\n        }\n        expr = this.lastNonComment(block.expressions);\n        if (expr instanceof Return || (expr instanceof Literal && expr.jumps() && expr.value !== 'debugger')) {\n          continue;\n        }\n        fragments.push(cond.makeCode(idt2 + 'break;\\n'));\n      }\n      if (this.otherwise && this.otherwise.expressions.length) {\n        fragments.push.apply(fragments, [this.makeCode(idt1 + \"default:\\n\")].concat(slice.call(this.otherwise.compileToFragments(o, LEVEL_TOP)), [this.makeCode(\"\\n\")]));\n      }\n      fragments.push(this.makeCode(this.tab + '}'));\n      return fragments;\n    };\n\n    return Switch;\n\n  })(Base);\n\n  exports.If = If = (function(superClass1) {\n    extend1(If, superClass1);\n\n    function If(condition, body1, options) {\n      this.body = body1;\n      if (options == null) {\n        options = {};\n      }\n      this.condition = options.type === 'unless' ? condition.invert() : condition;\n      this.elseBody = null;\n      this.isChain = false;\n      this.soak = options.soak;\n    }\n\n    If.prototype.children = ['condition', 'body', 'elseBody'];\n\n    If.prototype.bodyNode = function() {\n      var ref3;\n      return (ref3 = this.body) != null ? ref3.unwrap() : void 0;\n    };\n\n    If.prototype.elseBodyNode = function() {\n      var ref3;\n      return (ref3 = this.elseBody) != null ? ref3.unwrap() : void 0;\n    };\n\n    If.prototype.addElse = function(elseBody) {\n      if (this.isChain) {\n        this.elseBodyNode().addElse(elseBody);\n      } else {\n        this.isChain = elseBody instanceof If;\n        this.elseBody = this.ensureBlock(elseBody);\n        this.elseBody.updateLocationDataIfMissing(elseBody.locationData);\n      }\n      return this;\n    };\n\n    If.prototype.isStatement = function(o) {\n      var ref3;\n      return (o != null ? o.level : void 0) === LEVEL_TOP || this.bodyNode().isStatement(o) || ((ref3 = this.elseBodyNode()) != null ? ref3.isStatement(o) : void 0);\n    };\n\n    If.prototype.jumps = function(o) {\n      var ref3;\n      return this.body.jumps(o) || ((ref3 = this.elseBody) != null ? ref3.jumps(o) : void 0);\n    };\n\n    If.prototype.compileNode = function(o) {\n      if (this.isStatement(o)) {\n        return this.compileStatement(o);\n      } else {\n        return this.compileExpression(o);\n      }\n    };\n\n    If.prototype.makeReturn = function(res) {\n      if (res) {\n        this.elseBody || (this.elseBody = new Block([new Literal('void 0')]));\n      }\n      this.body && (this.body = new Block([this.body.makeReturn(res)]));\n      this.elseBody && (this.elseBody = new Block([this.elseBody.makeReturn(res)]));\n      return this;\n    };\n\n    If.prototype.ensureBlock = function(node) {\n      if (node instanceof Block) {\n        return node;\n      } else {\n        return new Block([node]);\n      }\n    };\n\n    If.prototype.compileStatement = function(o) {\n      var answer, body, child, cond, exeq, ifPart, indent;\n      child = del(o, 'chainChild');\n      exeq = del(o, 'isExistentialEquals');\n      if (exeq) {\n        return new If(this.condition.invert(), this.elseBodyNode(), {\n          type: 'if'\n        }).compileToFragments(o);\n      }\n      indent = o.indent + TAB;\n      cond = this.condition.compileToFragments(o, LEVEL_PAREN);\n      body = this.ensureBlock(this.body).compileToFragments(merge(o, {\n        indent: indent\n      }));\n      ifPart = [].concat(this.makeCode(\"if (\"), cond, this.makeCode(\") {\\n\"), body, this.makeCode(\"\\n\" + this.tab + \"}\"));\n      if (!child) {\n        ifPart.unshift(this.makeCode(this.tab));\n      }\n      if (!this.elseBody) {\n        return ifPart;\n      }\n      answer = ifPart.concat(this.makeCode(' else '));\n      if (this.isChain) {\n        o.chainChild = true;\n        answer = answer.concat(this.elseBody.unwrap().compileToFragments(o, LEVEL_TOP));\n      } else {\n        answer = answer.concat(this.makeCode(\"{\\n\"), this.elseBody.compileToFragments(merge(o, {\n          indent: indent\n        }), LEVEL_TOP), this.makeCode(\"\\n\" + this.tab + \"}\"));\n      }\n      return answer;\n    };\n\n    If.prototype.compileExpression = function(o) {\n      var alt, body, cond, fragments;\n      cond = this.condition.compileToFragments(o, LEVEL_COND);\n      body = this.bodyNode().compileToFragments(o, LEVEL_LIST);\n      alt = this.elseBodyNode() ? this.elseBodyNode().compileToFragments(o, LEVEL_LIST) : [this.makeCode('void 0')];\n      fragments = cond.concat(this.makeCode(\" ? \"), body, this.makeCode(\" : \"), alt);\n      if (o.level >= LEVEL_COND) {\n        return this.wrapInBraces(fragments);\n      } else {\n        return fragments;\n      }\n    };\n\n    If.prototype.unfoldSoak = function() {\n      return this.soak && this;\n    };\n\n    return If;\n\n  })(Base);\n\n  UTILITIES = {\n    extend: function(o) {\n      return \"function(child, parent) { for (var key in parent) { if (\" + (utility('hasProp', o)) + \".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }\";\n    },\n    bind: function() {\n      return 'function(fn, me){ return function(){ return fn.apply(me, arguments); }; }';\n    },\n    indexOf: function() {\n      return \"[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }\";\n    },\n    modulo: function() {\n      return \"function(a, b) { return (+a % (b = +b) + b) % b; }\";\n    },\n    hasProp: function() {\n      return '{}.hasOwnProperty';\n    },\n    slice: function() {\n      return '[].slice';\n    }\n  };\n\n  LEVEL_TOP = 1;\n\n  LEVEL_PAREN = 2;\n\n  LEVEL_LIST = 3;\n\n  LEVEL_COND = 4;\n\n  LEVEL_OP = 5;\n\n  LEVEL_ACCESS = 6;\n\n  TAB = '  ';\n\n  IDENTIFIER = /^(?!\\d)[$\\w\\x7f-\\uffff]+$/;\n\n  SIMPLENUM = /^[+-]?\\d+$/;\n\n  HEXNUM = /^[+-]?0x[\\da-f]+/i;\n\n  NUMBER = /^[+-]?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)$/i;\n\n  IS_STRING = /^['\"]/;\n\n  IS_REGEX = /^\\//;\n\n  utility = function(name, o) {\n    var ref, root;\n    root = o.scope.root;\n    if (name in root.utilities) {\n      return root.utilities[name];\n    } else {\n      ref = root.freeVariable(name);\n      root.assign(ref, UTILITIES[name](o));\n      return root.utilities[name] = ref;\n    }\n  };\n\n  multident = function(code, tab) {\n    code = code.replace(/\\n/g, '$&' + tab);\n    return code.replace(/\\s+$/, '');\n  };\n\n  parseNum = function(x) {\n    if (x == null) {\n      return 0;\n    } else if (x.match(HEXNUM)) {\n      return parseInt(x, 16);\n    } else {\n      return parseFloat(x);\n    }\n  };\n\n  isLiteralArguments = function(node) {\n    return node instanceof Literal && node.value === 'arguments' && !node.asKey;\n  };\n\n  isLiteralThis = function(node) {\n    return (node instanceof Literal && node.value === 'this' && !node.asKey) || (node instanceof Code && node.bound) || (node instanceof Call && node.isSuper);\n  };\n\n  isComplexOrAssignable = function(node) {\n    return node.isComplex() || (typeof node.isAssignable === \"function\" ? node.isAssignable() : void 0);\n  };\n\n  unfoldSoak = function(o, parent, name) {\n    var ifn;\n    if (!(ifn = parent[name].unfoldSoak(o))) {\n      return;\n    }\n    parent[name] = ifn.body;\n    ifn.body = new Value(parent);\n    return ifn;\n  };\n\n}).call(this);\n","/* parser generated by jison 0.4.15 */\n/*\n  Returns a Parser object of the following structure:\n\n  Parser: {\n    yy: {}\n  }\n\n  Parser.prototype: {\n    yy: {},\n    trace: function(),\n    symbols_: {associative list: name ==> number},\n    terminals_: {associative list: number ==> name},\n    productions_: [...],\n    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n    table: [...],\n    defaultActions: {...},\n    parseError: function(str, hash),\n    parse: function(input),\n\n    lexer: {\n        EOF: 1,\n        parseError: function(str, hash),\n        setInput: function(input),\n        input: function(),\n        unput: function(str),\n        more: function(),\n        less: function(n),\n        pastInput: function(),\n        upcomingInput: function(),\n        showPosition: function(),\n        test_match: function(regex_match_array, rule_index),\n        next: function(),\n        lex: function(),\n        begin: function(condition),\n        popState: function(),\n        _currentRules: function(),\n        topState: function(),\n        pushState: function(condition),\n\n        options: {\n            ranges: boolean           (optional: true ==> token location info will include a .range[] member)\n            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n        },\n\n        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n        rules: [...],\n        conditions: {associative list: name ==> set},\n    }\n  }\n\n\n  token location info (@$, _$, etc.): {\n    first_line: n,\n    last_line: n,\n    first_column: n,\n    last_column: n,\n    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)\n  }\n\n\n  the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n    text:        (matched text)\n    token:       (the produced terminal token, if any)\n    line:        (yylineno)\n  }\n  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n    loc:         (yylloc)\n    expected:    (string describing the set of expected tokens)\n    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n  }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,20],$V1=[1,75],$V2=[1,71],$V3=[1,76],$V4=[1,77],$V5=[1,73],$V6=[1,74],$V7=[1,50],$V8=[1,52],$V9=[1,53],$Va=[1,54],$Vb=[1,55],$Vc=[1,45],$Vd=[1,46],$Ve=[1,27],$Vf=[1,60],$Vg=[1,61],$Vh=[1,70],$Vi=[1,43],$Vj=[1,26],$Vk=[1,58],$Vl=[1,59],$Vm=[1,57],$Vn=[1,38],$Vo=[1,44],$Vp=[1,56],$Vq=[1,65],$Vr=[1,66],$Vs=[1,67],$Vt=[1,68],$Vu=[1,42],$Vv=[1,64],$Vw=[1,29],$Vx=[1,30],$Vy=[1,31],$Vz=[1,32],$VA=[1,33],$VB=[1,34],$VC=[1,35],$VD=[1,78],$VE=[1,6,26,34,109],$VF=[1,88],$VG=[1,81],$VH=[1,80],$VI=[1,79],$VJ=[1,82],$VK=[1,83],$VL=[1,84],$VM=[1,85],$VN=[1,86],$VO=[1,87],$VP=[1,91],$VQ=[1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,136,137,142,143,144,145,146,147,148],$VR=[1,97],$VS=[1,98],$VT=[1,99],$VU=[1,100],$VV=[1,102],$VW=[1,103],$VX=[1,96],$VY=[2,115],$VZ=[1,6,25,26,34,56,61,64,73,74,75,76,78,80,81,85,91,92,93,98,100,109,111,112,113,117,118,133,136,137,142,143,144,145,146,147,148],$V_=[2,82],$V$=[1,108],$V01=[2,61],$V11=[1,112],$V21=[1,117],$V31=[1,118],$V41=[1,120],$V51=[1,6,25,26,34,46,56,61,64,73,74,75,76,78,80,81,85,91,92,93,98,100,109,111,112,113,117,118,133,136,137,142,143,144,145,146,147,148],$V61=[2,79],$V71=[1,6,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,136,137,142,143,144,145,146,147,148],$V81=[1,155],$V91=[1,157],$Va1=[1,152],$Vb1=[1,6,25,26,34,46,56,61,64,73,74,75,76,78,80,81,85,87,91,92,93,98,100,109,111,112,113,117,118,133,136,137,140,141,142,143,144,145,146,147,148,149],$Vc1=[2,98],$Vd1=[1,6,25,26,34,49,56,61,64,73,74,75,76,78,80,81,85,91,92,93,98,100,109,111,112,113,117,118,133,136,137,142,143,144,145,146,147,148],$Ve1=[1,6,25,26,34,46,49,56,61,64,73,74,75,76,78,80,81,85,87,91,92,93,98,100,109,111,112,113,117,118,124,125,133,136,137,140,141,142,143,144,145,146,147,148,149],$Vf1=[1,207],$Vg1=[1,206],$Vh1=[1,6,25,26,34,38,56,61,64,73,74,75,76,78,80,81,85,91,92,93,98,100,109,111,112,113,117,118,133,136,137,142,143,144,145,146,147,148],$Vi1=[2,59],$Vj1=[1,217],$Vk1=[6,25,26,56,61],$Vl1=[6,25,26,46,56,61,64],$Vm1=[1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,136,137,143,145,146,147,148],$Vn1=[1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133],$Vo1=[73,74,75,76,78,81,91,92],$Vp1=[1,236],$Vq1=[2,136],$Vr1=[1,6,25,26,34,46,56,61,64,73,74,75,76,78,80,81,85,91,92,93,98,100,109,111,112,113,117,118,124,125,133,136,137,142,143,144,145,146,147,148],$Vs1=[1,245],$Vt1=[6,25,26,61,93,98],$Vu1=[1,6,25,26,34,56,61,64,80,85,93,98,100,109,118,133],$Vv1=[1,6,25,26,34,56,61,64,80,85,93,98,100,109,112,118,133],$Vw1=[124,125],$Vx1=[61,124,125],$Vy1=[1,256],$Vz1=[6,25,26,61,85],$VA1=[6,25,26,49,61,85],$VB1=[6,25,26,46,49,61,85],$VC1=[1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,136,137,145,146,147,148],$VD1=[11,28,30,32,33,36,37,40,41,42,43,44,52,53,54,58,59,80,83,86,90,95,96,97,103,107,108,111,113,115,117,126,132,134,135,136,137,138,140,141],$VE1=[2,125],$VF1=[6,25,26],$VG1=[2,60],$VH1=[1,270],$VI1=[1,271],$VJ1=[1,6,25,26,34,56,61,64,80,85,93,98,100,105,106,109,111,112,113,117,118,128,130,133,136,137,142,143,144,145,146,147,148],$VK1=[26,128,130],$VL1=[1,6,26,34,56,61,64,80,85,93,98,100,109,112,118,133],$VM1=[2,74],$VN1=[1,293],$VO1=[1,294],$VP1=[1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,128,133,136,137,142,143,144,145,146,147,148],$VQ1=[1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,113,117,118,133],$VR1=[1,305],$VS1=[1,306],$VT1=[6,25,26,61],$VU1=[1,6,25,26,34,56,61,64,80,85,93,98,100,105,109,111,112,113,117,118,133,136,137,142,143,144,145,146,147,148],$VV1=[25,61];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"Root\":3,\"Body\":4,\"Line\":5,\"TERMINATOR\":6,\"Expression\":7,\"Statement\":8,\"Return\":9,\"Comment\":10,\"STATEMENT\":11,\"Value\":12,\"Invocation\":13,\"Code\":14,\"Operation\":15,\"Assign\":16,\"If\":17,\"Try\":18,\"While\":19,\"For\":20,\"Switch\":21,\"Class\":22,\"Throw\":23,\"Block\":24,\"INDENT\":25,\"OUTDENT\":26,\"Identifier\":27,\"IDENTIFIER\":28,\"AlphaNumeric\":29,\"NUMBER\":30,\"String\":31,\"STRING\":32,\"STRING_START\":33,\"STRING_END\":34,\"Regex\":35,\"REGEX\":36,\"REGEX_START\":37,\"REGEX_END\":38,\"Literal\":39,\"JS\":40,\"DEBUGGER\":41,\"UNDEFINED\":42,\"NULL\":43,\"BOOL\":44,\"Assignable\":45,\"=\":46,\"AssignObj\":47,\"ObjAssignable\":48,\":\":49,\"SimpleObjAssignable\":50,\"ThisProperty\":51,\"RETURN\":52,\"HERECOMMENT\":53,\"PARAM_START\":54,\"ParamList\":55,\"PARAM_END\":56,\"FuncGlyph\":57,\"->\":58,\"=>\":59,\"OptComma\":60,\",\":61,\"Param\":62,\"ParamVar\":63,\"...\":64,\"Array\":65,\"Object\":66,\"Splat\":67,\"SimpleAssignable\":68,\"Accessor\":69,\"Parenthetical\":70,\"Range\":71,\"This\":72,\".\":73,\"?.\":74,\"::\":75,\"?::\":76,\"Index\":77,\"INDEX_START\":78,\"IndexValue\":79,\"INDEX_END\":80,\"INDEX_SOAK\":81,\"Slice\":82,\"{\":83,\"AssignList\":84,\"}\":85,\"CLASS\":86,\"EXTENDS\":87,\"OptFuncExist\":88,\"Arguments\":89,\"SUPER\":90,\"FUNC_EXIST\":91,\"CALL_START\":92,\"CALL_END\":93,\"ArgList\":94,\"THIS\":95,\"@\":96,\"[\":97,\"]\":98,\"RangeDots\":99,\"..\":100,\"Arg\":101,\"SimpleArgs\":102,\"TRY\":103,\"Catch\":104,\"FINALLY\":105,\"CATCH\":106,\"THROW\":107,\"(\":108,\")\":109,\"WhileSource\":110,\"WHILE\":111,\"WHEN\":112,\"UNTIL\":113,\"Loop\":114,\"LOOP\":115,\"ForBody\":116,\"FOR\":117,\"BY\":118,\"ForStart\":119,\"ForSource\":120,\"ForVariables\":121,\"OWN\":122,\"ForValue\":123,\"FORIN\":124,\"FOROF\":125,\"SWITCH\":126,\"Whens\":127,\"ELSE\":128,\"When\":129,\"LEADING_WHEN\":130,\"IfBlock\":131,\"IF\":132,\"POST_IF\":133,\"UNARY\":134,\"UNARY_MATH\":135,\"-\":136,\"+\":137,\"YIELD\":138,\"FROM\":139,\"--\":140,\"++\":141,\"?\":142,\"MATH\":143,\"**\":144,\"SHIFT\":145,\"COMPARE\":146,\"LOGIC\":147,\"RELATION\":148,\"COMPOUND_ASSIGN\":149,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"TERMINATOR\",11:\"STATEMENT\",25:\"INDENT\",26:\"OUTDENT\",28:\"IDENTIFIER\",30:\"NUMBER\",32:\"STRING\",33:\"STRING_START\",34:\"STRING_END\",36:\"REGEX\",37:\"REGEX_START\",38:\"REGEX_END\",40:\"JS\",41:\"DEBUGGER\",42:\"UNDEFINED\",43:\"NULL\",44:\"BOOL\",46:\"=\",49:\":\",52:\"RETURN\",53:\"HERECOMMENT\",54:\"PARAM_START\",56:\"PARAM_END\",58:\"->\",59:\"=>\",61:\",\",64:\"...\",73:\".\",74:\"?.\",75:\"::\",76:\"?::\",78:\"INDEX_START\",80:\"INDEX_END\",81:\"INDEX_SOAK\",83:\"{\",85:\"}\",86:\"CLASS\",87:\"EXTENDS\",90:\"SUPER\",91:\"FUNC_EXIST\",92:\"CALL_START\",93:\"CALL_END\",95:\"THIS\",96:\"@\",97:\"[\",98:\"]\",100:\"..\",103:\"TRY\",105:\"FINALLY\",106:\"CATCH\",107:\"THROW\",108:\"(\",109:\")\",111:\"WHILE\",112:\"WHEN\",113:\"UNTIL\",115:\"LOOP\",117:\"FOR\",118:\"BY\",122:\"OWN\",124:\"FORIN\",125:\"FOROF\",126:\"SWITCH\",128:\"ELSE\",130:\"LEADING_WHEN\",132:\"IF\",133:\"POST_IF\",134:\"UNARY\",135:\"UNARY_MATH\",136:\"-\",137:\"+\",138:\"YIELD\",139:\"FROM\",140:\"--\",141:\"++\",142:\"?\",143:\"MATH\",144:\"**\",145:\"SHIFT\",146:\"COMPARE\",147:\"LOGIC\",148:\"RELATION\",149:\"COMPOUND_ASSIGN\"},\nproductions_: [0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[24,2],[24,3],[27,1],[29,1],[29,1],[31,1],[31,3],[35,1],[35,3],[39,1],[39,1],[39,1],[39,1],[39,1],[39,1],[39,1],[16,3],[16,4],[16,5],[47,1],[47,3],[47,5],[47,3],[47,5],[47,1],[50,1],[50,1],[48,1],[48,1],[9,2],[9,1],[10,1],[14,5],[14,2],[57,1],[57,1],[60,0],[60,1],[55,0],[55,1],[55,3],[55,4],[55,6],[62,1],[62,2],[62,3],[62,1],[63,1],[63,1],[63,1],[63,1],[67,2],[68,1],[68,2],[68,2],[68,1],[45,1],[45,1],[45,1],[12,1],[12,1],[12,1],[12,1],[12,1],[69,2],[69,2],[69,2],[69,2],[69,1],[69,1],[77,3],[77,2],[79,1],[79,1],[66,4],[84,0],[84,1],[84,3],[84,4],[84,6],[22,1],[22,2],[22,3],[22,4],[22,2],[22,3],[22,4],[22,5],[13,3],[13,3],[13,1],[13,2],[88,0],[88,1],[89,2],[89,4],[72,1],[72,1],[51,2],[65,2],[65,4],[99,1],[99,1],[71,5],[82,3],[82,2],[82,2],[82,1],[94,1],[94,3],[94,4],[94,4],[94,6],[101,1],[101,1],[101,1],[102,1],[102,3],[18,2],[18,3],[18,4],[18,5],[104,3],[104,3],[104,2],[23,2],[70,3],[70,5],[110,2],[110,4],[110,2],[110,4],[19,2],[19,2],[19,2],[19,1],[114,2],[114,2],[20,2],[20,2],[20,2],[116,2],[116,4],[116,2],[119,2],[119,3],[123,1],[123,1],[123,1],[123,1],[121,1],[121,3],[120,2],[120,2],[120,4],[120,4],[120,4],[120,6],[120,6],[21,5],[21,7],[21,4],[21,6],[127,1],[127,2],[129,3],[129,4],[131,3],[131,5],[17,1],[17,3],[17,3],[17,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,5],[15,4],[15,3]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\nreturn this.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Block);\nbreak;\ncase 2:\nreturn this.$ = $$[$0];\nbreak;\ncase 3:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(yy.Block.wrap([$$[$0]]));\nbreak;\ncase 4:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].push($$[$0]));\nbreak;\ncase 5:\nthis.$ = $$[$0-1];\nbreak;\ncase 6: case 7: case 8: case 9: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 27: case 32: case 34: case 47: case 48: case 49: case 50: case 51: case 59: case 60: case 70: case 71: case 72: case 73: case 78: case 79: case 82: case 86: case 92: case 136: case 137: case 139: case 169: case 170: case 186: case 192:\nthis.$ = $$[$0];\nbreak;\ncase 10: case 25: case 26: case 28: case 30: case 33: case 35:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Literal($$[$0]));\nbreak;\ncase 23:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Block);\nbreak;\ncase 24: case 31: case 93:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-1]);\nbreak;\ncase 29: case 149:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Parens($$[$0-1]));\nbreak;\ncase 36:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Undefined);\nbreak;\ncase 37:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Null);\nbreak;\ncase 38:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Bool($$[$0]));\nbreak;\ncase 39:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0]));\nbreak;\ncase 40:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0]));\nbreak;\ncase 41:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1]));\nbreak;\ncase 42: case 75: case 80: case 81: case 83: case 84: case 85: case 171: case 172:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value($$[$0]));\nbreak;\ncase 43:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])), $$[$0], 'object', {\n          operatorToken: yy.addLocationDataFn(_$[$0-1])(new yy.Literal($$[$0-1]))\n        }));\nbreak;\ncase 44:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], 'object', {\n          operatorToken: yy.addLocationDataFn(_$[$0-3])(new yy.Literal($$[$0-3]))\n        }));\nbreak;\ncase 45:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])), $$[$0], null, {\n          operatorToken: yy.addLocationDataFn(_$[$0-1])(new yy.Literal($$[$0-1]))\n        }));\nbreak;\ncase 46:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign(yy.addLocationDataFn(_$[$0-4])(new yy.Value($$[$0-4])), $$[$0-1], null, {\n          operatorToken: yy.addLocationDataFn(_$[$0-3])(new yy.Literal($$[$0-3]))\n        }));\nbreak;\ncase 52:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Return($$[$0]));\nbreak;\ncase 53:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Return);\nbreak;\ncase 54:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Comment($$[$0]));\nbreak;\ncase 55:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Code($$[$0-3], $$[$0], $$[$0-1]));\nbreak;\ncase 56:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Code([], $$[$0], $$[$0-1]));\nbreak;\ncase 57:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])('func');\nbreak;\ncase 58:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])('boundfunc');\nbreak;\ncase 61: case 98:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])([]);\nbreak;\ncase 62: case 99: case 131: case 173:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])([$$[$0]]);\nbreak;\ncase 63: case 100: case 132:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].concat($$[$0]));\nbreak;\ncase 64: case 101: case 133:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-3].concat($$[$0]));\nbreak;\ncase 65: case 102: case 135:\nthis.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])($$[$0-5].concat($$[$0-2]));\nbreak;\ncase 66:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Param($$[$0]));\nbreak;\ncase 67:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Param($$[$0-1], null, true));\nbreak;\ncase 68:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Param($$[$0-2], $$[$0]));\nbreak;\ncase 69: case 138:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Expansion);\nbreak;\ncase 74:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Splat($$[$0-1]));\nbreak;\ncase 76:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].add($$[$0]));\nbreak;\ncase 77:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value($$[$0-1], [].concat($$[$0])));\nbreak;\ncase 87:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0]));\nbreak;\ncase 88:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Access($$[$0], 'soak'));\nbreak;\ncase 89:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.Literal('prototype'))), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]);\nbreak;\ncase 90:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Access(new yy.Literal('prototype'), 'soak')), yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))]);\nbreak;\ncase 91:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Access(new yy.Literal('prototype')));\nbreak;\ncase 94:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(yy.extend($$[$0], {\n          soak: true\n        }));\nbreak;\ncase 95:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Index($$[$0]));\nbreak;\ncase 96:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Slice($$[$0]));\nbreak;\ncase 97:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Obj($$[$0-2], $$[$0-3].generated));\nbreak;\ncase 103:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Class);\nbreak;\ncase 104:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class(null, null, $$[$0]));\nbreak;\ncase 105:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class(null, $$[$0]));\nbreak;\ncase 106:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class(null, $$[$0-1], $$[$0]));\nbreak;\ncase 107:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Class($$[$0]));\nbreak;\ncase 108:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Class($$[$0-1], null, $$[$0]));\nbreak;\ncase 109:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Class($$[$0-2], $$[$0]));\nbreak;\ncase 110:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Class($$[$0-3], $$[$0-1], $$[$0]));\nbreak;\ncase 111: case 112:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Call($$[$0-2], $$[$0], $$[$0-1]));\nbreak;\ncase 113:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Call('super', [new yy.Splat(new yy.Literal('arguments'))]));\nbreak;\ncase 114:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Call('super', $$[$0]));\nbreak;\ncase 115:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(false);\nbreak;\ncase 116:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(true);\nbreak;\ncase 117:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([]);\nbreak;\ncase 118: case 134:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])($$[$0-2]);\nbreak;\ncase 119: case 120:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Value(new yy.Literal('this')));\nbreak;\ncase 121:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Value(yy.addLocationDataFn(_$[$0-1])(new yy.Literal('this')), [yy.addLocationDataFn(_$[$0])(new yy.Access($$[$0]))], 'this'));\nbreak;\ncase 122:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Arr([]));\nbreak;\ncase 123:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Arr($$[$0-2]));\nbreak;\ncase 124:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])('inclusive');\nbreak;\ncase 125:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])('exclusive');\nbreak;\ncase 126:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Range($$[$0-3], $$[$0-1], $$[$0-2]));\nbreak;\ncase 127:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Range($$[$0-2], $$[$0], $$[$0-1]));\nbreak;\ncase 128:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range($$[$0-1], null, $$[$0]));\nbreak;\ncase 129:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Range(null, $$[$0], $$[$0-1]));\nbreak;\ncase 130:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])(new yy.Range(null, null, $$[$0]));\nbreak;\ncase 140:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([].concat($$[$0-2], $$[$0]));\nbreak;\ncase 141:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Try($$[$0]));\nbreak;\ncase 142:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Try($$[$0-1], $$[$0][0], $$[$0][1]));\nbreak;\ncase 143:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Try($$[$0-2], null, null, $$[$0]));\nbreak;\ncase 144:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0]));\nbreak;\ncase 145:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-1], $$[$0]]);\nbreak;\ncase 146:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([yy.addLocationDataFn(_$[$0-1])(new yy.Value($$[$0-1])), $$[$0]]);\nbreak;\ncase 147:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])([null, $$[$0]]);\nbreak;\ncase 148:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Throw($$[$0]));\nbreak;\ncase 150:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Parens($$[$0-2]));\nbreak;\ncase 151:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0]));\nbreak;\ncase 152:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], {\n          guard: $$[$0]\n        }));\nbreak;\ncase 153:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While($$[$0], {\n          invert: true\n        }));\nbreak;\ncase 154:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.While($$[$0-2], {\n          invert: true,\n          guard: $$[$0]\n        }));\nbreak;\ncase 155:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].addBody($$[$0]));\nbreak;\ncase 156: case 157:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0].addBody(yy.addLocationDataFn(_$[$0-1])(yy.Block.wrap([$$[$0-1]]))));\nbreak;\ncase 158:\nthis.$ = yy.addLocationDataFn(_$[$0], _$[$0])($$[$0]);\nbreak;\ncase 159:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.Literal('true'))).addBody($$[$0]));\nbreak;\ncase 160:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.While(yy.addLocationDataFn(_$[$0-1])(new yy.Literal('true'))).addBody(yy.addLocationDataFn(_$[$0])(yy.Block.wrap([$$[$0]]))));\nbreak;\ncase 161: case 162:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0-1], $$[$0]));\nbreak;\ncase 163:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.For($$[$0], $$[$0-1]));\nbreak;\ncase 164:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({\n          source: yy.addLocationDataFn(_$[$0])(new yy.Value($$[$0]))\n        });\nbreak;\ncase 165:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({\n          source: yy.addLocationDataFn(_$[$0-2])(new yy.Value($$[$0-2])),\n          step: $$[$0]\n        });\nbreak;\ncase 166:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])((function () {\n        $$[$0].own = $$[$0-1].own;\n        $$[$0].name = $$[$0-1][0];\n        $$[$0].index = $$[$0-1][1];\n        return $$[$0];\n      }()));\nbreak;\ncase 167:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0]);\nbreak;\ncase 168:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () {\n        $$[$0].own = true;\n        return $$[$0];\n      }()));\nbreak;\ncase 174:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([$$[$0-2], $$[$0]]);\nbreak;\ncase 175:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({\n          source: $$[$0]\n        });\nbreak;\ncase 176:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])({\n          source: $$[$0],\n          object: true\n        });\nbreak;\ncase 177:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({\n          source: $$[$0-2],\n          guard: $$[$0]\n        });\nbreak;\ncase 178:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({\n          source: $$[$0-2],\n          guard: $$[$0],\n          object: true\n        });\nbreak;\ncase 179:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])({\n          source: $$[$0-2],\n          step: $$[$0]\n        });\nbreak;\ncase 180:\nthis.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({\n          source: $$[$0-4],\n          guard: $$[$0-2],\n          step: $$[$0]\n        });\nbreak;\ncase 181:\nthis.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])({\n          source: $$[$0-4],\n          step: $$[$0-2],\n          guard: $$[$0]\n        });\nbreak;\ncase 182:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Switch($$[$0-3], $$[$0-1]));\nbreak;\ncase 183:\nthis.$ = yy.addLocationDataFn(_$[$0-6], _$[$0])(new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1]));\nbreak;\ncase 184:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Switch(null, $$[$0-1]));\nbreak;\ncase 185:\nthis.$ = yy.addLocationDataFn(_$[$0-5], _$[$0])(new yy.Switch(null, $$[$0-3], $$[$0-1]));\nbreak;\ncase 187:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])($$[$0-1].concat($$[$0]));\nbreak;\ncase 188:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])([[$$[$0-1], $$[$0]]]);\nbreak;\ncase 189:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])([[$$[$0-2], $$[$0-1]]]);\nbreak;\ncase 190:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], {\n          type: $$[$0-2]\n        }));\nbreak;\ncase 191:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])($$[$0-4].addElse(yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0-1], $$[$0], {\n          type: $$[$0-2]\n        }))));\nbreak;\ncase 193:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])($$[$0-2].addElse($$[$0]));\nbreak;\ncase 194: case 195:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.If($$[$0], yy.addLocationDataFn(_$[$0-2])(yy.Block.wrap([$$[$0-2]])), {\n          type: $$[$0-1],\n          statement: true\n        }));\nbreak;\ncase 196: case 197: case 200: case 201:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op($$[$0-1], $$[$0]));\nbreak;\ncase 198:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('-', $$[$0]));\nbreak;\ncase 199:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('+', $$[$0]));\nbreak;\ncase 202:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-2].concat($$[$0-1]), $$[$0]));\nbreak;\ncase 203:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0]));\nbreak;\ncase 204:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0]));\nbreak;\ncase 205:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('--', $$[$0-1], null, true));\nbreak;\ncase 206:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Op('++', $$[$0-1], null, true));\nbreak;\ncase 207:\nthis.$ = yy.addLocationDataFn(_$[$0-1], _$[$0])(new yy.Existence($$[$0-1]));\nbreak;\ncase 208:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('+', $$[$0-2], $$[$0]));\nbreak;\ncase 209:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op('-', $$[$0-2], $$[$0]));\nbreak;\ncase 210: case 211: case 212: case 213: case 214:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Op($$[$0-1], $$[$0-2], $$[$0]));\nbreak;\ncase 215:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])((function () {\n        if ($$[$0-1].charAt(0) === '!') {\n          return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert();\n        } else {\n          return new yy.Op($$[$0-1], $$[$0-2], $$[$0]);\n        }\n      }()));\nbreak;\ncase 216:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Assign($$[$0-2], $$[$0], $$[$0-1]));\nbreak;\ncase 217:\nthis.$ = yy.addLocationDataFn(_$[$0-4], _$[$0])(new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3]));\nbreak;\ncase 218:\nthis.$ = yy.addLocationDataFn(_$[$0-3], _$[$0])(new yy.Assign($$[$0-3], $$[$0], $$[$0-2]));\nbreak;\ncase 219:\nthis.$ = yy.addLocationDataFn(_$[$0-2], _$[$0])(new yy.Extends($$[$0-2], $$[$0]));\nbreak;\n}\n},\ntable: [{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{1:[3]},{1:[2,2],6:$VD},o($VE,[2,3]),o($VE,[2,6],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($VE,[2,7],{119:69,110:92,116:93,111:$Vq,113:$Vr,117:$Vt,133:$VP}),o($VQ,[2,11],{88:94,69:95,77:101,73:$VR,74:$VS,75:$VT,76:$VU,78:$VV,81:$VW,91:$VX,92:$VY}),o($VQ,[2,12],{77:101,88:104,69:105,73:$VR,74:$VS,75:$VT,76:$VU,78:$VV,81:$VW,91:$VX,92:$VY}),o($VQ,[2,13]),o($VQ,[2,14]),o($VQ,[2,15]),o($VQ,[2,16]),o($VQ,[2,17]),o($VQ,[2,18]),o($VQ,[2,19]),o($VQ,[2,20]),o($VQ,[2,21]),o($VQ,[2,22]),o($VQ,[2,8]),o($VQ,[2,9]),o($VQ,[2,10]),o($VZ,$V_,{46:[1,106]}),o($VZ,[2,83]),o($VZ,[2,84]),o($VZ,[2,85]),o($VZ,[2,86]),o([1,6,25,26,34,38,56,61,64,73,74,75,76,78,80,81,85,91,93,98,100,109,111,112,113,117,118,133,136,137,142,143,144,145,146,147,148],[2,113],{89:107,92:$V$}),o([6,25,56,61],$V01,{55:109,62:110,63:111,27:113,51:114,65:115,66:116,28:$V1,64:$V11,83:$Vh,96:$V21,97:$V31}),{24:119,25:$V41},{7:121,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:123,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:124,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:125,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:127,8:126,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:[1,128],140:$VB,141:$VC},{12:130,13:131,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:132,51:63,65:47,66:48,68:129,70:23,71:24,72:25,83:$Vh,90:$Vj,95:$Vk,96:$Vl,97:$Vm,108:$Vp},{12:130,13:131,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:132,51:63,65:47,66:48,68:133,70:23,71:24,72:25,83:$Vh,90:$Vj,95:$Vk,96:$Vl,97:$Vm,108:$Vp},o($V51,$V61,{87:[1,137],140:[1,134],141:[1,135],149:[1,136]}),o($VQ,[2,192],{128:[1,138]}),{24:139,25:$V41},{24:140,25:$V41},o($VQ,[2,158]),{24:141,25:$V41},{7:142,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($V71,[2,103],{39:22,70:23,71:24,72:25,65:47,66:48,29:49,35:51,27:62,51:63,31:72,12:130,13:131,45:132,24:144,68:146,25:$V41,28:$V1,30:$V2,32:$V3,33:$V4,36:$V5,37:$V6,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,83:$Vh,87:[1,145],90:$Vj,95:$Vk,96:$Vl,97:$Vm,108:$Vp}),{7:147,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o([1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,142,143,144,145,146,147,148],[2,53],{12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,70:23,71:24,72:25,57:28,68:36,131:37,110:39,114:40,116:41,65:47,66:48,29:49,35:51,27:62,51:63,119:69,31:72,8:122,7:148,11:$V0,28:$V1,30:$V2,32:$V3,33:$V4,36:$V5,37:$V6,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,52:$Vc,53:$Vd,54:$Ve,58:$Vf,59:$Vg,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,115:$Vs,126:$Vu,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC}),o($VQ,[2,54]),o($V51,[2,80]),o($V51,[2,81]),o($VZ,[2,32]),o($VZ,[2,33]),o($VZ,[2,34]),o($VZ,[2,35]),o($VZ,[2,36]),o($VZ,[2,37]),o($VZ,[2,38]),{4:149,5:3,7:4,8:5,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,150],27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:151,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:$V81,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,64:$V91,65:47,66:48,67:156,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,94:153,95:$Vk,96:$Vl,97:$Vm,98:$Va1,101:154,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VZ,[2,119]),o($VZ,[2,120],{27:158,28:$V1}),{25:[2,57]},{25:[2,58]},o($Vb1,[2,75]),o($Vb1,[2,78]),{7:159,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:160,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:161,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:163,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,24:162,25:$V41,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{27:168,28:$V1,51:169,65:170,66:171,71:164,83:$Vh,96:$V21,97:$Vm,121:165,122:[1,166],123:167},{120:172,124:[1,173],125:[1,174]},o([6,25,61,85],$Vc1,{31:72,84:175,47:176,48:177,50:178,10:179,29:180,27:181,51:182,28:$V1,30:$V2,32:$V3,33:$V4,53:$Vd,96:$V21}),o($Vd1,[2,26]),o($Vd1,[2,27]),o($VZ,[2,30]),{12:130,13:183,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:132,51:63,65:47,66:48,68:184,70:23,71:24,72:25,83:$Vh,90:$Vj,95:$Vk,96:$Vl,97:$Vm,108:$Vp},o($Ve1,[2,25]),o($Vd1,[2,28]),{4:185,5:3,7:4,8:5,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VE,[2,5],{7:4,8:5,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,70:23,71:24,72:25,57:28,68:36,131:37,110:39,114:40,116:41,65:47,66:48,29:49,35:51,27:62,51:63,119:69,31:72,5:186,11:$V0,28:$V1,30:$V2,32:$V3,33:$V4,36:$V5,37:$V6,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,52:$Vc,53:$Vd,54:$Ve,58:$Vf,59:$Vg,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,111:$Vq,113:$Vr,115:$Vs,117:$Vt,126:$Vu,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC}),o($VQ,[2,207]),{7:187,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:188,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:189,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:190,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:191,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:192,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:193,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:194,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:195,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VQ,[2,157]),o($VQ,[2,162]),{7:196,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VQ,[2,156]),o($VQ,[2,161]),{89:197,92:$V$},o($Vb1,[2,76]),{92:[2,116]},{27:198,28:$V1},{27:199,28:$V1},o($Vb1,[2,91],{27:200,28:$V1}),{27:201,28:$V1},o($Vb1,[2,92]),{7:203,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,64:$Vf1,65:47,66:48,68:36,70:23,71:24,72:25,79:202,82:204,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,99:205,100:$Vg1,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{77:208,78:$VV,81:$VW},{89:209,92:$V$},o($Vb1,[2,77]),{6:[1,211],7:210,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,212],27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($Vh1,[2,114]),{7:215,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:$V81,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,64:$V91,65:47,66:48,67:156,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,93:[1,213],94:214,95:$Vk,96:$Vl,97:$Vm,101:154,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o([6,25],$Vi1,{60:218,56:[1,216],61:$Vj1}),o($Vk1,[2,62]),o($Vk1,[2,66],{46:[1,220],64:[1,219]}),o($Vk1,[2,69]),o($Vl1,[2,70]),o($Vl1,[2,71]),o($Vl1,[2,72]),o($Vl1,[2,73]),{27:158,28:$V1},{7:215,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:$V81,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,64:$V91,65:47,66:48,67:156,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,94:153,95:$Vk,96:$Vl,97:$Vm,98:$Va1,101:154,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VQ,[2,56]),{4:222,5:3,7:4,8:5,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[1,221],27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o([1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,136,137,143,144,145,146,147,148],[2,196],{119:69,110:89,116:90,142:$VI}),{110:92,111:$Vq,113:$Vr,116:93,117:$Vt,119:69,133:$VP},o($Vm1,[2,197],{119:69,110:89,116:90,142:$VI,144:$VK}),o($Vm1,[2,198],{119:69,110:89,116:90,142:$VI,144:$VK}),o($Vm1,[2,199],{119:69,110:89,116:90,142:$VI,144:$VK}),o($VQ,[2,200],{119:69,110:92,116:93}),o($Vn1,[2,201],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{7:223,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VQ,[2,203],{73:$V61,74:$V61,75:$V61,76:$V61,78:$V61,81:$V61,91:$V61,92:$V61}),{69:95,73:$VR,74:$VS,75:$VT,76:$VU,77:101,78:$VV,81:$VW,88:94,91:$VX,92:$VY},{69:105,73:$VR,74:$VS,75:$VT,76:$VU,77:101,78:$VV,81:$VW,88:104,91:$VX,92:$VY},o($Vo1,$V_),o($VQ,[2,204],{73:$V61,74:$V61,75:$V61,76:$V61,78:$V61,81:$V61,91:$V61,92:$V61}),o($VQ,[2,205]),o($VQ,[2,206]),{6:[1,226],7:224,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,225],27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:227,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{24:228,25:$V41,132:[1,229]},o($VQ,[2,141],{104:230,105:[1,231],106:[1,232]}),o($VQ,[2,155]),o($VQ,[2,163]),{25:[1,233],110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},{127:234,129:235,130:$Vp1},o($VQ,[2,104]),{7:237,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($V71,[2,107],{24:238,25:$V41,73:$V61,74:$V61,75:$V61,76:$V61,78:$V61,81:$V61,91:$V61,92:$V61,87:[1,239]}),o($Vn1,[2,148],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vn1,[2,52],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{6:$VD,109:[1,240]},{4:241,5:3,7:4,8:5,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o([6,25,61,98],$Vq1,{119:69,110:89,116:90,99:242,64:[1,243],100:$Vg1,111:$Vq,113:$Vr,117:$Vt,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vr1,[2,122]),o([6,25,98],$Vi1,{60:244,61:$Vs1}),o($Vt1,[2,131]),{7:215,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:$V81,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,64:$V91,65:47,66:48,67:156,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,94:246,95:$Vk,96:$Vl,97:$Vm,101:154,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($Vt1,[2,137]),o($Vt1,[2,138]),o($Ve1,[2,121]),{24:247,25:$V41,110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},o($Vu1,[2,151],{119:69,110:89,116:90,111:$Vq,112:[1,248],113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vu1,[2,153],{119:69,110:89,116:90,111:$Vq,112:[1,249],113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($VQ,[2,159]),o($Vv1,[2,160],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o([1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,133,136,137,142,143,144,145,146,147,148],[2,164],{118:[1,250]}),o($Vw1,[2,167]),{27:168,28:$V1,51:169,65:170,66:171,83:$Vh,96:$V21,97:$V31,121:251,123:167},o($Vw1,[2,173],{61:[1,252]}),o($Vx1,[2,169]),o($Vx1,[2,170]),o($Vx1,[2,171]),o($Vx1,[2,172]),o($VQ,[2,166]),{7:253,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:254,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o([6,25,85],$Vi1,{60:255,61:$Vy1}),o($Vz1,[2,99]),o($Vz1,[2,42],{49:[1,257]}),o($VA1,[2,50],{46:[1,258]}),o($Vz1,[2,47]),o($VA1,[2,51]),o($VB1,[2,48]),o($VB1,[2,49]),{38:[1,259],69:105,73:$VR,74:$VS,75:$VT,76:$VU,77:101,78:$VV,81:$VW,88:104,91:$VX,92:$VY},o($Vo1,$V61),{6:$VD,34:[1,260]},o($VE,[2,4]),o($VC1,[2,208],{119:69,110:89,116:90,142:$VI,143:$VJ,144:$VK}),o($VC1,[2,209],{119:69,110:89,116:90,142:$VI,143:$VJ,144:$VK}),o($Vm1,[2,210],{119:69,110:89,116:90,142:$VI,144:$VK}),o($Vm1,[2,211],{119:69,110:89,116:90,142:$VI,144:$VK}),o([1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,145,146,147,148],[2,212],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK}),o([1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,146,147],[2,213],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,148:$VO}),o([1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,147],[2,214],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,148:$VO}),o([1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,118,133,146,147,148],[2,215],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL}),o($Vv1,[2,195],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vv1,[2,194],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vh1,[2,111]),o($Vb1,[2,87]),o($Vb1,[2,88]),o($Vb1,[2,89]),o($Vb1,[2,90]),{80:[1,261]},{64:$Vf1,80:[2,95],99:262,100:$Vg1,110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},{80:[2,96]},{7:263,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,80:[2,130],83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VD1,[2,124]),o($VD1,$VE1),o($Vb1,[2,94]),o($Vh1,[2,112]),o($Vn1,[2,39],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{7:264,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:265,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($Vh1,[2,117]),o([6,25,93],$Vi1,{60:266,61:$Vs1}),o($Vt1,$Vq1,{119:69,110:89,116:90,64:[1,267],111:$Vq,113:$Vr,117:$Vt,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{57:268,58:$Vf,59:$Vg},o($VF1,$VG1,{63:111,27:113,51:114,65:115,66:116,62:269,28:$V1,64:$V11,83:$Vh,96:$V21,97:$V31}),{6:$VH1,25:$VI1},o($Vk1,[2,67]),{7:272,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VJ1,[2,23]),{6:$VD,26:[1,273]},o($Vn1,[2,202],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vn1,[2,216],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{7:274,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:275,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($Vn1,[2,219],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($VQ,[2,193]),{7:276,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VQ,[2,142],{105:[1,277]}),{24:278,25:$V41},{24:281,25:$V41,27:279,28:$V1,66:280,83:$Vh},{127:282,129:235,130:$Vp1},{26:[1,283],128:[1,284],129:285,130:$Vp1},o($VK1,[2,186]),{7:287,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,102:286,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VL1,[2,105],{119:69,110:89,116:90,24:288,25:$V41,111:$Vq,113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($VQ,[2,108]),{7:289,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VZ,[2,149]),{6:$VD,26:[1,290]},{7:291,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o([11,28,30,32,33,36,37,40,41,42,43,44,52,53,54,58,59,83,86,90,95,96,97,103,107,108,111,113,115,117,126,132,134,135,136,137,138,140,141],$VE1,{6:$VM1,25:$VM1,61:$VM1,98:$VM1}),{6:$VN1,25:$VO1,98:[1,292]},o([6,25,26,93,98],$VG1,{12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,70:23,71:24,72:25,57:28,68:36,131:37,110:39,114:40,116:41,65:47,66:48,29:49,35:51,27:62,51:63,119:69,31:72,8:122,67:156,7:215,101:295,11:$V0,28:$V1,30:$V2,32:$V3,33:$V4,36:$V5,37:$V6,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,52:$Vc,53:$Vd,54:$Ve,58:$Vf,59:$Vg,64:$V91,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,111:$Vq,113:$Vr,115:$Vs,117:$Vt,126:$Vu,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC}),o($VF1,$Vi1,{60:296,61:$Vs1}),o($VP1,[2,190]),{7:297,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:298,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:299,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($Vw1,[2,168]),{27:168,28:$V1,51:169,65:170,66:171,83:$Vh,96:$V21,97:$V31,123:300},o([1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,113,117,133],[2,175],{119:69,110:89,116:90,112:[1,301],118:[1,302],136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($VQ1,[2,176],{119:69,110:89,116:90,112:[1,303],136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{6:$VR1,25:$VS1,85:[1,304]},o([6,25,26,85],$VG1,{31:72,48:177,50:178,10:179,29:180,27:181,51:182,47:307,28:$V1,30:$V2,32:$V3,33:$V4,53:$Vd,96:$V21}),{7:308,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,309],27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:310,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,311],27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VZ,[2,31]),o($Vd1,[2,29]),o($Vb1,[2,93]),{7:312,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,80:[2,128],83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{80:[2,129],110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},o($Vn1,[2,40],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{26:[1,313],110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},{6:$VN1,25:$VO1,93:[1,314]},o($Vt1,$VM1),{24:315,25:$V41},o($Vk1,[2,63]),{27:113,28:$V1,51:114,62:316,63:111,64:$V11,65:115,66:116,83:$Vh,96:$V21,97:$V31},o($VT1,$V01,{62:110,63:111,27:113,51:114,65:115,66:116,55:317,28:$V1,64:$V11,83:$Vh,96:$V21,97:$V31}),o($Vk1,[2,68],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($VJ1,[2,24]),{26:[1,318],110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},o($Vn1,[2,218],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{24:319,25:$V41,110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},{24:320,25:$V41},o($VQ,[2,143]),{24:321,25:$V41},{24:322,25:$V41},o($VU1,[2,147]),{26:[1,323],128:[1,324],129:285,130:$Vp1},o($VQ,[2,184]),{24:325,25:$V41},o($VK1,[2,187]),{24:326,25:$V41,61:[1,327]},o($VV1,[2,139],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($VQ,[2,106]),o($VL1,[2,109],{119:69,110:89,116:90,24:328,25:$V41,111:$Vq,113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{109:[1,329]},{98:[1,330],110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},o($Vr1,[2,123]),{7:215,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,64:$V91,65:47,66:48,67:156,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,101:331,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:215,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:$V81,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,64:$V91,65:47,66:48,67:156,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,94:332,95:$Vk,96:$Vl,97:$Vm,101:154,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($Vt1,[2,132]),{6:$VN1,25:$VO1,26:[1,333]},o($Vv1,[2,152],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vv1,[2,154],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vv1,[2,165],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vw1,[2,174]),{7:334,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:335,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:336,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($Vr1,[2,97]),{10:179,27:181,28:$V1,29:180,30:$V2,31:72,32:$V3,33:$V4,47:337,48:177,50:178,51:182,53:$Vd,96:$V21},o($VT1,$Vc1,{31:72,47:176,48:177,50:178,10:179,29:180,27:181,51:182,84:338,28:$V1,30:$V2,32:$V3,33:$V4,53:$Vd,96:$V21}),o($Vz1,[2,100]),o($Vz1,[2,43],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{7:339,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($Vz1,[2,45],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{7:340,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{80:[2,127],110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},o($VQ,[2,41]),o($Vh1,[2,118]),o($VQ,[2,55]),o($Vk1,[2,64]),o($VF1,$Vi1,{60:341,61:$Vj1}),o($VQ,[2,217]),o($VP1,[2,191]),o($VQ,[2,144]),o($VU1,[2,145]),o($VU1,[2,146]),o($VQ,[2,182]),{24:342,25:$V41},{26:[1,343]},o($VK1,[2,188],{6:[1,344]}),{7:345,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},o($VQ,[2,110]),o($VZ,[2,150]),o($VZ,[2,126]),o($Vt1,[2,133]),o($VF1,$Vi1,{60:346,61:$Vs1}),o($Vt1,[2,134]),o([1,6,25,26,34,56,61,64,80,85,93,98,100,109,111,112,113,117,133],[2,177],{119:69,110:89,116:90,118:[1,347],136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($VQ1,[2,179],{119:69,110:89,116:90,112:[1,348],136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vn1,[2,178],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vz1,[2,101]),o($VF1,$Vi1,{60:349,61:$Vy1}),{26:[1,350],110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},{26:[1,351],110:89,111:$Vq,113:$Vr,116:90,117:$Vt,119:69,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO},{6:$VH1,25:$VI1,26:[1,352]},{26:[1,353]},o($VQ,[2,185]),o($VK1,[2,189]),o($VV1,[2,140],{119:69,110:89,116:90,111:$Vq,113:$Vr,117:$Vt,133:$VF,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),{6:$VN1,25:$VO1,26:[1,354]},{7:355,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{7:356,8:122,9:18,10:19,11:$V0,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:$V1,29:49,30:$V2,31:72,32:$V3,33:$V4,35:51,36:$V5,37:$V6,39:22,40:$V7,41:$V8,42:$V9,43:$Va,44:$Vb,45:21,51:63,52:$Vc,53:$Vd,54:$Ve,57:28,58:$Vf,59:$Vg,65:47,66:48,68:36,70:23,71:24,72:25,83:$Vh,86:$Vi,90:$Vj,95:$Vk,96:$Vl,97:$Vm,103:$Vn,107:$Vo,108:$Vp,110:39,111:$Vq,113:$Vr,114:40,115:$Vs,116:41,117:$Vt,119:69,126:$Vu,131:37,132:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,140:$VB,141:$VC},{6:$VR1,25:$VS1,26:[1,357]},o($Vz1,[2,44]),o($Vz1,[2,46]),o($Vk1,[2,65]),o($VQ,[2,183]),o($Vt1,[2,135]),o($Vn1,[2,180],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vn1,[2,181],{119:69,110:89,116:90,136:$VG,137:$VH,142:$VI,143:$VJ,144:$VK,145:$VL,146:$VM,147:$VN,148:$VO}),o($Vz1,[2,102])],\ndefaultActions: {60:[2,57],61:[2,58],96:[2,116],204:[2,96]},\nparseError: function parseError(str, hash) {\n    if (hash.recoverable) {\n        this.trace(str);\n    } else {\n        throw new Error(str);\n    }\n},\nparse: function parse(input) {\n    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n    var args = lstack.slice.call(arguments, 1);\n    var lexer = Object.create(this.lexer);\n    var sharedState = { yy: {} };\n    for (var k in this.yy) {\n        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n            sharedState.yy[k] = this.yy[k];\n        }\n    }\n    lexer.setInput(input, sharedState.yy);\n    sharedState.yy.lexer = lexer;\n    sharedState.yy.parser = this;\n    if (typeof lexer.yylloc == 'undefined') {\n        lexer.yylloc = {};\n    }\n    var yyloc = lexer.yylloc;\n    lstack.push(yyloc);\n    var ranges = lexer.options && lexer.options.ranges;\n    if (typeof sharedState.yy.parseError === 'function') {\n        this.parseError = sharedState.yy.parseError;\n    } else {\n        this.parseError = Object.getPrototypeOf(this).parseError;\n    }\n    function popStack(n) {\n        stack.length = stack.length - 2 * n;\n        vstack.length = vstack.length - n;\n        lstack.length = lstack.length - n;\n    }\n    _token_stack:\n        function lex() {\n            var token;\n            token = lexer.lex() || EOF;\n            if (typeof token !== 'number') {\n                token = self.symbols_[token] || token;\n            }\n            return token;\n        }\n    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n    while (true) {\n        state = stack[stack.length - 1];\n        if (this.defaultActions[state]) {\n            action = this.defaultActions[state];\n        } else {\n            if (symbol === null || typeof symbol == 'undefined') {\n                symbol = lex();\n            }\n            action = table[state] && table[state][symbol];\n        }\n                    if (typeof action === 'undefined' || !action.length || !action[0]) {\n                var errStr = '';\n                expected = [];\n                for (p in table[state]) {\n                    if (this.terminals_[p] && p > TERROR) {\n                        expected.push('\\'' + this.terminals_[p] + '\\'');\n                    }\n                }\n                if (lexer.showPosition) {\n                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n                } else {\n                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n                }\n                this.parseError(errStr, {\n                    text: lexer.match,\n                    token: this.terminals_[symbol] || symbol,\n                    line: lexer.yylineno,\n                    loc: yyloc,\n                    expected: expected\n                });\n            }\n        if (action[0] instanceof Array && action.length > 1) {\n            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n        }\n        switch (action[0]) {\n        case 1:\n            stack.push(symbol);\n            vstack.push(lexer.yytext);\n            lstack.push(lexer.yylloc);\n            stack.push(action[1]);\n            symbol = null;\n            if (!preErrorSymbol) {\n                yyleng = lexer.yyleng;\n                yytext = lexer.yytext;\n                yylineno = lexer.yylineno;\n                yyloc = lexer.yylloc;\n                if (recovering > 0) {\n                    recovering--;\n                }\n            } else {\n                symbol = preErrorSymbol;\n                preErrorSymbol = null;\n            }\n            break;\n        case 2:\n            len = this.productions_[action[1]][1];\n            yyval.$ = vstack[vstack.length - len];\n            yyval._$ = {\n                first_line: lstack[lstack.length - (len || 1)].first_line,\n                last_line: lstack[lstack.length - 1].last_line,\n                first_column: lstack[lstack.length - (len || 1)].first_column,\n                last_column: lstack[lstack.length - 1].last_column\n            };\n            if (ranges) {\n                yyval._$.range = [\n                    lstack[lstack.length - (len || 1)].range[0],\n                    lstack[lstack.length - 1].range[1]\n                ];\n            }\n            r = this.performAction.apply(yyval, [\n                yytext,\n                yyleng,\n                yylineno,\n                sharedState.yy,\n                action[1],\n                vstack,\n                lstack\n            ].concat(args));\n            if (typeof r !== 'undefined') {\n                return r;\n            }\n            if (len) {\n                stack = stack.slice(0, -1 * len * 2);\n                vstack = vstack.slice(0, -1 * len);\n                lstack = lstack.slice(0, -1 * len);\n            }\n            stack.push(this.productions_[action[1]][0]);\n            vstack.push(yyval.$);\n            lstack.push(yyval._$);\n            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n            stack.push(newState);\n            break;\n        case 3:\n            return true;\n        }\n    }\n    return true;\n}};\n\nfunction Parser () {\n  this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain(args) {\n    if (!args[1]) {\n        console.log('Usage: '+args[0]+' FILE');\n        process.exit(1);\n    }\n    var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n    return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n  exports.main(process.argv.slice(1));\n}\n}","// Generated by CoffeeScript 1.10.0\n(function() {\n  var CoffeeScript, Module, binary, child_process, ext, findExtension, fork, helpers, i, len, loadFile, path, ref;\n\n  CoffeeScript = require('./coffee-script');\n\n  child_process = require('child_process');\n\n  helpers = require('./helpers');\n\n  path = require('path');\n\n  loadFile = function(module, filename) {\n    var answer;\n    answer = CoffeeScript._compileFile(filename, false);\n    return module._compile(answer, filename);\n  };\n\n  if (require.extensions) {\n    ref = CoffeeScript.FILE_EXTENSIONS;\n    for (i = 0, len = ref.length; i < len; i++) {\n      ext = ref[i];\n      require.extensions[ext] = loadFile;\n    }\n    Module = require('module');\n    findExtension = function(filename) {\n      var curExtension, extensions;\n      extensions = path.basename(filename).split('.');\n      if (extensions[0] === '') {\n        extensions.shift();\n      }\n      while (extensions.shift()) {\n        curExtension = '.' + extensions.join('.');\n        if (Module._extensions[curExtension]) {\n          return curExtension;\n        }\n      }\n      return '.js';\n    };\n    Module.prototype.load = function(filename) {\n      var extension;\n      this.filename = filename;\n      this.paths = Module._nodeModulePaths(path.dirname(filename));\n      extension = findExtension(filename);\n      Module._extensions[extension](this, filename);\n      return this.loaded = true;\n    };\n  }\n\n  if (child_process) {\n    fork = child_process.fork;\n    binary = require.resolve('../../bin/coffee');\n    child_process.fork = function(path, args, options) {\n      if (helpers.isCoffee(path)) {\n        if (!Array.isArray(args)) {\n          options = args || {};\n          args = [];\n        }\n        args = [path].concat(args);\n        path = binary;\n      }\n      return fork(path, args, options);\n    };\n  }\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n  var BALANCED_PAIRS, CALL_CLOSERS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, generate, k, left, len, ref, rite,\n    indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n    slice = [].slice;\n\n  generate = function(tag, value, origin) {\n    var tok;\n    tok = [tag, value];\n    tok.generated = true;\n    if (origin) {\n      tok.origin = origin;\n    }\n    return tok;\n  };\n\n  exports.Rewriter = (function() {\n    function Rewriter() {}\n\n    Rewriter.prototype.rewrite = function(tokens1) {\n      this.tokens = tokens1;\n      this.removeLeadingNewlines();\n      this.closeOpenCalls();\n      this.closeOpenIndexes();\n      this.normalizeLines();\n      this.tagPostfixConditionals();\n      this.addImplicitBracesAndParens();\n      this.addLocationDataToGeneratedTokens();\n      return this.tokens;\n    };\n\n    Rewriter.prototype.scanTokens = function(block) {\n      var i, token, tokens;\n      tokens = this.tokens;\n      i = 0;\n      while (token = tokens[i]) {\n        i += block.call(this, token, i, tokens);\n      }\n      return true;\n    };\n\n    Rewriter.prototype.detectEnd = function(i, condition, action) {\n      var levels, ref, ref1, token, tokens;\n      tokens = this.tokens;\n      levels = 0;\n      while (token = tokens[i]) {\n        if (levels === 0 && condition.call(this, token, i)) {\n          return action.call(this, token, i);\n        }\n        if (!token || levels < 0) {\n          return action.call(this, token, i - 1);\n        }\n        if (ref = token[0], indexOf.call(EXPRESSION_START, ref) >= 0) {\n          levels += 1;\n        } else if (ref1 = token[0], indexOf.call(EXPRESSION_END, ref1) >= 0) {\n          levels -= 1;\n        }\n        i += 1;\n      }\n      return i - 1;\n    };\n\n    Rewriter.prototype.removeLeadingNewlines = function() {\n      var i, k, len, ref, tag;\n      ref = this.tokens;\n      for (i = k = 0, len = ref.length; k < len; i = ++k) {\n        tag = ref[i][0];\n        if (tag !== 'TERMINATOR') {\n          break;\n        }\n      }\n      if (i) {\n        return this.tokens.splice(0, i);\n      }\n    };\n\n    Rewriter.prototype.closeOpenCalls = function() {\n      var action, condition;\n      condition = function(token, i) {\n        var ref;\n        return ((ref = token[0]) === ')' || ref === 'CALL_END') || token[0] === 'OUTDENT' && this.tag(i - 1) === ')';\n      };\n      action = function(token, i) {\n        return this.tokens[token[0] === 'OUTDENT' ? i - 1 : i][0] = 'CALL_END';\n      };\n      return this.scanTokens(function(token, i) {\n        if (token[0] === 'CALL_START') {\n          this.detectEnd(i + 1, condition, action);\n        }\n        return 1;\n      });\n    };\n\n    Rewriter.prototype.closeOpenIndexes = function() {\n      var action, condition;\n      condition = function(token, i) {\n        var ref;\n        return (ref = token[0]) === ']' || ref === 'INDEX_END';\n      };\n      action = function(token, i) {\n        return token[0] = 'INDEX_END';\n      };\n      return this.scanTokens(function(token, i) {\n        if (token[0] === 'INDEX_START') {\n          this.detectEnd(i + 1, condition, action);\n        }\n        return 1;\n      });\n    };\n\n    Rewriter.prototype.indexOfTag = function() {\n      var fuzz, i, j, k, pattern, ref, ref1;\n      i = arguments[0], pattern = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n      fuzz = 0;\n      for (j = k = 0, ref = pattern.length; 0 <= ref ? k < ref : k > ref; j = 0 <= ref ? ++k : --k) {\n        while (this.tag(i + j + fuzz) === 'HERECOMMENT') {\n          fuzz += 2;\n        }\n        if (pattern[j] == null) {\n          continue;\n        }\n        if (typeof pattern[j] === 'string') {\n          pattern[j] = [pattern[j]];\n        }\n        if (ref1 = this.tag(i + j + fuzz), indexOf.call(pattern[j], ref1) < 0) {\n          return -1;\n        }\n      }\n      return i + j + fuzz - 1;\n    };\n\n    Rewriter.prototype.looksObjectish = function(j) {\n      var end, index;\n      if (this.indexOfTag(j, '@', null, ':') > -1 || this.indexOfTag(j, null, ':') > -1) {\n        return true;\n      }\n      index = this.indexOfTag(j, EXPRESSION_START);\n      if (index > -1) {\n        end = null;\n        this.detectEnd(index + 1, (function(token) {\n          var ref;\n          return ref = token[0], indexOf.call(EXPRESSION_END, ref) >= 0;\n        }), (function(token, i) {\n          return end = i;\n        }));\n        if (this.tag(end + 1) === ':') {\n          return true;\n        }\n      }\n      return false;\n    };\n\n    Rewriter.prototype.findTagsBackwards = function(i, tags) {\n      var backStack, ref, ref1, ref2, ref3, ref4, ref5;\n      backStack = [];\n      while (i >= 0 && (backStack.length || (ref2 = this.tag(i), indexOf.call(tags, ref2) < 0) && ((ref3 = this.tag(i), indexOf.call(EXPRESSION_START, ref3) < 0) || this.tokens[i].generated) && (ref4 = this.tag(i), indexOf.call(LINEBREAKS, ref4) < 0))) {\n        if (ref = this.tag(i), indexOf.call(EXPRESSION_END, ref) >= 0) {\n          backStack.push(this.tag(i));\n        }\n        if ((ref1 = this.tag(i), indexOf.call(EXPRESSION_START, ref1) >= 0) && backStack.length) {\n          backStack.pop();\n        }\n        i -= 1;\n      }\n      return ref5 = this.tag(i), indexOf.call(tags, ref5) >= 0;\n    };\n\n    Rewriter.prototype.addImplicitBracesAndParens = function() {\n      var stack, start;\n      stack = [];\n      start = null;\n      return this.scanTokens(function(token, i, tokens) {\n        var endImplicitCall, endImplicitObject, forward, inImplicit, inImplicitCall, inImplicitControl, inImplicitObject, newLine, nextTag, offset, prevTag, prevToken, ref, ref1, ref2, ref3, ref4, ref5, s, sameLine, stackIdx, stackTag, stackTop, startIdx, startImplicitCall, startImplicitObject, startsLine, tag;\n        tag = token[0];\n        prevTag = (prevToken = i > 0 ? tokens[i - 1] : [])[0];\n        nextTag = (i < tokens.length - 1 ? tokens[i + 1] : [])[0];\n        stackTop = function() {\n          return stack[stack.length - 1];\n        };\n        startIdx = i;\n        forward = function(n) {\n          return i - startIdx + n;\n        };\n        inImplicit = function() {\n          var ref, ref1;\n          return (ref = stackTop()) != null ? (ref1 = ref[2]) != null ? ref1.ours : void 0 : void 0;\n        };\n        inImplicitCall = function() {\n          var ref;\n          return inImplicit() && ((ref = stackTop()) != null ? ref[0] : void 0) === '(';\n        };\n        inImplicitObject = function() {\n          var ref;\n          return inImplicit() && ((ref = stackTop()) != null ? ref[0] : void 0) === '{';\n        };\n        inImplicitControl = function() {\n          var ref;\n          return inImplicit && ((ref = stackTop()) != null ? ref[0] : void 0) === 'CONTROL';\n        };\n        startImplicitCall = function(j) {\n          var idx;\n          idx = j != null ? j : i;\n          stack.push([\n            '(', idx, {\n              ours: true\n            }\n          ]);\n          tokens.splice(idx, 0, generate('CALL_START', '('));\n          if (j == null) {\n            return i += 1;\n          }\n        };\n        endImplicitCall = function() {\n          stack.pop();\n          tokens.splice(i, 0, generate('CALL_END', ')', ['', 'end of input', token[2]]));\n          return i += 1;\n        };\n        startImplicitObject = function(j, startsLine) {\n          var idx, val;\n          if (startsLine == null) {\n            startsLine = true;\n          }\n          idx = j != null ? j : i;\n          stack.push([\n            '{', idx, {\n              sameLine: true,\n              startsLine: startsLine,\n              ours: true\n            }\n          ]);\n          val = new String('{');\n          val.generated = true;\n          tokens.splice(idx, 0, generate('{', val, token));\n          if (j == null) {\n            return i += 1;\n          }\n        };\n        endImplicitObject = function(j) {\n          j = j != null ? j : i;\n          stack.pop();\n          tokens.splice(j, 0, generate('}', '}', token));\n          return i += 1;\n        };\n        if (inImplicitCall() && (tag === 'IF' || tag === 'TRY' || tag === 'FINALLY' || tag === 'CATCH' || tag === 'CLASS' || tag === 'SWITCH')) {\n          stack.push([\n            'CONTROL', i, {\n              ours: true\n            }\n          ]);\n          return forward(1);\n        }\n        if (tag === 'INDENT' && inImplicit()) {\n          if (prevTag !== '=>' && prevTag !== '->' && prevTag !== '[' && prevTag !== '(' && prevTag !== ',' && prevTag !== '{' && prevTag !== 'TRY' && prevTag !== 'ELSE' && prevTag !== '=') {\n            while (inImplicitCall()) {\n              endImplicitCall();\n            }\n          }\n          if (inImplicitControl()) {\n            stack.pop();\n          }\n          stack.push([tag, i]);\n          return forward(1);\n        }\n        if (indexOf.call(EXPRESSION_START, tag) >= 0) {\n          stack.push([tag, i]);\n          return forward(1);\n        }\n        if (indexOf.call(EXPRESSION_END, tag) >= 0) {\n          while (inImplicit()) {\n            if (inImplicitCall()) {\n              endImplicitCall();\n            } else if (inImplicitObject()) {\n              endImplicitObject();\n            } else {\n              stack.pop();\n            }\n          }\n          start = stack.pop();\n        }\n        if ((indexOf.call(IMPLICIT_FUNC, tag) >= 0 && token.spaced || tag === '?' && i > 0 && !tokens[i - 1].spaced) && (indexOf.call(IMPLICIT_CALL, nextTag) >= 0 || indexOf.call(IMPLICIT_UNSPACED_CALL, nextTag) >= 0 && !((ref = tokens[i + 1]) != null ? ref.spaced : void 0) && !((ref1 = tokens[i + 1]) != null ? ref1.newLine : void 0))) {\n          if (tag === '?') {\n            tag = token[0] = 'FUNC_EXIST';\n          }\n          startImplicitCall(i + 1);\n          return forward(2);\n        }\n        if (indexOf.call(IMPLICIT_FUNC, tag) >= 0 && this.indexOfTag(i + 1, 'INDENT') > -1 && this.looksObjectish(i + 2) && !this.findTagsBackwards(i, ['CLASS', 'EXTENDS', 'IF', 'CATCH', 'SWITCH', 'LEADING_WHEN', 'FOR', 'WHILE', 'UNTIL'])) {\n          startImplicitCall(i + 1);\n          stack.push(['INDENT', i + 2]);\n          return forward(3);\n        }\n        if (tag === ':') {\n          s = (function() {\n            var ref2;\n            switch (false) {\n              case ref2 = this.tag(i - 1), indexOf.call(EXPRESSION_END, ref2) < 0:\n                return start[1];\n              case this.tag(i - 2) !== '@':\n                return i - 2;\n              default:\n                return i - 1;\n            }\n          }).call(this);\n          while (this.tag(s - 2) === 'HERECOMMENT') {\n            s -= 2;\n          }\n          this.insideForDeclaration = nextTag === 'FOR';\n          startsLine = s === 0 || (ref2 = this.tag(s - 1), indexOf.call(LINEBREAKS, ref2) >= 0) || tokens[s - 1].newLine;\n          if (stackTop()) {\n            ref3 = stackTop(), stackTag = ref3[0], stackIdx = ref3[1];\n            if ((stackTag === '{' || stackTag === 'INDENT' && this.tag(stackIdx - 1) === '{') && (startsLine || this.tag(s - 1) === ',' || this.tag(s - 1) === '{')) {\n              return forward(1);\n            }\n          }\n          startImplicitObject(s, !!startsLine);\n          return forward(2);\n        }\n        if (inImplicitObject() && indexOf.call(LINEBREAKS, tag) >= 0) {\n          stackTop()[2].sameLine = false;\n        }\n        newLine = prevTag === 'OUTDENT' || prevToken.newLine;\n        if (indexOf.call(IMPLICIT_END, tag) >= 0 || indexOf.call(CALL_CLOSERS, tag) >= 0 && newLine) {\n          while (inImplicit()) {\n            ref4 = stackTop(), stackTag = ref4[0], stackIdx = ref4[1], (ref5 = ref4[2], sameLine = ref5.sameLine, startsLine = ref5.startsLine);\n            if (inImplicitCall() && prevTag !== ',') {\n              endImplicitCall();\n            } else if (inImplicitObject() && !this.insideForDeclaration && sameLine && tag !== 'TERMINATOR' && prevTag !== ':') {\n              endImplicitObject();\n            } else if (inImplicitObject() && tag === 'TERMINATOR' && prevTag !== ',' && !(startsLine && this.looksObjectish(i + 1))) {\n              if (nextTag === 'HERECOMMENT') {\n                return forward(1);\n              }\n              endImplicitObject();\n            } else {\n              break;\n            }\n          }\n        }\n        if (tag === ',' && !this.looksObjectish(i + 1) && inImplicitObject() && !this.insideForDeclaration && (nextTag !== 'TERMINATOR' || !this.looksObjectish(i + 2))) {\n          offset = nextTag === 'OUTDENT' ? 1 : 0;\n          while (inImplicitObject()) {\n            endImplicitObject(i + offset);\n          }\n        }\n        return forward(1);\n      });\n    };\n\n    Rewriter.prototype.addLocationDataToGeneratedTokens = function() {\n      return this.scanTokens(function(token, i, tokens) {\n        var column, line, nextLocation, prevLocation, ref, ref1;\n        if (token[2]) {\n          return 1;\n        }\n        if (!(token.generated || token.explicit)) {\n          return 1;\n        }\n        if (token[0] === '{' && (nextLocation = (ref = tokens[i + 1]) != null ? ref[2] : void 0)) {\n          line = nextLocation.first_line, column = nextLocation.first_column;\n        } else if (prevLocation = (ref1 = tokens[i - 1]) != null ? ref1[2] : void 0) {\n          line = prevLocation.last_line, column = prevLocation.last_column;\n        } else {\n          line = column = 0;\n        }\n        token[2] = {\n          first_line: line,\n          first_column: column,\n          last_line: line,\n          last_column: column\n        };\n        return 1;\n      });\n    };\n\n    Rewriter.prototype.normalizeLines = function() {\n      var action, condition, indent, outdent, starter;\n      starter = indent = outdent = null;\n      condition = function(token, i) {\n        var ref, ref1, ref2, ref3;\n        return token[1] !== ';' && (ref = token[0], indexOf.call(SINGLE_CLOSERS, ref) >= 0) && !(token[0] === 'TERMINATOR' && (ref1 = this.tag(i + 1), indexOf.call(EXPRESSION_CLOSE, ref1) >= 0)) && !(token[0] === 'ELSE' && starter !== 'THEN') && !(((ref2 = token[0]) === 'CATCH' || ref2 === 'FINALLY') && (starter === '->' || starter === '=>')) || (ref3 = token[0], indexOf.call(CALL_CLOSERS, ref3) >= 0) && this.tokens[i - 1].newLine;\n      };\n      action = function(token, i) {\n        return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent);\n      };\n      return this.scanTokens(function(token, i, tokens) {\n        var j, k, ref, ref1, ref2, tag;\n        tag = token[0];\n        if (tag === 'TERMINATOR') {\n          if (this.tag(i + 1) === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') {\n            tokens.splice.apply(tokens, [i, 1].concat(slice.call(this.indentation())));\n            return 1;\n          }\n          if (ref = this.tag(i + 1), indexOf.call(EXPRESSION_CLOSE, ref) >= 0) {\n            tokens.splice(i, 1);\n            return 0;\n          }\n        }\n        if (tag === 'CATCH') {\n          for (j = k = 1; k <= 2; j = ++k) {\n            if (!((ref1 = this.tag(i + j)) === 'OUTDENT' || ref1 === 'TERMINATOR' || ref1 === 'FINALLY')) {\n              continue;\n            }\n            tokens.splice.apply(tokens, [i + j, 0].concat(slice.call(this.indentation())));\n            return 2 + j;\n          }\n        }\n        if (indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF')) {\n          starter = tag;\n          ref2 = this.indentation(tokens[i]), indent = ref2[0], outdent = ref2[1];\n          if (starter === 'THEN') {\n            indent.fromThen = true;\n          }\n          tokens.splice(i + 1, 0, indent);\n          this.detectEnd(i + 2, condition, action);\n          if (tag === 'THEN') {\n            tokens.splice(i, 1);\n          }\n          return 1;\n        }\n        return 1;\n      });\n    };\n\n    Rewriter.prototype.tagPostfixConditionals = function() {\n      var action, condition, original;\n      original = null;\n      condition = function(token, i) {\n        var prevTag, tag;\n        tag = token[0];\n        prevTag = this.tokens[i - 1][0];\n        return tag === 'TERMINATOR' || (tag === 'INDENT' && indexOf.call(SINGLE_LINERS, prevTag) < 0);\n      };\n      action = function(token, i) {\n        if (token[0] !== 'INDENT' || (token.generated && !token.fromThen)) {\n          return original[0] = 'POST_' + original[0];\n        }\n      };\n      return this.scanTokens(function(token, i) {\n        if (token[0] !== 'IF') {\n          return 1;\n        }\n        original = token;\n        this.detectEnd(i + 1, condition, action);\n        return 1;\n      });\n    };\n\n    Rewriter.prototype.indentation = function(origin) {\n      var indent, outdent;\n      indent = ['INDENT', 2];\n      outdent = ['OUTDENT', 2];\n      if (origin) {\n        indent.generated = outdent.generated = true;\n        indent.origin = outdent.origin = origin;\n      } else {\n        indent.explicit = outdent.explicit = true;\n      }\n      return [indent, outdent];\n    };\n\n    Rewriter.prototype.generate = generate;\n\n    Rewriter.prototype.tag = function(i) {\n      var ref;\n      return (ref = this.tokens[i]) != null ? ref[0] : void 0;\n    };\n\n    return Rewriter;\n\n  })();\n\n  BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'], ['CALL_START', 'CALL_END'], ['PARAM_START', 'PARAM_END'], ['INDEX_START', 'INDEX_END'], ['STRING_START', 'STRING_END'], ['REGEX_START', 'REGEX_END']];\n\n  exports.INVERSES = INVERSES = {};\n\n  EXPRESSION_START = [];\n\n  EXPRESSION_END = [];\n\n  for (k = 0, len = BALANCED_PAIRS.length; k < len; k++) {\n    ref = BALANCED_PAIRS[k], left = ref[0], rite = ref[1];\n    EXPRESSION_START.push(INVERSES[rite] = left);\n    EXPRESSION_END.push(INVERSES[left] = rite);\n  }\n\n  EXPRESSION_CLOSE = ['CATCH', 'THEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END);\n\n  IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'];\n\n  IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'STRING_START', 'JS', 'REGEX', 'REGEX_START', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'NULL', 'UNDEFINED', 'UNARY', 'YIELD', 'UNARY_MATH', 'SUPER', 'THROW', '@', '->', '=>', '[', '(', '{', '--', '++'];\n\n  IMPLICIT_UNSPACED_CALL = ['+', '-'];\n\n  IMPLICIT_END = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR'];\n\n  SINGLE_LINERS = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN'];\n\n  SINGLE_CLOSERS = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN'];\n\n  LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT'];\n\n  CALL_CLOSERS = ['.', '?.', '::', '?::'];\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n  var Scope,\n    indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n  exports.Scope = Scope = (function() {\n    function Scope(parent, expressions, method, referencedVars) {\n      var ref, ref1;\n      this.parent = parent;\n      this.expressions = expressions;\n      this.method = method;\n      this.referencedVars = referencedVars;\n      this.variables = [\n        {\n          name: 'arguments',\n          type: 'arguments'\n        }\n      ];\n      this.positions = {};\n      if (!this.parent) {\n        this.utilities = {};\n      }\n      this.root = (ref = (ref1 = this.parent) != null ? ref1.root : void 0) != null ? ref : this;\n    }\n\n    Scope.prototype.add = function(name, type, immediate) {\n      if (this.shared && !immediate) {\n        return this.parent.add(name, type, immediate);\n      }\n      if (Object.prototype.hasOwnProperty.call(this.positions, name)) {\n        return this.variables[this.positions[name]].type = type;\n      } else {\n        return this.positions[name] = this.variables.push({\n          name: name,\n          type: type\n        }) - 1;\n      }\n    };\n\n    Scope.prototype.namedMethod = function() {\n      var ref;\n      if (((ref = this.method) != null ? ref.name : void 0) || !this.parent) {\n        return this.method;\n      }\n      return this.parent.namedMethod();\n    };\n\n    Scope.prototype.find = function(name) {\n      if (this.check(name)) {\n        return true;\n      }\n      this.add(name, 'var');\n      return false;\n    };\n\n    Scope.prototype.parameter = function(name) {\n      if (this.shared && this.parent.check(name, true)) {\n        return;\n      }\n      return this.add(name, 'param');\n    };\n\n    Scope.prototype.check = function(name) {\n      var ref;\n      return !!(this.type(name) || ((ref = this.parent) != null ? ref.check(name) : void 0));\n    };\n\n    Scope.prototype.temporary = function(name, index, single) {\n      if (single == null) {\n        single = false;\n      }\n      if (single) {\n        return (index + parseInt(name, 36)).toString(36).replace(/\\d/g, 'a');\n      } else {\n        return name + (index || '');\n      }\n    };\n\n    Scope.prototype.type = function(name) {\n      var i, len, ref, v;\n      ref = this.variables;\n      for (i = 0, len = ref.length; i < len; i++) {\n        v = ref[i];\n        if (v.name === name) {\n          return v.type;\n        }\n      }\n      return null;\n    };\n\n    Scope.prototype.freeVariable = function(name, options) {\n      var index, ref, temp;\n      if (options == null) {\n        options = {};\n      }\n      index = 0;\n      while (true) {\n        temp = this.temporary(name, index, options.single);\n        if (!(this.check(temp) || indexOf.call(this.root.referencedVars, temp) >= 0)) {\n          break;\n        }\n        index++;\n      }\n      if ((ref = options.reserve) != null ? ref : true) {\n        this.add(temp, 'var', true);\n      }\n      return temp;\n    };\n\n    Scope.prototype.assign = function(name, value) {\n      this.add(name, {\n        value: value,\n        assigned: true\n      }, true);\n      return this.hasAssignments = true;\n    };\n\n    Scope.prototype.hasDeclarations = function() {\n      return !!this.declaredVariables().length;\n    };\n\n    Scope.prototype.declaredVariables = function() {\n      var v;\n      return ((function() {\n        var i, len, ref, results;\n        ref = this.variables;\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n          v = ref[i];\n          if (v.type === 'var') {\n            results.push(v.name);\n          }\n        }\n        return results;\n      }).call(this)).sort();\n    };\n\n    Scope.prototype.assignedVariables = function() {\n      var i, len, ref, results, v;\n      ref = this.variables;\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        v = ref[i];\n        if (v.type.assigned) {\n          results.push(v.name + \" = \" + v.type.value);\n        }\n      }\n      return results;\n    };\n\n    return Scope;\n\n  })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n  var LineMap, SourceMap;\n\n  LineMap = (function() {\n    function LineMap(line1) {\n      this.line = line1;\n      this.columns = [];\n    }\n\n    LineMap.prototype.add = function(column, arg, options) {\n      var sourceColumn, sourceLine;\n      sourceLine = arg[0], sourceColumn = arg[1];\n      if (options == null) {\n        options = {};\n      }\n      if (this.columns[column] && options.noReplace) {\n        return;\n      }\n      return this.columns[column] = {\n        line: this.line,\n        column: column,\n        sourceLine: sourceLine,\n        sourceColumn: sourceColumn\n      };\n    };\n\n    LineMap.prototype.sourceLocation = function(column) {\n      var mapping;\n      while (!((mapping = this.columns[column]) || (column <= 0))) {\n        column--;\n      }\n      return mapping && [mapping.sourceLine, mapping.sourceColumn];\n    };\n\n    return LineMap;\n\n  })();\n\n  SourceMap = (function() {\n    var BASE64_CHARS, VLQ_CONTINUATION_BIT, VLQ_SHIFT, VLQ_VALUE_MASK;\n\n    function SourceMap() {\n      this.lines = [];\n    }\n\n    SourceMap.prototype.add = function(sourceLocation, generatedLocation, options) {\n      var base, column, line, lineMap;\n      if (options == null) {\n        options = {};\n      }\n      line = generatedLocation[0], column = generatedLocation[1];\n      lineMap = ((base = this.lines)[line] || (base[line] = new LineMap(line)));\n      return lineMap.add(column, sourceLocation, options);\n    };\n\n    SourceMap.prototype.sourceLocation = function(arg) {\n      var column, line, lineMap;\n      line = arg[0], column = arg[1];\n      while (!((lineMap = this.lines[line]) || (line <= 0))) {\n        line--;\n      }\n      return lineMap && lineMap.sourceLocation(column);\n    };\n\n    SourceMap.prototype.generate = function(options, code) {\n      var buffer, i, j, lastColumn, lastSourceColumn, lastSourceLine, len, len1, lineMap, lineNumber, mapping, needComma, ref, ref1, v3, writingline;\n      if (options == null) {\n        options = {};\n      }\n      if (code == null) {\n        code = null;\n      }\n      writingline = 0;\n      lastColumn = 0;\n      lastSourceLine = 0;\n      lastSourceColumn = 0;\n      needComma = false;\n      buffer = \"\";\n      ref = this.lines;\n      for (lineNumber = i = 0, len = ref.length; i < len; lineNumber = ++i) {\n        lineMap = ref[lineNumber];\n        if (lineMap) {\n          ref1 = lineMap.columns;\n          for (j = 0, len1 = ref1.length; j < len1; j++) {\n            mapping = ref1[j];\n            if (!(mapping)) {\n              continue;\n            }\n            while (writingline < mapping.line) {\n              lastColumn = 0;\n              needComma = false;\n              buffer += \";\";\n              writingline++;\n            }\n            if (needComma) {\n              buffer += \",\";\n              needComma = false;\n            }\n            buffer += this.encodeVlq(mapping.column - lastColumn);\n            lastColumn = mapping.column;\n            buffer += this.encodeVlq(0);\n            buffer += this.encodeVlq(mapping.sourceLine - lastSourceLine);\n            lastSourceLine = mapping.sourceLine;\n            buffer += this.encodeVlq(mapping.sourceColumn - lastSourceColumn);\n            lastSourceColumn = mapping.sourceColumn;\n            needComma = true;\n          }\n        }\n      }\n      v3 = {\n        version: 3,\n        file: options.generatedFile || '',\n        sourceRoot: options.sourceRoot || '',\n        sources: options.sourceFiles || [''],\n        names: [],\n        mappings: buffer\n      };\n      if (options.inline) {\n        v3.sourcesContent = [code];\n      }\n      return JSON.stringify(v3, null, 2);\n    };\n\n    VLQ_SHIFT = 5;\n\n    VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;\n\n    VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;\n\n    SourceMap.prototype.encodeVlq = function(value) {\n      var answer, nextChunk, signBit, valueToEncode;\n      answer = '';\n      signBit = value < 0 ? 1 : 0;\n      valueToEncode = (Math.abs(value) << 1) + signBit;\n      while (valueToEncode || !answer) {\n        nextChunk = valueToEncode & VLQ_VALUE_MASK;\n        valueToEncode = valueToEncode >> VLQ_SHIFT;\n        if (valueToEncode) {\n          nextChunk |= VLQ_CONTINUATION_BIT;\n        }\n        answer += this.encodeBase64(nextChunk);\n      }\n      return answer;\n    };\n\n    BASE64_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n    SourceMap.prototype.encodeBase64 = function(value) {\n      return BASE64_CHARS[value] || (function() {\n        throw new Error(\"Cannot Base64 encode value: \" + value);\n      })();\n    };\n\n    return SourceMap;\n\n  })();\n\n  module.exports = SourceMap;\n\n}).call(this);\n","(function() {\n  var CoffeeScript, indent, precompile, preprocess;\n\n  CoffeeScript = require(\"coffee-script\");\n\n  preprocess = require(\"./preprocessor\").preprocess;\n\n  indent = require(\"./util\").indent;\n\n  exports.precompile = precompile = function(source) {\n    var script;\n    script = CoffeeScript.compile(preprocess(source), {\n      noWrap: true\n    });\n    return \"function(__obj) {\\n  if (!__obj) __obj = {};\\n  var __out = [], __capture = function(callback) {\\n    var out = __out, result;\\n    __out = [];\\n    callback.call(this);\\n    result = __out.join('');\\n    __out = out;\\n    return __safe(result);\\n  }, __sanitize = function(value) {\\n    if (value && value.ecoSafe) {\\n      return value;\\n    } else if (typeof value !== 'undefined' && value != null) {\\n      return __escape(value);\\n    } else {\\n      return '';\\n    }\\n  }, __safe, __objSafe = __obj.safe, __escape = __obj.escape;\\n  __safe = __obj.safe = function(value) {\\n    if (value && value.ecoSafe) {\\n      return value;\\n    } else {\\n      if (!(typeof value !== 'undefined' && value != null)) value = '';\\n      var result = new String(value);\\n      result.ecoSafe = true;\\n      return result;\\n    }\\n  };\\n  if (!__escape) {\\n    __escape = __obj.escape = function(value) {\\n      return ('' + value)\\n        .replace(/&/g, '&amp;')\\n        .replace(/</g, '&lt;')\\n        .replace(/>/g, '&gt;')\\n        .replace(/\\x22/g, '&quot;');\\n    };\\n  }\\n  (function() {\\n\" + (indent(script, 4)) + \"\\n  }).call(__obj);\\n  __obj.safe = __objSafe, __obj.escape = __escape;\\n  return __out.join('');\\n}\";\n  };\n\n  exports.compile = function(source) {\n    return new Function(\"return \" + (precompile(source)))();\n  };\n\n}).call(this);\n","(function() {\n  var compile, eco, precompile, preprocess, _ref;\n\n  _ref = require(\"./compiler\"), compile = _ref.compile, precompile = _ref.precompile;\n\n  preprocess = require(\"./preprocessor\").preprocess;\n\n  module.exports = eco = function(source) {\n    var _base, _ref2;\n    if (eco.cache) {\n      return (_ref2 = (_base = eco.cache)[source]) != null ? _ref2 : _base[source] = compile(source);\n    } else {\n      return compile(source);\n    }\n  };\n\n  eco.cache = {};\n\n  eco.preprocess = preprocess;\n\n  eco.precompile = precompile;\n\n  eco.compile = compile;\n\n  eco.render = function(source, data) {\n    return (eco(source))(data);\n  };\n\n  if (require.extensions) {\n    require.extensions[\".eco\"] = function(module, filename) {\n      var source;\n      source = require(\"fs\").readFileSync(filename, \"utf-8\");\n      return module._compile(\"module.exports = \" + (precompile(source)), filename);\n    };\n  }\n\n}).call(this);\n","(function() {\n  var Preprocessor, Scanner, util;\n\n  Scanner = require(\"./scanner\");\n\n  util = require(\"./util\");\n\n  module.exports = Preprocessor = (function() {\n\n    Preprocessor.preprocess = function(source) {\n      var preprocessor;\n      preprocessor = new Preprocessor(source);\n      return preprocessor.preprocess();\n    };\n\n    function Preprocessor(source) {\n      this.scanner = new Scanner(source);\n      this.output = \"\";\n      this.level = 0;\n      this.options = {};\n      this.captures = [];\n    }\n\n    Preprocessor.prototype.preprocess = function() {\n      var _this = this;\n      while (!this.scanner.done) {\n        this.scanner.scan(function(token) {\n          return _this[token[0]].apply(_this, token.slice(1));\n        });\n      }\n      return this.output;\n    };\n\n    Preprocessor.prototype.record = function(line) {\n      this.output += util.repeat(\"  \", this.level);\n      return this.output += line + \"\\n\";\n    };\n\n    Preprocessor.prototype.printString = function(string) {\n      if (string.length) {\n        return this.record(\"__out.push \" + (util.inspectString(string)));\n      }\n    };\n\n    Preprocessor.prototype.beginCode = function(options) {\n      return this.options = options;\n    };\n\n    Preprocessor.prototype.recordCode = function(code) {\n      if (code !== \"end\") {\n        if (this.options.print) {\n          if (this.options.safe) {\n            return this.record(\"__out.push \" + code);\n          } else {\n            return this.record(\"__out.push __sanitize \" + code);\n          }\n        } else {\n          return this.record(code);\n        }\n      }\n    };\n\n    Preprocessor.prototype.indent = function(capture) {\n      this.level++;\n      if (capture) {\n        this.record(\"__capture \" + capture);\n        this.captures.unshift(this.level);\n        return this.indent();\n      }\n    };\n\n    Preprocessor.prototype.dedent = function() {\n      this.level--;\n      if (this.level < 0) this.fail(\"unexpected dedent\");\n      if (this.captures[0] === this.level) {\n        this.captures.shift();\n        return this.dedent();\n      }\n    };\n\n    Preprocessor.prototype.fail = function(message) {\n      throw \"Parse error on line \" + this.scanner.lineNo + \": \" + message;\n    };\n\n    return Preprocessor;\n\n  })();\n\n}).call(this);\n","(function() {\n  var Scanner, StringScanner, trim;\n\n  StringScanner = require(\"strscan\").StringScanner;\n\n  trim = require(\"./util\").trim;\n\n  module.exports = Scanner = (function() {\n\n    Scanner.modePatterns = {\n      data: /(.*?)(<%%|<%\\s*(\\#)|<%(([=-])?)|\\n|$)/,\n      code: /(.*?)((((:|(->|=>))\\s*))?%>|\\n|$)/,\n      comment: /(.*?)(%>|\\n|$)/\n    };\n\n    Scanner.dedentablePattern = /^(end|when|else|catch|finally)(?:\\W|$)/;\n\n    Scanner.scan = function(source) {\n      var scanner, tokens;\n      tokens = [];\n      scanner = new Scanner(source);\n      while (!scanner.done) {\n        scanner.scan(function(token) {\n          return tokens.push(token);\n        });\n      }\n      return tokens;\n    };\n\n    function Scanner(source) {\n      this.source = source.replace(/\\r\\n?/g, \"\\n\");\n      this.scanner = new StringScanner(this.source);\n      this.mode = \"data\";\n      this.buffer = \"\";\n      this.lineNo = 1;\n      this.done = false;\n    }\n\n    Scanner.prototype.scan = function(callback) {\n      if (this.done) {\n        return callback();\n      } else if (this.scanner.hasTerminated()) {\n        this.done = true;\n        switch (this.mode) {\n          case \"data\":\n            return callback([\"printString\", this.flush()]);\n          case \"code\":\n            return callback([\"fail\", \"unexpected end of template\"]);\n        }\n      } else {\n        this.advance();\n        switch (this.mode) {\n          case \"data\":\n            return this.scanData(callback);\n          case \"code\":\n            return this.scanCode(callback);\n          case \"comment\":\n            return this.scanComment(callback);\n        }\n      }\n    };\n\n    Scanner.prototype.advance = function() {\n      this.scanner.scanUntil(Scanner.modePatterns[this.mode]);\n      this.buffer += this.scanner.getCapture(0);\n      this.tail = this.scanner.getCapture(1);\n      this.comment = this.scanner.getCapture(2);\n      this.directive = this.scanner.getCapture(4);\n      return this.arrow = this.scanner.getCapture(5);\n    };\n\n    Scanner.prototype.scanData = function(callback) {\n      if (this.tail === \"<%%\") {\n        this.buffer += \"<%\";\n        return this.scan(callback);\n      } else if (this.tail === \"\\n\") {\n        this.buffer += this.tail;\n        this.lineNo++;\n        return this.scan(callback);\n      } else if (this.tail) {\n        callback([\"printString\", this.flush()]);\n        if (this.comment) {\n          return this.mode = \"comment\";\n        } else {\n          this.mode = \"code\";\n          return callback([\n            \"beginCode\", {\n              print: this.directive != null,\n              safe: this.directive === \"-\"\n            }\n          ]);\n        }\n      }\n    };\n\n    Scanner.prototype.scanCode = function(callback) {\n      var code;\n      if (this.tail === \"\\n\") {\n        return callback([\"fail\", \"unexpected newline in code block\"]);\n      } else if (this.tail) {\n        this.mode = \"data\";\n        code = trim(this.flush());\n        if (this.arrow) code += \" \" + this.arrow;\n        if (this.isDedentable(code)) callback([\"dedent\"]);\n        callback([\"recordCode\", code]);\n        if (this.directive) return callback([\"indent\", this.arrow]);\n      }\n    };\n\n    Scanner.prototype.scanComment = function(callback) {\n      if (this.tail === \"\\n\") {\n        return callback([\"fail\", \"unexpected newline in code block\"]);\n      } else if (this.tail) {\n        this.mode = \"data\";\n        return this.buffer = \"\";\n      }\n    };\n\n    Scanner.prototype.flush = function() {\n      var buffer;\n      buffer = this.buffer;\n      this.buffer = \"\";\n      return buffer;\n    };\n\n    Scanner.prototype.isDedentable = function(code) {\n      return code.match(Scanner.dedentablePattern);\n    };\n\n    return Scanner;\n\n  })();\n\n}).call(this);\n","(function() {\n  var repeat, specialCharacters;\n\n  exports.repeat = repeat = function(string, count) {\n    return Array(count + 1).join(string);\n  };\n\n  exports.indent = function(string, width) {\n    var line, lines, space;\n    space = repeat(\" \", width);\n    lines = (function() {\n      var _i, _len, _ref, _results;\n      _ref = string.split(\"\\n\");\n      _results = [];\n      for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n        line = _ref[_i];\n        _results.push(space + line);\n      }\n      return _results;\n    })();\n    return lines.join(\"\\n\");\n  };\n\n  exports.trim = function(string) {\n    return string.replace(/^\\s+/, \"\").replace(/\\s+$/, \"\");\n  };\n\n  specialCharacters = {\n    '\\\\': '\\\\\\\\',\n    '\\b': '\\\\b',\n    '\\f': '\\\\f',\n    '\\n': '\\\\n',\n    '\\r': '\\\\r',\n    '\\t': '\\\\t'\n  };\n\n  exports.inspectString = function(string) {\n    var contents;\n    contents = string.replace(/[\\x00-\\x1f\\\\]/g, function(character) {\n      var code;\n      if (character in specialCharacters) {\n        return specialCharacters[character];\n      } else {\n        code = character.charCodeAt(0).toString(16);\n        if (code.length === 1) code = \"0\" + code;\n        return \"\\\\u00\" + code;\n      }\n    });\n    return \"'\" + contents.replace(/'/g, '\\\\\\'') + \"'\";\n  };\n\n}).call(this);\n","(function() {\n  var StringScanner;\n  ((typeof exports !== \"undefined\" && exports !== null) ? exports : this).StringScanner = (function() {\n    StringScanner = function(source) {\n      this.source = source.toString();\n      this.reset();\n      return this;\n    };\n    StringScanner.prototype.scan = function(regexp) {\n      var matches;\n      return (matches = regexp.exec(this.getRemainder())) && matches.index === 0 ? this.setState(matches, {\n        head: this.head + matches[0].length,\n        last: this.head\n      }) : this.setState([]);\n    };\n    StringScanner.prototype.scanUntil = function(regexp) {\n      var matches;\n      if (matches = regexp.exec(this.getRemainder())) {\n        this.setState(matches, {\n          head: this.head + matches.index + matches[0].length,\n          last: this.head\n        });\n        return this.source.slice(this.last, this.head);\n      } else {\n        return this.setState([]);\n      }\n    };\n    StringScanner.prototype.scanChar = function() {\n      return this.scan(/[\\s\\S]/);\n    };\n    StringScanner.prototype.skip = function(regexp) {\n      if (this.scan(regexp)) {\n        return this.match.length;\n      }\n    };\n    StringScanner.prototype.skipUntil = function(regexp) {\n      if (this.scanUntil(regexp)) {\n        return this.head - this.last;\n      }\n    };\n    StringScanner.prototype.check = function(regexp) {\n      var matches;\n      return (matches = regexp.exec(this.getRemainder())) && matches.index === 0 ? this.setState(matches) : this.setState([]);\n    };\n    StringScanner.prototype.checkUntil = function(regexp) {\n      var matches;\n      if (matches = regexp.exec(this.getRemainder())) {\n        this.setState(matches);\n        return this.source.slice(this.head, this.head + matches.index + matches[0].length);\n      } else {\n        return this.setState([]);\n      }\n    };\n    StringScanner.prototype.peek = function(length) {\n      return this.source.substr(this.head, (typeof length !== \"undefined\" && length !== null) ? length : 1);\n    };\n    StringScanner.prototype.getSource = function() {\n      return this.source;\n    };\n    StringScanner.prototype.getRemainder = function() {\n      return this.source.slice(this.head);\n    };\n    StringScanner.prototype.getPosition = function() {\n      return this.head;\n    };\n    StringScanner.prototype.hasTerminated = function() {\n      return this.head === this.source.length;\n    };\n    StringScanner.prototype.getPreMatch = function() {\n      if (this.match) {\n        return this.source.slice(0, this.head - this.match.length);\n      }\n    };\n    StringScanner.prototype.getMatch = function() {\n      return this.match;\n    };\n    StringScanner.prototype.getPostMatch = function() {\n      if (this.match) {\n        return this.source.slice(this.head);\n      }\n    };\n    StringScanner.prototype.getCapture = function(index) {\n      return this.captures[index];\n    };\n    StringScanner.prototype.reset = function() {\n      return this.setState([], {\n        head: 0,\n        last: 0\n      });\n    };\n    StringScanner.prototype.terminate = function() {\n      return this.setState([], {\n        head: this.source.length,\n        last: this.head\n      });\n    };\n    StringScanner.prototype.concat = function(string) {\n      return this.source += string;\n    };\n    StringScanner.prototype.unscan = function() {\n      if (this.match) {\n        return this.setState([], {\n          head: this.last,\n          last: 0\n        });\n      } else {\n        throw \"nothing to unscan\";\n      }\n    };\n    StringScanner.prototype.setState = function(matches, values) {\n      var _a, _b;\n      this.head = (typeof (_a = ((typeof values === \"undefined\" || values === null) ? undefined : values.head)) !== \"undefined\" && _a !== null) ? _a : this.head;\n      this.last = (typeof (_b = ((typeof values === \"undefined\" || values === null) ? undefined : values.last)) !== \"undefined\" && _b !== null) ? _b : this.last;\n      this.captures = matches.slice(1);\n      return (this.match = matches[0]);\n    };\n    return StringScanner;\n  })();\n})();\n"]}