diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 4e19bab..0000000 --- a/.babelrc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "presets": [ - [ - "minify", - { - "typeConstructors": { - "string": false - }, - "evaluate": true, - "infinity": false, - "mangle": { - "topLevel": true - } - } - ] - ], - "comments": false -} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 15b75c5..4f9102a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ build index.js index.html -server.js node_modules *.tgz +*.7z +test-perf.mjs diff --git a/.npmignore b/.npmignore index 3fd39a0..5ba7e36 100644 --- a/.npmignore +++ b/.npmignore @@ -4,10 +4,11 @@ src build/tsconfig.tsbuildinfo build/deps build/out -*.map +bundle.js.map +bundle.cjs.map +bundle.min.js.map bundle.js bundle.cjs -bundle.mjs bundle.min.js samples index.js @@ -17,5 +18,7 @@ syntax.md .babelrc package-lock.json *.tgz +*.7z node_modules tsconfig.json +rollup.config.js diff --git a/Licence b/Licence index ce87899..b098477 100644 --- a/Licence +++ b/Licence @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020 MadProbe#7435 +Copyright (c) 2020-present MadProbe#7435 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/changelog.md b/changelog.md index 4a8fc73..f4d7a29 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,61 @@ +# Version 0.3.0 +## New Features + +### Word aliases for binary ariphmetic +```ts +not true; +not 0 + 1; +true and false; +false or true; +``` +transforms to: +```ts +!true; +!(0 + 1); +true && false; +false || true; +``` + +### Symbol constructor property shortcuts +```ts +iterator = [0, 1, 2, 3, 4][@@iterator](); +while (not (next = iterator.next()).done) { + __external_var("console").log(next.value); +} + +/** + * Prints to console: + * 0 + * 1 + * 2 + * 3 + * 4 + */ +``` +transforms to: +```js +var $iterator, $next; +$iterator = [0, 1, 2, 3, 4][Symbol.iterator](); +while (!(($next = $iterator.next())).done) { + console.log($next.value); +}; +``` + +### include { symbol } from "module.tsk"; +Same as normal `include "module.tsk";`, except only some symbols from module are exported. +NOTE: WHOLE module is evaluated and NO functionality is stripped and ALL symbols (variables and functions) in module available to exported symbols! +Exmaples: +```ts +include { symbol, function } from "module.tsk"; +include { symbol as newSymbolName } from "module.tsk"; +``` + +### Import expressions +```ts +// Import expression are same as in js +fs = await import("fs"); +``` + # Version 0.2.0 ## Bug fixes Removed Extra newline emitted on code block and try statment. diff --git a/package-lock.json b/package-lock.json index 5d812d7..eb72bfc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,5320 +9,93 @@ "version": "0.2.0", "license": "ISC", "bin": { - "tskc": "build/tskc.js" + "tskc": "build/tskc.mjs" }, "devDependencies": { - "@babel/cli": "^7.13.10", - "@babel/core": "^7.13.10", - "@rollup/plugin-babel": "^5.3.0", - "@rollup/plugin-typescript": "^8.2.0", - "@types/node": "^14.14.35", - "babel-preset-minify": "^0.5.1", - "rollup": "^2.42.3", - "tslib": "^2.1.0", - "typescript": "^4.3.0-dev.20210323" + "@types/node": "^17.0.5" }, "peerDependencies": { "node-fetch": "^2.6.1" } }, - "node_modules/@babel/cli": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.10.tgz", - "integrity": "sha512-lYSBC7B4B9hJ7sv0Ojx1BrGhuzCoOIYfLjd+Xpd4rOzdS+a47yi8voV8vFkfjlZR1N5qZO7ixOCbobUdT304PQ==", - "dev": true, - "dependencies": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents", - "chokidar": "^3.4.0", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "lodash": "^4.17.19", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - }, - "bin": { - "babel": "bin/babel.js", - "babel-external-helpers": "bin/babel-external-helpers.js" - }, - "optionalDependencies": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents", - "chokidar": "^3.4.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.12.13" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true - }, - "node_modules/@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", - "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", - "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true - }, - "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", - "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "node_modules/@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz", - "integrity": "sha512-+nb9vWloHNNMFHjGofEam3wopE3m1yuambrrd/fnPc+lFOMB9ROTqQlche9ByFWNkdNqfSgR/kkQtQ8DzEWt2w==", - "dev": true, - "optional": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", - "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" - }, - "peerDependenciesMeta": { - "@types/babel__core": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-typescript": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.0.tgz", - "integrity": "sha512-5DyVsb7L+ehLfNPu/nat8Gq3uJGzku4bMFPt90XahtgiSBf7z9YKPLqFUJKMT41W/mJ98SVGDPOhzikGrr/Lhg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "resolve": "^1.17.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0", - "tslib": "*", - "typescript": ">=3.4.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.14.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", - "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", - "dev": true - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true, - "optional": true - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "optional": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/babel-helper-evaluate-path": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", - "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", - "dev": true - }, - "node_modules/babel-helper-flip-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", - "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", - "dev": true - }, - "node_modules/babel-helper-is-nodes-equiv": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", - "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", - "dev": true - }, - "node_modules/babel-helper-is-void-0": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", - "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", - "dev": true - }, - "node_modules/babel-helper-mark-eval-scopes": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", - "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", - "dev": true - }, - "node_modules/babel-helper-remove-or-void": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", - "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", - "dev": true - }, - "node_modules/babel-helper-to-multiple-sequence-expressions": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", - "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", - "dev": true - }, - "node_modules/babel-plugin-minify-builtins": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", - "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", - "dev": true - }, - "node_modules/babel-plugin-minify-constant-folding": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", - "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "node_modules/babel-plugin-minify-dead-code-elimination": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", - "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-mark-eval-scopes": "^0.4.3", - "babel-helper-remove-or-void": "^0.4.3", - "lodash": "^4.17.11" - } - }, - "node_modules/babel-plugin-minify-flip-comparisons": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", - "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", - "dev": true, - "dependencies": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "node_modules/babel-plugin-minify-guarded-expressions": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", - "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3" - } - }, - "node_modules/babel-plugin-minify-infinity": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", - "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", - "dev": true - }, - "node_modules/babel-plugin-minify-mangle-names": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", - "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", - "dev": true, - "dependencies": { - "babel-helper-mark-eval-scopes": "^0.4.3" - } - }, - "node_modules/babel-plugin-minify-numeric-literals": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", - "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", - "dev": true - }, - "node_modules/babel-plugin-minify-replace": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", - "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", - "dev": true - }, - "node_modules/babel-plugin-minify-simplify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", - "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3", - "babel-helper-is-nodes-equiv": "^0.0.1", - "babel-helper-to-multiple-sequence-expressions": "^0.5.0" - } - }, - "node_modules/babel-plugin-minify-type-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", - "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", - "dev": true, - "dependencies": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "node_modules/babel-plugin-transform-inline-consecutive-adds": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", - "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", - "dev": true - }, - "node_modules/babel-plugin-transform-member-expression-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", - "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", - "dev": true - }, - "node_modules/babel-plugin-transform-merge-sibling-variables": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", - "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", - "dev": true - }, - "node_modules/babel-plugin-transform-minify-booleans": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", - "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", - "dev": true - }, - "node_modules/babel-plugin-transform-property-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", - "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - } - }, - "node_modules/babel-plugin-transform-regexp-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", - "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", - "dev": true - }, - "node_modules/babel-plugin-transform-remove-console": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", - "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", - "dev": true - }, - "node_modules/babel-plugin-transform-remove-debugger": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", - "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", - "dev": true - }, - "node_modules/babel-plugin-transform-remove-undefined": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", - "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", - "dev": true, - "dependencies": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "node_modules/babel-plugin-transform-simplify-comparison-operators": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", - "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", - "dev": true - }, - "node_modules/babel-plugin-transform-undefined-to-void": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", - "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", - "dev": true - }, - "node_modules/babel-preset-minify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", - "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", - "dev": true, - "dependencies": { - "babel-plugin-minify-builtins": "^0.5.0", - "babel-plugin-minify-constant-folding": "^0.5.0", - "babel-plugin-minify-dead-code-elimination": "^0.5.1", - "babel-plugin-minify-flip-comparisons": "^0.4.3", - "babel-plugin-minify-guarded-expressions": "^0.4.4", - "babel-plugin-minify-infinity": "^0.4.3", - "babel-plugin-minify-mangle-names": "^0.5.0", - "babel-plugin-minify-numeric-literals": "^0.4.3", - "babel-plugin-minify-replace": "^0.5.0", - "babel-plugin-minify-simplify": "^0.5.1", - "babel-plugin-minify-type-constructors": "^0.4.3", - "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", - "babel-plugin-transform-member-expression-literals": "^6.9.4", - "babel-plugin-transform-merge-sibling-variables": "^6.9.4", - "babel-plugin-transform-minify-booleans": "^6.9.4", - "babel-plugin-transform-property-literals": "^6.9.4", - "babel-plugin-transform-regexp-constructors": "^0.4.3", - "babel-plugin-transform-remove-console": "^6.9.4", - "babel-plugin-transform-remove-debugger": "^6.9.4", - "babel-plugin-transform-remove-undefined": "^0.5.0", - "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", - "babel-plugin-transform-undefined-to-void": "^6.9.4", - "lodash": "^4.17.11" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "optional": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", - "escalade": "^3.1.1", - "node-releases": "^1.1.70" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "optional": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001204", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz", - "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==", - "dev": true - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz", - "integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==", - "dev": true, - "optional": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "engines": { - "node": ">= 8.10.0" - } - }, - "node_modules/chokidar/node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "optional": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/chokidar/node_modules/binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "optional": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chokidar/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/chokidar/node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "optional": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "optional": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "optional": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true, - "optional": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.3.696", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.696.tgz", - "integrity": "sha512-yuKKvBuXe+IWRp6DxqbGUxbPtamh5C+mEC38vZ0KLxQFpGG9TQn0DbPL9WhWhQnfNhLyzxmPYlCzShbs8QxGbA==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "optional": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "optional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "optional": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "optional": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", - "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true, - "optional": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "optional": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "optional": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true, - "optional": true - }, - "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "optional": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "optional": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "optional": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "optional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "optional": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "optional": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "optional": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true, - "optional": true - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "optional": true - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "optional": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true, - "optional": true - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true, - "optional": true - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/rollup": { - "version": "2.42.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.42.3.tgz", - "integrity": "sha512-JjaT9WaUS5vmjy6xUrnPOskjkQg2cN4WSACNCwbOvBz8VDmbiKVdmTFUoMPRqTud0tsex8Xy9/boLbDW9HKD1w==", - "dev": true, - "dependencies": { - "fsevents": "~2.3.1" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "optional": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "optional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "optional": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "optional": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "optional": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true, - "optional": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "optional": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "optional": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "optional": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "optional": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.3.0-dev.20210323", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.0-dev.20210323.tgz", - "integrity": "sha512-13er73BHxa49JxfDuKDEmQ2w7F9In/ma5AhO6GxDwgdnlYcQUyvBr8pSx1O3zclWI9JEu1cH88G7j0ZSQQ6t2w==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "optional": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "optional": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "optional": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "optional": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true, - "optional": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - }, - "dependencies": { - "@babel/cli": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.13.10.tgz", - "integrity": "sha512-lYSBC7B4B9hJ7sv0Ojx1BrGhuzCoOIYfLjd+Xpd4rOzdS+a47yi8voV8vFkfjlZR1N5qZO7ixOCbobUdT304PQ==", - "dev": true, - "requires": { - "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents", - "chokidar": "^3.4.0", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "lodash": "^4.17.19", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - } - }, - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.12.13" - } - }, - "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", - "dev": true - }, - "@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", - "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-transforms": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", - "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", - "dev": true, - "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", - "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", - "dev": true - }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", - "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz", - "integrity": "sha512-+nb9vWloHNNMFHjGofEam3wopE3m1yuambrrd/fnPc+lFOMB9ROTqQlche9ByFWNkdNqfSgR/kkQtQ8DzEWt2w==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "@rollup/plugin-babel": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", - "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - } - }, - "@rollup/plugin-typescript": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.2.0.tgz", - "integrity": "sha512-5DyVsb7L+ehLfNPu/nat8Gq3uJGzku4bMFPt90XahtgiSBf7z9YKPLqFUJKMT41W/mJ98SVGDPOhzikGrr/Lhg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "resolve": "^1.17.0" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - } - }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "@types/node": { - "version": "14.14.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", - "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "optional": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "optional": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "optional": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "optional": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "optional": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true, - "optional": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "optional": true - }, - "babel-helper-evaluate-path": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", - "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", - "dev": true - }, - "babel-helper-flip-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", - "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", - "dev": true - }, - "babel-helper-is-nodes-equiv": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", - "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", - "dev": true - }, - "babel-helper-is-void-0": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", - "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", - "dev": true - }, - "babel-helper-mark-eval-scopes": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", - "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", - "dev": true - }, - "babel-helper-remove-or-void": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", - "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", - "dev": true - }, - "babel-helper-to-multiple-sequence-expressions": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", - "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", - "dev": true - }, - "babel-plugin-minify-builtins": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", - "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", - "dev": true - }, - "babel-plugin-minify-constant-folding": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", - "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "babel-plugin-minify-dead-code-elimination": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", - "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-mark-eval-scopes": "^0.4.3", - "babel-helper-remove-or-void": "^0.4.3", - "lodash": "^4.17.11" - } - }, - "babel-plugin-minify-flip-comparisons": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", - "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", - "dev": true, - "requires": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "babel-plugin-minify-guarded-expressions": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", - "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3" - } - }, - "babel-plugin-minify-infinity": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", - "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", - "dev": true - }, - "babel-plugin-minify-mangle-names": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", - "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", - "dev": true, - "requires": { - "babel-helper-mark-eval-scopes": "^0.4.3" - } - }, - "babel-plugin-minify-numeric-literals": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", - "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", - "dev": true - }, - "babel-plugin-minify-replace": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", - "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", - "dev": true - }, - "babel-plugin-minify-simplify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", - "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3", - "babel-helper-is-nodes-equiv": "^0.0.1", - "babel-helper-to-multiple-sequence-expressions": "^0.5.0" - } - }, - "babel-plugin-minify-type-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", - "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", - "dev": true, - "requires": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "babel-plugin-transform-inline-consecutive-adds": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", - "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", - "dev": true - }, - "babel-plugin-transform-member-expression-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", - "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", - "dev": true - }, - "babel-plugin-transform-merge-sibling-variables": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", - "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", - "dev": true - }, - "babel-plugin-transform-minify-booleans": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", - "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", - "dev": true - }, - "babel-plugin-transform-property-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", - "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "babel-plugin-transform-regexp-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", - "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", - "dev": true - }, - "babel-plugin-transform-remove-console": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", - "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", - "dev": true - }, - "babel-plugin-transform-remove-debugger": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", - "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", - "dev": true - }, - "babel-plugin-transform-remove-undefined": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", - "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "babel-plugin-transform-simplify-comparison-operators": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", - "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", - "dev": true - }, - "babel-plugin-transform-undefined-to-void": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", - "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", - "dev": true - }, - "babel-preset-minify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", - "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", - "dev": true, - "requires": { - "babel-plugin-minify-builtins": "^0.5.0", - "babel-plugin-minify-constant-folding": "^0.5.0", - "babel-plugin-minify-dead-code-elimination": "^0.5.1", - "babel-plugin-minify-flip-comparisons": "^0.4.3", - "babel-plugin-minify-guarded-expressions": "^0.4.4", - "babel-plugin-minify-infinity": "^0.4.3", - "babel-plugin-minify-mangle-names": "^0.5.0", - "babel-plugin-minify-numeric-literals": "^0.4.3", - "babel-plugin-minify-replace": "^0.5.0", - "babel-plugin-minify-simplify": "^0.5.1", - "babel-plugin-minify-type-constructors": "^0.4.3", - "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", - "babel-plugin-transform-member-expression-literals": "^6.9.4", - "babel-plugin-transform-merge-sibling-variables": "^6.9.4", - "babel-plugin-transform-minify-booleans": "^6.9.4", - "babel-plugin-transform-property-literals": "^6.9.4", - "babel-plugin-transform-regexp-constructors": "^0.4.3", - "babel-plugin-transform-remove-console": "^6.9.4", - "babel-plugin-transform-remove-debugger": "^6.9.4", - "babel-plugin-transform-remove-undefined": "^0.5.0", - "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", - "babel-plugin-transform-undefined-to-void": "^6.9.4", - "lodash": "^4.17.11" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "optional": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", - "escalade": "^3.1.1", - "node-releases": "^1.1.70" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "optional": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001204", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz", - "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz", - "integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true, - "optional": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "optional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "optional": true - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "optional": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "optional": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "optional": true - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "electron-to-chromium": { - "version": "1.3.696", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.696.tgz", - "integrity": "sha512-yuKKvBuXe+IWRp6DxqbGUxbPtamh5C+mEC38vZ0KLxQFpGG9TQn0DbPL9WhWhQnfNhLyzxmPYlCzShbs8QxGbA==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "optional": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "optional": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "optional": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "optional": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "optional": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", - "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "optional": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true, - "optional": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "optional": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "optional": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "node_modules/@types/node": { + "version": "17.0.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.5.tgz", + "integrity": "sha512-w3mrvNXLeDYV1GKTZorGJQivK6XLCoGwpnyJFbJVK/aTBQUxOCaa/GlFAAN3OTDFcb7h5tiFG+YXCO2By+riZw==", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true, - "optional": true - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, + "node_modules/node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "peer": true, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "optional": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "optional": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "optional": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" + "whatwg-url": "^5.0.0" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "optional": true, - "requires": { - "isobject": "^3.0.1" + "engines": { + "node": "4.x || >=6.0.0" } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "optional": true + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "peer": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "isobject": { + "node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "optional": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "optional": true - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "optional": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "optional": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "optional": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "optional": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "optional": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "optional": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "optional": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "optional": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true, - "optional": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "peer": true }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "optional": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true, - "optional": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true, - "optional": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "optional": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true, - "optional": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "optional": true - }, - "rollup": { - "version": "2.42.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.42.3.tgz", - "integrity": "sha512-JjaT9WaUS5vmjy6xUrnPOskjkQg2cN4WSACNCwbOvBz8VDmbiKVdmTFUoMPRqTud0tsex8Xy9/boLbDW9HKD1w==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "optional": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "peer": true, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + } + }, + "dependencies": { + "@types/node": { + "version": "17.0.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.5.tgz", + "integrity": "sha512-w3mrvNXLeDYV1GKTZorGJQivK6XLCoGwpnyJFbJVK/aTBQUxOCaa/GlFAAN3OTDFcb7h5tiFG+YXCO2By+riZw==", "dev": true }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "optional": true, + "node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "peer": true, "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "whatwg-url": "^5.0.0" } }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "optional": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "optional": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "peer": true }, - "snapdragon-util": { + "webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "optional": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true, - "optional": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "optional": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "optional": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "optional": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "optional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "typescript": { - "version": "4.3.0-dev.20210323", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.0-dev.20210323.tgz", - "integrity": "sha512-13er73BHxa49JxfDuKDEmQ2w7F9In/ma5AhO6GxDwgdnlYcQUyvBr8pSx1O3zclWI9JEu1cH88G7j0ZSQQ6t2w==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "optional": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "peer": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "optional": true, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "peer": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "optional": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "optional": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "optional": true - } + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true, - "optional": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true } } } diff --git a/package.json b/package.json index 1b103d9..caf7d54 100644 --- a/package.json +++ b/package.json @@ -3,36 +3,34 @@ "version": "0.2.0", "description": "Compiler for TSK programming language", "author": "MadProbe#7435", - "license": "ISC", + "license": "MIT", + "main": "build/bundle.min.cjs", + "module": "build/bundle.min.mjs", "exports": { ".": { "import": "./build/bundle.min.mjs", "browser": "./build/bundle.min.mjs", + "import-non-minified": "./build.mjs", "require": "./build/bundle.min.cjs" } }, "type": "module", - "bin": { - "tskc": "build/tskc.js" - }, - "types": "./build/out/lib/compiler.d.ts", + "bin": "build/tskc.mjs", + "types": "build/decls/lib/compiler.d.ts", "devDependencies": { - "@babel/cli": "^7.13.10", - "@babel/core": "^7.13.10", - "@rollup/plugin-babel": "^5.3.0", - "@rollup/plugin-typescript": "^8.2.0", - "@types/node": "^14.14.35", - "babel-preset-minify": "^0.5.1", - "rollup": "^2.42.3", - "tslib": "^2.1.0", - "typescript": "^4.3.0-dev.20210323" + "@types/node": "^17.0.5", + "rollup": "^2.60.1", + "rollup-plugin-terser": "^7.0.2", + "rollup-plugin-typescript2": "^0.31.1", + "tslib": "^2.3.1", + "typescript": "^4.5.2" }, "peerDependencies": { "node-fetch": "^2.6.1" }, "scripts": { - "build": "rollup -c && tsc src/bin/tskc.ts --outDir build -t es2018 -m esnext", - "update": "npm i --legacy-peer-deps -D @rollup/plugin-typescript@latest @rollup/plugin-babel@latest @babel/cli@latest @babel/core@latest @types/node@latest babel-preset-minify@latest typescript@next rollup@latest tslib@latest", + "build": "rollup -c && tsc -p src/bin/tsconfig.json", + "update": "npm i --legacy-peer-deps -D rollup-plugin-typescript2@latest @rollup/plugin-babel@latest @babel/cli@latest @babel/core@latest @types/node@latest babel-preset-minify@latest typescript@latest rollup@latest tslib@latest", "start": "node server.js", "globalinstall": "npm pack && npm install -g ./tskc-0.2.0.tgz", "clearbuild": "rm -rf build/out build/bundle.*", @@ -43,7 +41,8 @@ "url": "git+https://github.com/MadProbe/tsk.git" }, "bugs": { - "url": "https://github.com/MadProbe/tsk/issues" + "url": "https://github.com/MadProbe/tsk/issues", + "discord": "https://discord.gg/5dPuBvZjjx" }, "homepage": "https://github.com/MadProbe/tsk#readme" } diff --git a/rollup.config.js b/rollup.config.mjs similarity index 57% rename from rollup.config.js rename to rollup.config.mjs index b004409..949b50f 100644 --- a/rollup.config.js +++ b/rollup.config.mjs @@ -1,13 +1,12 @@ -// rollup.config.js -import typescript from '@rollup/plugin-typescript'; -import { getBabelOutputPlugin } from '@rollup/plugin-babel'; -import { readFileSync } from "fs"; +import typescript from 'rollup-plugin-typescript2'; +import { terser } from 'rollup-plugin-terser'; +const plugin_terser = terser({ format: { comments: false }, mangle: { toplevel: true, module: true }, compress: { passes: 4, unsafe_undefined: true } }); export default { onwarn(warning) { if (warning.code !== 'CIRCULAR_DEPENDENCY') { - console.error(`(!) ${ warning.message }`); + console.error(`(!) ${warning.message}`); } }, input: 'src/lib/compiler.ts', @@ -36,32 +35,23 @@ export default { exports: "named", format: 'iife', sourcemap: true, - plugins: [getBabelOutputPlugin({ - allowAllFormats: true, - ...JSON.parse(readFileSync('./.babelrc', "utf-8")) - })], + plugins: [plugin_terser], }, { file: './build/bundle.min.mjs', format: 'esm', sourcemap: true, - plugins: [getBabelOutputPlugin({ - allowAllFormats: true, - ...JSON.parse(readFileSync('./.babelrc', "utf-8")) - })], + plugins: [plugin_terser] }, { file: './build/bundle.min.cjs', exports: "named", format: 'cjs', sourcemap: true, - plugins: [getBabelOutputPlugin({ - allowAllFormats: true, - ...JSON.parse(readFileSync('./.babelrc', "utf-8")) - })], + plugins: [plugin_terser], } ] : []) ], plugins: [ - typescript() + typescript({ useTsconfigDeclarationDir: true }) ] }; \ No newline at end of file diff --git a/samples/factorial.tsk b/samples/factorial.tsk index 5a20cbc..afdefa9 100644 --- a/samples/factorial.tsk +++ b/samples/factorial.tsk @@ -20,4 +20,4 @@ fn factorial_r(n) { return 1; } -console.log(factorial_r(5)); \ No newline at end of file +console.log(factorial_r(5)); diff --git a/samples/index.tsk b/samples/index.tsk index dac39b3..7daab98 100644 --- a/samples/index.tsk +++ b/samples/index.tsk @@ -1,10 +1,13 @@ +#!/usr/bin/env -S tskc --pretty --out=../build +"use strict"; // Include statment includes code from specified file -include "./example-module.tsk"; +// include "./example-module.tsk"; [1, 2, 3]; // variable declarations a = 2; b = 4; c = 6; +テスト = 2; // __external_var is for exposing external variable // (also can be used for executing statments that are implented in js but not yet in tsk) Function = __external_var("Function"); @@ -69,7 +72,8 @@ lol?.null?.dsa?.[2].p; fn p() { return arguments; } -p::(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); +p::(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)?.p; +(p::(null)); async fn _temp() => { await 0; console.log(1); @@ -117,9 +121,15 @@ restTest2(1, 2, 3); restTest3(1, 2, 3); restTest4(1, 2, 3); restTest5(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); -class A extends leel with echo { - -} +// class A extends leel with echo { +// static a = 0; +// async constructor(public name, public descriptions) { +// console.log(class.a); +// } +// async static class() { +// return class.a; +// } +// } try { null!; } catch (e) { @@ -132,7 +142,7 @@ try { } try { 0; -} catch (cought) { +} catch (caught) { 1; } else { 2; @@ -142,8 +152,7 @@ try { { try { } finally { } try { } else { } - try { } catch { } - try { } + try { } catch { 0; }; } i = 0; while (i < 10) { @@ -157,7 +166,7 @@ fn test__() { return "Hello from else block!"; } } -__external_var("console").log(test__()); // Prints "Hello from try block!" +console.log(test__()); // Prints "Hello from try block!" try { try { console.log("inner try"); @@ -172,9 +181,25 @@ try { console.log("inner finally"); } } catch (error) { - console.error("outer", error); -} -console.log("$$$".replace(__external_var("/\$?/g"), "()")); -(fn () {}, fn() {})() + console.log("outer", error); +} +console.log("$$$".replace(/\$?/g,"()")); +(fn () {}, fn() {})(); +(fn () { + iterator = (0..6)[@@iterator](); + while (not (next = iterator.next()).done) { + console.log(next.value); + } +})(); +(1 + (1 ** 1) + 1); + +for range (0 to 5 as i) { + console.log("i:", i); +} +if (1) {} else 0xff; +((fn () => fn () {})()()?.p); +null?.(11111); +// 0 or 1; +// / /; //;~; ; \ No newline at end of file diff --git a/samples/module.tsk b/samples/module.tsk index 68337c9..3b7aff2 100644 --- a/samples/module.tsk +++ b/samples/module.tsk @@ -1,4000 +1,44004 @@ -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} - -fn kek(a, b, c) { - return a + b + c; -} +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); + +console = __external_var("console"); + +fn is_palindromic(n) => + n.toString().split('').reverse() + .join('') == n.toString(); + +fn find_largest_palindromic(big) { + res = 0; + for range (100 to big as i) { + for range (100 to big as j) { + v = i * j; + t = is_palindromic(v); + if (t && v > res) { + res = v; + } + } + } + return res; +} + +console.log(find_largest_palindromic(1000)); -fn kek(a, b, c) { - return a + b + c; -} diff --git a/samples/narcissistic.tsk b/samples/narcissistic.tsk index 323138b..e4181a5 100644 --- a/samples/narcissistic.tsk +++ b/samples/narcissistic.tsk @@ -2,10 +2,10 @@ console = __external_var("console"); fn is_narcissistic(n) { - fn pow(a) => __external_var("Math.pow")(__external_var("Number")(a), n.toString().length); - return n.toString().split("").map(pow).reduce(fn(s, v) => s += v) == n; + fn pow(a) => a ** n.toString().length; + return n.toString().split("").map(pow).reduce(fn(s, v) => s + v) == n; } // testing... console.log("is_narcissistic(153) = ", is_narcissistic(153)); -console.log("is_narcissistic(1625) = ", is_narcissistic(1625)); \ No newline at end of file +console.log("is_narcissistic(1625) = ", is_narcissistic(1625)); diff --git a/samples/palindromic.tsk b/samples/palindromic.tsk index c479b8a..3fb54ee 100644 --- a/samples/palindromic.tsk +++ b/samples/palindromic.tsk @@ -8,20 +8,16 @@ fn is_palindromic(n) => fn find_largest_palindromic(big) { res = 0; - i = 100; - while (i < big) { - j = 100; - while (j < big) { + for range (100 to big as i) { + for range (100 to big as j) { v = i * j; t = is_palindromic(v); if (t && v > res) { res = v; } - j += 1; } - i += 1; } return res; } -console.log(find_largest_palindromic(1000)); \ No newline at end of file +console.log(find_largest_palindromic(1000)); diff --git a/samples/some.tsk b/samples/some.tsk index d96f930..7d4b886 100644 --- a/samples/some.tsk +++ b/samples/some.tsk @@ -4,7 +4,7 @@ console = __external_var("console"); fn to_word(val) { v = val % 10; if (v == 1) { return "рубль"; } - else if (v == 2) { return "рубля"; } + else if (v == 2 or v == 3 or v == 4) { return "рубля"; } else { return "рублей"; } } diff --git a/samples/test-macros.tskmac b/samples/test-macros.tskmac new file mode 100644 index 0000000..b8f8d69 --- /dev/null +++ b/samples/test-macros.tskmac @@ -0,0 +1,22 @@ +// Comment +/* Comments here are suported samely as in the main language */ + +/** + * A fast eqivalent of [].map() built-in function + * + */ +macro FASTMAP$E(array, action) { + // string-like syntax for tokenized strings + return t""" + (fn () { + a = ${ array }; + length = a.length; + index = 0; + newarray = __external_var("Array")(length); + while(index < length) { + newarray[index++] = ${ action } + index++; + } + })(); + """; +} diff --git a/server.crt b/server.crt new file mode 100644 index 0000000..a3d87ba --- /dev/null +++ b/server.crt @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGCjCCA/KgAwIBAgIUcZV+U+4KN3FzTYIUSvttm6kj1jswDQYJKoZIhvcNAQEL +BQAwga8xCzAJBgNVBAYTAlVTMRQwEgYDVQQIDAtSYW5kb21TdGF0ZTETMBEGA1UE +BwwKUmFuZG9tQ2l0eTEbMBkGA1UECgwSUmFuZG9tT3JnYW5pemF0aW9uMR8wHQYD +VQQLDBZSYW5kb21Pcmdhbml6YXRpb25Vbml0MSQwIgYJKoZIhvcNAQkBFhVuZXJk +Y2FycmllckBnbWFpbC5jb20xETAPBgNVBAMMCE1hZFByb2JlMCAXDTIxMDIwNjEx +NDI0M1oYDzMwMjAwNjA5MTE0MjQzWjCBrDELMAkGA1UEBhMCVVMxFDASBgNVBAgM +C1JhbmRvbVN0YXRlMRMwEQYDVQQHDApSYW5kb21DaXR5MRswGQYDVQQKDBJSYW5k +b21Pcmdhbml6YXRpb24xFDASBgNVBAMMCyoubG9jYWxob3N0MR0wGwYDVQQLDBRQ +b3NpdGl2ZVNTTCBXaWxkY2FyZDEgMB4GCSqGSIb3DQEJARYRaGVsbG9AZXhhbXBs +ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNQAm3J2pWPAtW +56QKt7CbKKGgZCJWuLREoCM9lsIqqPJ21PexzxHTyTGnlMWylqFDCf8ySQXPd9B/ +5wmgcMPoeLZA4QFgtWgVpQmWttAlVTt1nMcVmmzTFb8JVPD4Fgz1eeCmcGzW27vR +EGQudSvBD0z3bba1D6joyW7lZL8Vomyvguo5HzWlv0wY5JwasG5aTHVIc+4XnSDm +lYHonkfFdSvF6hj7oShSRkHruu/SwefYwQs3xM5JRwRTC6LSeanCXDCFlJvOxPja +fpzSR5O5f5C2s6HSB7KnFfPdmIEBt5AiT/wUPhCcIpR5nZUX8km9iARELfbRaVTs +xWhDnztPAgMBAAGjggEbMIIBFzCB2QYDVR0jBIHRMIHOoYG1pIGyMIGvMQswCQYD +VQQGEwJVUzEUMBIGA1UECAwLUmFuZG9tU3RhdGUxEzARBgNVBAcMClJhbmRvbUNp +dHkxGzAZBgNVBAoMElJhbmRvbU9yZ2FuaXphdGlvbjEfMB0GA1UECwwWUmFuZG9t +T3JnYW5pemF0aW9uVW5pdDEkMCIGCSqGSIb3DQEJARYVbmVyZGNhcnJpZXJAZ21h +aWwuY29tMREwDwYDVQQDDAhNYWRQcm9iZYIUdMqEhHg69bN6yfRfcSg4QsXTh8Yw +CQYDVR0TBAIwADALBgNVHQ8EBAMCBPAwIQYDVR0RBBowGIILKi5sb2NhbGhvc3SC +CWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAgEAPFMYkp+fH2PpNLTJlfWdzYqu +u7yiSYPVI3Kwjahgwbc3E3AF67nh9eRMqobvPbU0NczlCnoK6jLDRslg/WENKwDK +u3JSLTtg0TuGSTeVTBantN/Pt1OQJPoMPR++TnLCvtr91XAuum2sTfjD4OcfU1fR +h/DLJcahQ7jUNZZja6JA8+4yE8h3ZdJgUkQ02MMvCyTM7dDhWNMcyVAh2Fe+rIV2 +Nkswy7KRm4oSve1xvnjCnUCVerWl3SDBqjxGyNqtmTMR75wxrQZprbygj/akwXmP +zDR9nu0e55kGaNra8hCqjclKRBIuWRnyYqjrwi1Ru5rSe1jyYXF3CQ3EJVjeQHK4 +4H2Jtol9EZmy3687V0EtxfIjHgeAizQPXKf5LgnrpghRK8/KA7ecotiT7Rhnmf0i +MwkJy1Qk9mHKAenXA8YhBgObfKXrwefND197sTXxVqxf6wPnR/y3WbRuF7fj6Tsb +P1mSaYRuat/DUFVquud+v6DvKxscpeYazW5r+rUaGcMxNp7zeJ0C/s1gU+/8RSP0 +Rj6uiD/YI4SJZh9DLiVCBuknCF/hn24X/qCZICjPI5ByDlZ/r6irTSuT8NEe16lC +n8VU/NtmV9QSHBnLyahZzZ0mIzoPe/+wnwl73yfr2PunErlpTjZ5Av2kpeF0kgWQ +J+pYEWT1GHq7wzvA+jo= +-----END CERTIFICATE----- diff --git a/server.key b/server.key new file mode 100644 index 0000000..b59617a --- /dev/null +++ b/server.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNQAm3J2pWPAtW +56QKt7CbKKGgZCJWuLREoCM9lsIqqPJ21PexzxHTyTGnlMWylqFDCf8ySQXPd9B/ +5wmgcMPoeLZA4QFgtWgVpQmWttAlVTt1nMcVmmzTFb8JVPD4Fgz1eeCmcGzW27vR +EGQudSvBD0z3bba1D6joyW7lZL8Vomyvguo5HzWlv0wY5JwasG5aTHVIc+4XnSDm +lYHonkfFdSvF6hj7oShSRkHruu/SwefYwQs3xM5JRwRTC6LSeanCXDCFlJvOxPja +fpzSR5O5f5C2s6HSB7KnFfPdmIEBt5AiT/wUPhCcIpR5nZUX8km9iARELfbRaVTs +xWhDnztPAgMBAAECggEAS24OY/4bSUfVzwFgOwQY5ly/UWebaw2ESngjm13NS8o9 +GUjZIsJ7xb55/iFhqmlLKI0C+WL2vLFGscqhshHfHY9HQ36td/ITJ2k4pefXhPDW +4jlUvO68sbKbO3249SN9bbV1xxUoGqo0UvfYKW6sPs41tfTfIZl4tNxaYfltdDBN +jg7si3jzYPsEzUc/J4XIHQK+KgjTgM0LNWb9DAUfKrM0nhZ6odZ6QgjlyHOzEWDv +XwwKiBXXYJQASauEPiuV7ZncFIqW1qUqKoN3FgzPtaC2cYZiVqHimFPpNCUdHf7v +l1hgtkihpf9Pqkr/cJjRkQQytz2n90oAAHZu+ZdPaQKBgQDm4a+6vIPCAzODEICp +oQQPvmboGFcGrkAEqTvsGm5vA1ePAqFDdeclVyKgvmHNFZqGCOds+rny5asFIELI +2TuJgcKLWLyGNo+HjY++Go4NisPwGzreJIxWk+qpP7ezaIBGS6s9f6lIBCgVN8BN +GP7syj9sETltKgiJ+S1/bmJ7JQKBgQDjlHyl8Wd/pX8mUg9Fk0+qx1w7ur9SAN0t +5nzLWrYfBJtcZqbML8zothStLykebuyYeieN+YXcm2LuWtjx2YcKP4+PyQqD2M/a +Nl8gmfxcq+rELhyPHfH3bSjffzBToRol5hPDlGLe0qlpcKrkUjymAV6ZdZA4A0xZ +nrdNkF5sYwKBgCP2Q0jy1BMELKHdkCzbx6YsIhtEr0l7Gr2fHpZIB6uC+cBsyHGZ +i8dlKx+eh91J4CfAe0ueQhhzbY/+1mgybfOdIpBR4guFtBWJFzqlKDszwhFELIct +ai6SG5sBMbvgKxrH7oRFvjhZbWTgqjNYEV0Qo5BRnoBCa9IR3eRbbTuBAoGBANAQ +eGmKrFJCb14MlhPJG4QKYmPlV3dUfOKzIBMXKvxuzM+MtiBl71Qu6/Zt8Iz3Yu4A +eFtP7reDhM5gVom+k7yl4c3WQvvJ5DYfkZcP0W60ap3Tfp7GBOtubHjxIrDC0FIn +6Jfd+Qq41NQmgsbd/L7U77Uji6f6M/qXpgSO4hT7AoGAKMbnT5lr+eCvdQuBV9kk +PbS+kfmnJISpqKsMhOGOhqDa20R1K0eFsCcJBH57Id1ScEVpevLmwj3J47WAQINN +o5RL6EESFWg7X0V4HLD9zEYDyK2/cGrvWSH1xLgMgjOvGWRGVlYT3rsmK1kGWP1C +kyqApaZX3c+ZobgpMulEt+Y= +-----END PRIVATE KEY----- diff --git a/server.mjs b/server.mjs new file mode 100644 index 0000000..250b0f6 --- /dev/null +++ b/server.mjs @@ -0,0 +1,209 @@ +#!/usr/bin/env -S node --experimental-import-meta-resolve --use-largepages=silent --experimental-json-modules --no-warnings --unhandled-rejections=warn +import { constants as FSConstants } from "fs"; +import { extname, join } from "path"; +import { createServer } from "http"; +import { createSecureServer } from "http2"; +import { brotliCompress, constants, gzip } from "zlib"; +import { open, readFile } from "fs/promises"; +import { promisify } from "util"; +import { pathToFileURL } from "url"; +import { argv, cwd } from "process"; + +const compressBrotli = promisify(brotliCompress); +const compressGzip = promisify(gzip); +const currentDirectoryOverrride = argv.find(x => x.startsWith("--dir="))?.slice(6); +const __dirname = currentDirectoryOverrride || cwd(); +const content_type_for_ext = { + ".md": "text/markdown", + ".html": "text/html", + ".js": "application/javascript", + ".mjs": "application/javascript", + ".cjs": "application/javascript", + ".css": "text/css", + ".map": "application/json", + ".json": "application/json", + ".webmanifest": "application/json" +}; +const uncompressable_files = { + ".ico": "image/png", + ".flac": "audio/flac", + ".m3u": "audio/mpegurl", + ".m3u8": "audio/mpegurl", + ".m4a": "audio/mp4", + ".m4b": "audio/mp4", + ".mp3": "audio/mpeg", + ".ogg": "audio/ogg", + ".opus": "audio/ogg", + ".pls": "audio/x-scpls", + ".wav": "audio/wav", + ".jpg": "image/jpeg", + ".png": "image/png", + ".webp": "image/webp", + ".avif": "image/avif" +}; +const contentTypeFromExt = ext => (content_type_for_ext[ext] && (content_type_for_ext[ext] + ";charset=utf-8")) ?? uncompressable_files[ext] ?? "text/plain;charset=utf-8"; +const port = argv.find(arg => /^--port=\d{2,}$/m.test(arg))?.match(/\d+$/gm)?.[0]; +const $cache = {}; +const $cache3 = {}; +const { settings } = await import(pathToFileURL(`${__dirname}/.serverconfig.json`), { assert: { type: "json" } }).then(x => x.default).catch(() => ({})); +/**@type {import("http").RequestListener} */ +const http1RequestProcessor = async (req, res) => { + const path = join(__dirname, req.url === "/" ? "/index.html" : req.url); + const ext = extname(path); + if (!~req.headers["accept-encoding"].indexOf("gzip")) { + res.setHeader("Content-Type", contentTypeFromExt(ext)); + res.writeHead(200, "OK"); + res.end(await readFile(path)); + return; + } + var handle; + try { + handle = await open(path); + const { mtime, compressed } = $cache[path] || {}; + const stats = await handle.stat({ bigint: true }); + const ext = extname(path); + const read = stats === mtime ? compressed : ($cache[path] = { + compressed: ext in uncompressable_files ? await handle.readFile() : await compressGzip(await handle.readFile(), { level: constants.Z_BEST_COMPRESSION }), + mtime: stats.mtimeNs + }).compressed; + res.setHeader("Content-Type", contentTypeFromExt(ext)); + res.setHeader("Content-Length", Number(stats.size)); + if (!uncompressable_files[ext]) { + res.setHeader("Content-Encoding", "gzip"); + } + res.writeHead(200, "OK"); + res.end(read); + } catch (error) { + if (error.code !== "ENOENT") { + console.error(error); + } + res.writeHead(404, "Not found"); + res.end(); + } finally { + await handle?.close(); + } +}; +createServer(http1RequestProcessor).listen(settings?.http1?.port || port || 80); + +createSecureServer({ + cert: await readFile(new URL(await import.meta.resolve("./server.crt"))), + key: await readFile(new URL(await import.meta.resolve("./server.key"))), + allowHTTP1: true +}, (req, res) => { + const { httpVersion } = req; + if (httpVersion !== "2.0") { + return http1RequestProcessor(req, res); + } +}).on("stream", async (stream, headers) => { + const url = headers[":path"] === "/" ? "/index.html" : headers[":path"]; + const path = join(__dirname, url); + let handle; + + try { + stream.on('error', console.error); + handle = await open(path); + const { read, headers } = await readSaved(handle, path); + + if (stream.destroyed) return; + stream.respond(headers); + for (const _url of settings?.http2?.["push-paths"]?.[url] ?? []) { + if (_url === url) { + console.warn(`Weird configuration setting found: Ignoring attempt of self-push (url: "${url}")`); + continue; + } + try { + /** + * @type {import("http2").ServerHttp2Stream} + */ + const _stream = await new Promise((resolve, reject) => stream.pushStream({ + ":path": _url + }, (error, stream, headers) => error ? reject(error) : resolve(stream))); + _stream.on('error', console.error); + let read, headers, handle; + try { + const path = join(__dirname, _url); + handle = await open(path, FSConstants.O_RDONLY); + ({ read, headers } = await readSaved(handle, path)); + } catch (error) { + handleError(error, _stream); + } finally { + await handle?.close(); + } + _stream.destroyed || _stream.respond(headers); + _stream.destroyed || _stream.end(read); + } catch (error) { + console.error(error); + continue; + } + } + stream.destroyed || stream.end(read); + } catch (error) { + handleError(error, stream); + return; + } finally { + await handle?.close(); + } +}).listen(settings?.http2?.port ?? 443); +const CSPPolicy = `upgrade-insecure-requests; default-src 'self' https:; script-src 'self' https: 'unsafe-inline' 'unsafe-eval'; style-src 'self' https: 'unsafe-inline'`; +/** + * @param {import("fs/promises").FileHandle} handle + * @param {string} path + * @returns {Promise<{ read: Buffer, headers: import("http2").OutgoingHttpHeaders }>} + */ +async function readSaved(handle, path) { + const stats = await handle.stat({ bigint: true }); + const ext = extname(path); + let read, headers; + if (ext in uncompressable_files) { + const { mtime, buffer } = $cache3[path] ?? {}; + if (mtime !== stats.mtimeNs) { + $cache3[path] = { + mtime: stats.mtimeNs, + buffer: read = await handle.readFile() + }; + } else { + read = buffer; + } + headers = { + ":status": 200, + "access-control-allow-origin": "*", + "content-type": uncompressable_files[ext], + "content-length": `${stats.size}`, + "content-security-policy": CSPPolicy + }; + } else { + const { mtime, buffer } = $cache3[path] ?? {}; + if (mtime !== stats.mtimeNs) { + $cache3[path] = { + mtime: stats.mtimeNs, + buffer: read = await compressBrotli(await handle.readFile()) + }; + } else { + read = buffer; + } + headers = { + ":status": 200, + "access-control-allow-origin": "*", + "content-type": `${content_type_for_ext[ext] ?? "text/plain"}; charset=utf-8`, + "content-length": `${stats.size}`, + "content-encoding": "br", + "content-security-policy": CSPPolicy + }; + } + return { read, headers }; +} + +function handleError(error, stream) { + if (error.code !== "ENOENT") { + console.error(error); + } + if (!stream.destroyed) { + stream.respond({ + ":status": 404, + "content-type": "text/plain; charset=utf-8" + }); + stream.end("FILE NOT FOUND"); + } +} + +setTimeout(function self() { setTimeout(self, 1e6) }, 1e6); diff --git a/src/bin/tsconfig.json b/src/bin/tsconfig.json new file mode 100644 index 0000000..dde5a9e --- /dev/null +++ b/src/bin/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + "pretty": true, + "strict": true, + "outDir": "../../build", + "skipLibCheck": true + }, + "include": ["../../build/*", "tskc.mts"], + "exclude": [] +} \ No newline at end of file diff --git a/src/bin/tskc.mts b/src/bin/tskc.mts new file mode 100644 index 0000000..20a8d3d --- /dev/null +++ b/src/bin/tskc.mts @@ -0,0 +1,33 @@ +#!/usr/bin/env -S node --use-largepages=silent --enable-source-maps +import { writeFileSync } from "fs"; +import { createRequire } from "module"; +import { dirname, extname, join, resolve } from "path"; +import { argv } from "process"; +import { pathToFileURL } from "url"; +// @ts-expect-error +import compile from "./bundle.min.mjs"; + + +process.on("unhandledRejection", console.error.bind(console, "Error: ")); +function log_errors(errors: any[]) { + if (errors && errors.length) { + for (var index = 0; index < errors.length; index++) { + console.error("TSK Error:", errors[index]); + } + } +} +if (typeof global.require !== "function") { + global.require = createRequire(new URL(import.meta.url)); +} +const outDir = /^--out=(.+)$/gm.exec(argv.find(arg => /^--out=.+$/gm.test(arg))!)![1]; +const mains = argv.filter(arg => /^--main=.+$/gm.test(arg) || /^[^|*?\\<>$:"\r\n-]{2,}[^|*?\\<>$:"\r\n]*$/gm.test(arg) && arg !== ".").map(arg => resolve(/^--main=(.+)$/gm.exec(arg)?.[1] ?? arg)); +const pretty = argv.includes("--pretty"); +for (const main of mains) { + const compiled = await compile(pathToFileURL(main), { pretty }); + log_errors(compiled.diagnostics); + const ext = extname(main); + const newName = join(outDir, main.slice(dirname(main).length + 1, ext ? -ext.length : Infinity) + ".js"); + // console.log(newName); // debug shit + writeFileSync(newName, compiled.output); +} + diff --git a/src/bin/tskc.ts b/src/bin/tskc.ts deleted file mode 100644 index b91f939..0000000 --- a/src/bin/tskc.ts +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env node -import { writeFileSync } from "fs"; -import { createRequire } from "module"; -import { dirname, extname, join, resolve } from "path"; -import { pathToFileURL } from "url"; -// This file is not here! -// @ts-ignore -import compile from "./bundle.min.mjs"; - - -(async () => { - process.on("unhandledRejection", console.error.bind(console, "Error: ")); - function log_errors(errors: any[]) { - if (errors && errors.length) { - for (var index = 0; index < errors.length; index++) { - console.error("TSK Error:", errors[index]); - } - } - } - if (typeof global.require !== "function") { - global.require = createRequire(import.meta.url); - } - const args = process.argv; - const outDir = /^--out=(.+)$/gm.exec(args.find(arg => /^--out=.+$/gm.test(arg))!)![1]; - const mains = args.filter(arg => /^--main=.+$/gm.test(arg)).map(arg => resolve(/^--main=(.+)$/gm.exec(arg)![1])); - const pretty = args.includes("--pretty"); - for (const main of mains) { - const compiled = await compile(pathToFileURL(main), { pretty }); - log_errors(compiled.diagnostics); - const ext = extname(main); - const newName = join(outDir, main.slice(dirname(main).length + 1, ext ? -ext.length : Infinity) + ".js"); - console.log(newName); - writeFileSync(newName, compiled.output); - } -})().catch(console.error.bind(console, "Error: ")); - diff --git a/src/lib/compiler.ts b/src/lib/compiler.ts index 63240b9..90d26d7 100644 --- a/src/lib/compiler.ts +++ b/src/lib/compiler.ts @@ -1,19 +1,62 @@ -import { Diagnostic, IDiagnostic } from "./utils/diagnostics.js"; -import { DiagnosticSeverity } from "./enums.js"; +import { IDiagnostic } from "./utils/diagnostics.js"; +import { DiagnosticSeverity } from "./enums"; import { include } from "./utils/util.js"; -import { parse } from "./parser.js"; +import { parse, ParserOutput, pushDiagnostic } from "./parser.js"; import { emit } from "./emitter.js"; import { wrap } from "./wrapper.js"; import { lex } from "./lexer.js"; + +const $ = ` +[Lyrics for Nightcore - Seventh Day (Besomorph & Coopex), The music of my soul] +[https://www.youtube.com/watch?v=ppMksUwC7Sg] + +God won't take me to heaven +Blood on my knees when i'm begging +Why? I didn't mean to start a war + +Wanna be strong but i'm broken +Try to breathe but i'm choking +I'm in a million pieces on the floor + +I'm making friends with my demons +They understand what i'm needing +I just wanna feel something +I wish i was dreaming + +I'm making friends with my demons +I try to run but i need them +I just wanna feel something +I wish i was dreaming + +I got used to the taste of +Poison on my tongue, what a waste of +Time, give me pill for paradise + +I'm making friends with my demons +They understand what i'm needing +I just wanna feel something +I wish i was dreaming + +I'm not afraid of the darkness +It's all around me regardless +I'm tired of feeling nothing +Why am i so heartless? + +Tell these white lies, see how i hide +Sticks and stones they break all my bones +Tell these white lies, see how i hide +Sticks and stones they break all my bones +` export interface CompilerOutput { - diagnostics: IDiagnostic[]; - output: string; + readonly diagnostics: readonly IDiagnostic[]; + readonly output: string; } export interface CompilerOptions { - url?: string; - pretty?: boolean; - cache?: boolean; + readonly cache?: boolean; + readonly forgetShebang?: boolean; + readonly pretty?: boolean; + readonly url?: string; } /** * Complies tsk language code and transplies it into js code @@ -21,18 +64,19 @@ export interface CompilerOptions { * @param {import("./compiler").CompilerOptions & { url: string }} opts Options passed to parser * @returns {import("./compiler").CompilerOutput | Promise} js code & diagnostic messages */ -export function compileCode(code: string, opts: CompilerOptions & { url: string; }): CompilerOutput | Promise { - var parsed = parse(lex(code), opts.url, opts.cache ?? true); +export function compileCode(code: string, opts: CompilerOptions): CompilerOutput | Promise { + if (/seventh[- ]day/i.test(code)) return { diagnostics: [], output: $.trim() }; + var parsed = parse(lex(code), opts.url!, opts.cache ?? true); /**@param {import("../parser").ParserOutput} parsed */ - function _(parsed: import("./parser").ParserOutput) { + function _({ diagnostics, __used, output }: ParserOutput) { var obj = { - diagnostics: parsed.diagnostics, + diagnostics, output: `/*#EMPTY${ Math.random() }*/` - } as CompilerOutput; + }; try { - obj.output = wrap(emit(parsed.output, opts), parsed.__used); + obj.output = wrap(emit(output, opts), __used); } catch (error) { - obj.diagnostics.push(Diagnostic(DiagnosticSeverity.FatalError, error)); + pushDiagnostic(DiagnosticSeverity.FatalError, error as never); } return obj; } @@ -47,7 +91,7 @@ export function compileCode(code: string, opts: CompilerOptions & { url: string; export default function compile(url: string | URL | import("url").URL, opts?: CompilerOptions): CompilerOutput | Promise { var included = include(typeof url === "string" ? new URL(url) : url); opts ||= {}; - opts.url ||= url.toString(); + (opts as Record).url ||= url.toString(); if (typeof included === "string") { return compileCode(included, opts as CompilerOptions & { url: string; }); } else return included.then(included => compileCode(included, opts as CompilerOptions & { url: string; })); @@ -57,36 +101,32 @@ export { parse } from "./parser.js"; export * from "./wrapper.js"; export * from "./emitter.js"; export type { - ParserOutput, - SyntaxTree + ParserOutput, + KnownUsed } from "./parser"; export type { AccessChainItem, - ClassNode, + IClassNode, ClassConstructor, ClassNodeProps, ClassProperty, ClassGetter, ClassSetter, ClassMethod, - Node, - NodeBase, - NodeName, - TryStatmentNode, - UsingStatmentNode, - MixinNode, - ParameterNode + INode, + INodeBase, + MixinNode } from "./nodes"; export type { AccessChainItemKind, Scopes, DiagnosticSeverity, - ParameterNodeType, + ParameterNodeKind, NodeType, Nodes, Tokens, - FNNodeType, - ParseNodeType + FunctionNodeKind, + ParseNodeKind } from "./enums"; export type { ArrayValueType diff --git a/src/lib/emitter.ts b/src/lib/emitter.ts index af5a0d8..1df9f20 100644 --- a/src/lib/emitter.ts +++ b/src/lib/emitter.ts @@ -1,80 +1,83 @@ -import { AccessChainItemKind, Nodes, NodeType, ParameterNodeType } from "./enums"; +import { AccessChainItemKind, Nodes, NodeType, ParameterNodeKind } from "./enums"; import { occurrences } from "./utils/occurrences.js"; -import { assert, call, includes, randomVarName, undefined } from "./utils/util.js"; -import type { AccessChainItem, ClassNode, Node, ParameterNode, TryStatmentNode } from "./nodes"; - - +import { assert_type, random_var_name, should_not_happen, undefined } from "./utils/util.js"; +import { _echo } from "./utils/_echo.js"; +import { AccessChainItem, ConstantValueNode, ExpressionWithBodyAndArgsNode, ExpressionWithBodyAndSymbolNode, ExpressionWithBodyNode, IfStatmentMeta, IfStatmentNode, Node, ParameterNode, PrefixlessSymbolNode, TryStatmentMeta, TryStatmentNode } from "./nodes.js"; +import { MultiValueComparer } from "./utils/comparer.js"; +import type { IClassNode, INode } from "./nodes"; + + +const block_node_comparer = new MultiValueComparer([ + Nodes.FunctionExpression, + Nodes.AsyncFunctionExpression, + Nodes.GeneratorFunctionExpression, + Nodes.AsyncGeneratorFunctionExpression, + Nodes.IncludeStatment, + Nodes.KeepStatment, + Nodes.CodeBlock, + Nodes.TryStatment, + Nodes.IfStatment, + Nodes.DoWhileStatment, + Nodes.WhileStatment, + Nodes.ForOfStatment, + Nodes.ForRangeStatment, + Nodes.ForStatment, + Nodes.NamedIncludeStatment, +] as const); +const simple_node_comparer = new MultiValueComparer([ + Nodes.Array, + Nodes.ArgumentBindingExpression, + Nodes.AsyncFunctionExpression, + Nodes.AsyncGeneratorFunctionExpression, + Nodes.BigIntValue, + // Nodes.CallExpression, + Nodes.MemberAccessExpression, + Nodes.FalseValue, + Nodes.TrueValue, + Nodes.InfinityValue, + Nodes.NaNValue, + Nodes.NullValue, + Nodes.NumberValue, + // Nodes.RangeExpression, + Nodes.StringValue, + Nodes.Symbol, + Nodes.SymbolNoPrefix, + Nodes.UndefinedValue, + Nodes.ArgumentsObject, + Nodes.ExternalVariable +] as const); var __pretty = true; -var hasOwnProperty = {}.hasOwnProperty; -function assign(value: T, vals: Partial) { - var result = new Object(value) as T; - for (const key in value) { - if (call(hasOwnProperty, value, key)) { - result[key] = vals[key]!; - } - } - return result; -} -function as_expression(exp: Node) { +var commaAndWhitespace: string; +function as_expression(exp: INode): INode { if (exp.type === NodeType.Expression) { return exp; } else { - return { - name: Nodes.CallExpression, + return ExpressionWithBodyAndArgsNode(Nodes.CallExpression, [{ + name: exp.outerBody?.name ?? Nodes.FunctionExpression, type: NodeType.Expression, - body: [{ - name: exp.outerBody?.name ?? Nodes.FunctionExpression, - type: NodeType.Expression, - body: [exp] - }], - args: [] - } as Node; + body: [exp], + params: [], + locals: [], + nonlocals: [] + }], []); } } -function isFunctionNode(node: Node) { - return includes([ - Nodes.FunctionExpression, - Nodes.AsyncFunctionExpression, - Nodes.GeneratorFunctionExpression, - Nodes.AsyncGeneratorFunctionExpression, - Nodes.IncludeStatment, // Don't represent function node, but don't require any ; - Nodes.KeepStatment, - Nodes.CodeBlock, - Nodes.TryStatment, - Nodes.IfStatment - ] as const, node.name); +function isBlockNode(node: INode) { + return block_node_comparer.includes(node.name); } -function isSimple(node: Node) { - return includes([ - Nodes.Array, - Nodes.ArgumentBindingExpression, - Nodes.AsyncFunctionExpression, - Nodes.AsyncGeneratorFunctionExpression, - Nodes.BigIntValue, - Nodes.CallExpression, - Nodes.MemberAccessExpression, - Nodes.FalseValue, - Nodes.TrueValue, - Nodes.InfinityValue, - Nodes.NaNValue, - Nodes.NullValue, - Nodes.NumberValue, - Nodes.RangeValue, - Nodes.StringValue, - Nodes.Symbol, - Nodes.SymbolNoPrefix, - Nodes.UndefinedValue, - Nodes.ArgumentsObject, - Nodes.ExternalVariable - ] as const, node.name); +function isSimple(node: INode) { + return simple_node_comparer.includes(node.name); +} +function space() { + return __pretty ? " " : ""; } /** * @param {import("./parser").Node} node - * @param {any} [meta] + * @param {any} meta */ -export function _emit(node: Node, meta: any) { - var __text = "", elementParams: ParameterNode[], elementArgs: Node[], - length: number, index: number, body: string | Node[] | string[] | AccessChainItem[], __diff: boolean, +function _emit(node: INode, meta: EmitterOptions) { + var __text = "", elementParams: ParameterNode[], elementArgs: INode[], + length: number, index: number, body: readonly INode[] | readonly AccessChainItem[], __diff: boolean, quote: string, rquote: string, name: string, node_name: Nodes, _: any; /** * Inserts space into __text variable if text must be prettified @@ -92,25 +95,22 @@ export function _emit(node: Node, meta: any) { * Inserts indentation into __text variable */ function is() { - __pretty && (__text += meta.sp); + __pretty && (__text += meta.indentation); } /** * Lowers indentation by 4 spaces */ function li() { - meta.sp = meta.sp.slice(0, -4); + __pretty && (meta.indentation = meta.indentation.slice(0, -4)); } /** * Raises indentation by 4 spaces */ function ri() { - meta.sp += " "; + __pretty && (meta.indentation += " "); } function declare(name: T): T { - (__top.params ||= []).push({ - name, - type: ParameterNodeType.NoPrefix - }); + __top.params!.push(new ParameterNode(name, ParameterNodeKind.NoPrefix, undefined)); return name; } function pre_emit_body() { @@ -125,15 +125,15 @@ export function _emit(node: Node, meta: any) { ([__text, saved] = [saved, __text]); return saved; } - function emit_body(_body?: Node[]) { - _body ||= body as Node[]; + function emit_body(_body: readonly INode[] = body as readonly INode[]) { index = 0, length = _body.length; for (var assigned = 0; index < length; index++) { - if (_body[index].name !== Nodes.Empty) { + const element = _body[index]; + if (element.name !== Nodes.Empty) { assigned++; is(); - __text += _emit(_body[index], meta); - if ((index + 1 < length || __pretty) && !isFunctionNode(_body[index])) { + __text += _emit(element, meta); + if ((index + 1 < length || __pretty) && !isBlockNode(element)) { __text += ";"; } nl(); @@ -143,58 +143,34 @@ export function _emit(node: Node, meta: any) { sp(); } } - function emitChain(nodes: AccessChainItem[]): string { - function sp() { - __pretty && (___text += " "); - } - for (var index = 0, length = nodes.length, __text = ""; index < length; index++) { - var node = nodes[index], body = node.body, nodeKind = node.kind; - if (nodeKind === AccessChainItemKind.Head) { - __text += _emit(isSimple(body = as_expression(body)) && body.name !== Nodes.NumberValue ? body : - ({ name: Nodes.GroupExpression, type: NodeType.Expression, body: [body] }), meta); - } else if (nodeKind === AccessChainItemKind.Normal) { - __text += `.${ _emit(body, meta) }`; - } else if (nodeKind === AccessChainItemKind.Computed) { - __text += `[${ _emit(body, meta) }]`; - } else if (nodeKind === AccessChainItemKind.Optional || nodeKind === AccessChainItemKind.OptionalComputed) { - var randomName = randomVarName(), ___text = `(n(${ randomName }`; - declare(randomName); - sp(); - ___text += "="; - sp(); - ___text += __text + ")"; - sp(); - ___text += "?"; - sp(); - ___text += "u"; - sp(); - ___text += ":"; - sp(); - nodes.splice(0, index, { - kind: AccessChainItemKind.Head, - body: { - name: Nodes.SymbolNoPrefix, - type: NodeType.Expression, - symbolName: randomName - } - }); - nodes[1].kind = nodeKind === AccessChainItemKind.Optional ? - AccessChainItemKind.Normal : - AccessChainItemKind.Computed; - return `${ ___text }${ emitChain(nodes) })`; - } else { - nodes.splice(0, index, { - kind: AccessChainItemKind.Head, - body: { - name: Nodes.SymbolNoPrefix, - type: NodeType.Expression, - symbolName: `__na(${ __text })` - } - }); - nodes[1].kind = nodeKind === AccessChainItemKind.NormalNullAsserted ? - AccessChainItemKind.Normal : - AccessChainItemKind.Computed; - return emitChain(nodes); + function emitChain(nodes: AccessChainItem[], __text = "", index = 0): string { + for (; index < nodes.length; index++) { + const node = nodes[index], { body, kind } = node; + switch (kind) { + case AccessChainItemKind.Head: + __text += _emit(isSimple(body) && body.name !== Nodes.NumberValue ? as_expression(body) : + ExpressionWithBodyNode(Nodes.GroupExpression, [body]), meta); + break; + + case AccessChainItemKind.Normal: + __text += `.${ _emit(body, meta) }`; + break; + + + case AccessChainItemKind.Computed: + __text += `[${ _emit(body, meta) }]`; + break; + + case AccessChainItemKind.Optional: + case AccessChainItemKind.OptionalComputed: + var random_name = declare(random_var_name()); + node.kind = kind === AccessChainItemKind.Optional ? + AccessChainItemKind.Normal : + AccessChainItemKind.Computed; + return `(n(${ random_name }${ space() }=${ space() }${ __text })${ space() }?${ space() }u${ space() }:${ space() }${ emitChain(nodes, random_name, index) })`; + + default: + should_not_happen(); } } return __text; @@ -213,21 +189,18 @@ export function _emit(node: Node, meta: any) { } function emitCallExpression() { __text += "("; - elementArgs = node.args!; - length = elementArgs.length; - index = 0; - for (; index < length; index++) { - let node = elementArgs[index]; + const args = node.meta!.args as Node[]; + const length = args.length; + for (index = 0; index < length;) { + const node = args[index]; __text += _emit(node, meta); - if (index + 1 < length) { - __text += ","; - sp(); + if (++index < length) { + __text += commaAndWhitespace; } } __text += ")"; } - function simple_body_emit(_body?: Node[]) { - _body ||= body as Node[]; + function simple_body_emit(_body: readonly INode[] = body as readonly INode[]) { __text += "{"; _body.length && nl(); ri(); @@ -236,20 +209,18 @@ export function _emit(node: Node, meta: any) { length && is(); __text += "}"; } - meta ??= {}; - meta.sp ??= ""; - body = node.body!; + body = node.body! as INode[] | AccessChainItem[]; switch (node_name = node.name) { case Nodes.ArgumentsObject: __text += "arguments"; case Nodes.Empty: break; case Nodes.IncludeStatment: - assert(body); + assert_type(body); for (let index = 0, length = body.length; index < length; index++) { const element = body[index]; __text += _emit(element, meta); - if (__pretty && !isFunctionNode(body[index])) { + if (__pretty && !isBlockNode(element) && element.type !== NodeType.Ephemerial) { __text += ";"; } if (index < length - 1) { @@ -263,33 +234,34 @@ export function _emit(node: Node, meta: any) { case Nodes.GeneratorFunctionExpression: case Nodes.AsyncFunctionExpression: case Nodes.FunctionExpression: - assert(body); + assert_type(body); __text += "function"; if (node_name === Nodes.GeneratorFunctionExpression) { __text += "*"; } - if (node.symbolName) { - __text += ` $${ node.symbolName }`; + if (node.symbol) { + __text += ` $${ node.symbol }`; } else sp(); __text += "("; var pre_emitted = pre_emit_body(); - elementParams = node.params ||= []; + elementParams = node.params ??= []; length = elementParams.length; index = 0; - var hasBody = body.length > 0 || elementParams.some(element => !!element.default || element.type === ParameterNodeType.Rest); + var hasBody = body.length > 0; for (; index < length; index++) { - let node = elementParams[index]; - var namae = node.name; - if (node.type === ParameterNodeType.Rest) { + const element = elementParams[index], namae = element.name; + if (!!element.default) hasBody = true; + if (element.kind === ParameterNodeKind.Rest) { + hasBody = true; break; } if (typeof namae === "string") { - __text += node.name = name = `${ node.type === ParameterNodeType.NoPrefix ? "" : "$" }${ namae || randomVarName() }`; + __text += element.name = name = `${ element.kind === ParameterNodeKind.NoPrefix ? "" : "$" }${ namae || random_var_name() }`; } else { throw "Destructing parameters are not supported yet"; //__text += _emit(name as unknown as Node, meta); } - if (index + 1 < length && elementParams[index + 1].type !== ParameterNodeType.Rest) { + if (index + 1 < length && elementParams[index + 1].kind !== ParameterNodeKind.Rest) { __text += ","; sp(); } @@ -299,9 +271,9 @@ export function _emit(node: Node, meta: any) { __text += "{"; ri(); hasBody && nl(); - if (node.locals && node.locals.length) { + if (node.locals?.length) { is(); - __text += `var ${ node.locals.map(local => `$${ local }`).join(`,${ __pretty ? " " : "" }`) };`; + __text += `var ${ node.locals.map(local => `$${ local }`).join(commaAndWhitespace) };`; nl(); } if (node_name === Nodes.AsyncFunctionExpression || node_name === Nodes.AsyncGeneratorFunctionExpression) { @@ -319,15 +291,13 @@ export function _emit(node: Node, meta: any) { name = ""; var hadRestParam = false; for (; index < length; index++) { - let node = elementParams[index]; - namae = node.name; + const node = elementParams[index], namae = node.name; if (hadRestParam) { if (typeof namae === "string") { is(); - __text += node.name = name = `${ node.type === ParameterNodeType.NoPrefix ? "" : "$" }${ namae || randomVarName() }`; + __text += node.name = name = `${ node.kind === ParameterNodeKind.NoPrefix ? "" : "$" }${ namae || random_var_name() }`; if (node.default) { - var _tempVar = randomVarName(); - declare(_tempVar); + const _tempVar = declare(random_var_name()); sp(); __text += "="; sp(); @@ -342,6 +312,7 @@ export function _emit(node: Node, meta: any) { __text += _emit(node.default, meta); sp(); __text += ":"; + sp(); __text += `${ _tempVar })`; } else { sp(); @@ -355,10 +326,10 @@ export function _emit(node: Node, meta: any) { //__text += _emit(name as unknown as Node, meta); } } - if (node.type === ParameterNodeType.Rest) { + if (node.kind === ParameterNodeKind.Rest) { hadRestParam = true; is(); - __text += `var ${ `$${ namae || randomVarName() }` }`; + __text += `var ${ `$${ namae || random_var_name() }` }`; sp(); __text += "="; sp(); @@ -377,11 +348,10 @@ export function _emit(node: Node, meta: any) { } __text += `)${ index + 1 < length ? "," : ";" }`; nl(); - hadRestParam = true; } if (node.default && !hadRestParam) { is(); - __text += name || (name = typeof node.name === "string" ? node.name : _emit(node.name, meta)); + __text += name ||= typeof node.name === "string" ? node.name : _emit(node.name, meta); sp(); __text += "==="; sp(); @@ -441,121 +411,110 @@ export function _emit(node: Node, meta: any) { __text += __pretty ? "Infinity" : "1/0"; break; - case Nodes.Symbol: - __text += `$${ node.symbolName }`; + case Nodes.ThisObject: + __text += "this"; break; - case Nodes.SymbolNoPrefix: - __text += node.symbolName; + case Nodes.Symbol: + __text += `$${ node.symbol }`; break; + case Nodes.RegularExpression: + case Nodes.ExternalVariable: + case Nodes.SymbolNoPrefix: case Nodes.NumberValue: - assert(body); - __text += body; + __text += node.symbol!; break; case Nodes.ThrowExpression: - assert<[Node]>(body); + assert_type<[INode]>(body); __text += `__throw(${ _emit(body[0], meta) })`; break; - case Nodes.StringValue: - assert(body); + case Nodes.StringValue: { + const body = node.symbol!; __diff = occurrences(body, "'") >= occurrences(body, '"'), quote = __diff ? '"' : "'", rquote = __diff ? "'" : '"'; __text += `${ quote }${ body.replace("\\" + rquote, rquote).replace("\n", "\\n") }${ quote }`; break; + } case Nodes.PipelineExpression: - assert<[Node, Node]>(body); - name = randomVarName(); + assert_type<[INode, INode]>(body); + name = random_var_name(); __text += _emit({ name: Nodes.CallExpression, type: NodeType.Expression, body: [{ name: node.outerBody?.name ?? Nodes.FunctionExpression, // async? generator? function node type: NodeType.Expression, - params: [{ - name, - type: ParameterNodeType.Normal - }], + params: [new ParameterNode(name, ParameterNodeKind.Normal, undefined)], body: [{ name: Nodes.ReturnStatment, type: NodeType.Statment, body: [body[0]] }] - }], - args: [body[1]] - } as Node, __pretty); + }], args: [body[1]] + }, meta); break; case Nodes.CallExpression: - assert(body); + assert_type<[Node]>(body); __text += _emit(body[0], meta); emitCallExpression(); break; - case Nodes.GroupExpression: - assert(body); - __text += "("; - length = body.length; - index = 0; - for (; index < length; index++) { - let node = body[index]; - __text += _emit(as_expression(node), meta); - if (index + 1 < length) { - __text += ","; - sp(); - } + case Nodes.OptionalCallExpression: + { + assert_type<[Node]>(body); + const random_name = declare(random_var_name()); + __text += `(n(${ random_name }`; + sp(); + __text += "="; + sp(); + __text += `${ _emit(body[0], meta) })`; + sp(); + __text += "?"; + sp(); + __text += "u"; + sp(); + __text += ":"; + sp(); + __text += random_name; + emitCallExpression(); + __text += ")"; + break; } - __text += ")"; + + case Nodes.GroupExpression: + assert_type(body); + __text += `(${ body.map(node => _emit(as_expression(node), meta)).join(commaAndWhitespace) })`; break; case Nodes.ReturnStatment: - assert<[Node]>(body); + assert_type<[INode]>(body); __text += "return " + _emit(as_expression(body[0]), meta); break; - case Nodes.RangeValue: - type NodeWithStringBody = Node & { body: string; }; - assert<[NodeWithStringBody, NodeWithStringBody]>(body); - var s = +body[0].body, e = +body[1].body; - __text += s === e ? "(function*(){})()" : - `(function*(){for(var i=${ s },e=${ e };i${ s > e ? ">" : "<" }e;i${ s > e ? "--" : "++" })yield i})()`; - break; - - case Nodes.ExternalVariable: - assert(body); - __text += body; + case Nodes.RangeExpression: + assert_type<[INode, INode]>(body); + __text += `(function*(){for(var i=${ _emit(body[0], meta) },e=${ _emit(body[1], meta) };i(body); + assert_type<[INode, INode]>(body); __text += _emit(body[0], meta); sp(); __text += "="; sp(); case Nodes.ExponentiationExpression: - assert<[Node, Node]>(body); + assert_type<[INode, INode]>(body); __text += `Math.pow(${ _emit(body[0], meta) },`; sp(); __text += `${ _emit(body[1], meta) })`; break; case Nodes.AssignmentExpression: - assert<[Node, Node]>(body); - // if (~[Nodes.OptionalMemberAccessExpression, Nodes.OptionalComputedMemberAccessExpression].indexOf(body[0].name)) { - // throw "The left-hand side of an assignment expression may not be an optional property access."; - // } - // if (~[Nodes.Symbol, Nodes.ComputedMemberAccessExpression, Nodes.MemberAccessExpression].indexOf(body[0].name)) { - // } - __text += _emit(body[0], meta); - sp(); - __text += "="; - sp(); - __text += _emit(as_expression(body[1]), meta); - break; - case Nodes.AddictionAssignmentExpression: case Nodes.SubstractionAssignmentExpression: case Nodes.MultiplicationAssignmentExpression: @@ -571,6 +530,14 @@ export function _emit(node: Node, meta: any) { case Nodes.BitwiseLeftShiftAssignmentExpression: case Nodes.BitwiseRightShiftAssignmentExpression: case Nodes.BitwiseUnsignedRightShiftAssignmentExpression: + assert_type<[INode, INode]>(body); + __text += _emit(body[0], meta); + sp(); + __text += node.symbol; + sp(); + __text += _emit(as_expression(body[1]), meta); + break; + case Nodes.AddictionExpression: case Nodes.SubstractionExpression: case Nodes.MultiplicationExpression: @@ -587,28 +554,29 @@ export function _emit(node: Node, meta: any) { case Nodes.BitwiseLeftShiftExpression: case Nodes.BitwiseRightShiftExpression: case Nodes.BitwiseUnsignedRightShiftExpression: - case Nodes.LooseComparison: - case Nodes.StrictComparison: - case Nodes.LooseNegativeComparison: - case Nodes.StrictNegativeComparison: + case Nodes.LooseEquality: + case Nodes.StrictEquality: + case Nodes.LooseInequality: + case Nodes.StrictInequality: case Nodes.LessThanOrEqual: case Nodes.GreaterThanOrEqual: case Nodes.LessThan: case Nodes.GreaterThan: - assert<[Node, Node]>(body); - __text += _emit(body[0], meta); + assert_type<[INode, INode]>(body); + __text += _emit(as_expression(body[0]), meta); sp(); - __text += node.symbolName; + __text += node.symbol; sp(); __text += _emit(as_expression(body[1]), meta); break; case Nodes.IfStatment: - assert(body); + assert_type>(node); + assert_type(body); __text += "if"; sp(); __text += "("; - __text += _emit(as_expression(node.args as unknown as Node), meta); + __text += _emit(as_expression(node.meta.condition), meta); __text += ")"; sp(); __text += "{"; @@ -619,15 +587,15 @@ export function _emit(node: Node, meta: any) { li(); bodyLength && is(); __text += "}"; - if (node.else || node.elseif) { + if (node.meta.else || node.meta.elseif) { sp(); __text += "else"; - if (node.elseif) { - __text += ` ${ _emit(node.elseif, meta) }`; + if (node.meta.elseif) { + __text += ` ${ _emit(node.meta.elseif, meta) }`; } else { sp(); __text += "{"; - bodyLength = (body = node.else!.body!).length; + bodyLength = (body = node.meta.else.body as Node[]).length; bodyLength && nl(); ri(); emit_body(); @@ -639,8 +607,8 @@ export function _emit(node: Node, meta: any) { break; case Nodes.YieldExpression: - assert(_); - assert<[Node]>(body); + assert_type(_); + assert_type<[INode]>(body); __text += "yield"; if (_ = node.outerBody!.name === Nodes.AsyncGeneratorFunctionExpression) { sp(); @@ -656,8 +624,8 @@ export function _emit(node: Node, meta: any) { break; case Nodes.YieldFromExpression: - assert(_); - assert<[Node]>(body); + assert_type(_); + assert_type<[INode]>(body); __text += "yield*"; if (_ = node.outerBody!.name === Nodes.AsyncGeneratorFunctionExpression) { sp(); @@ -671,8 +639,7 @@ export function _emit(node: Node, meta: any) { break; case Nodes.AwaitExpression: - assert(_); - assert<[Node]>(body); + assert_type<[INode]>(body); __text += "yield"; if (_ = node.outerBody!.name === Nodes.AsyncGeneratorFunctionExpression) { sp(); @@ -688,57 +655,36 @@ export function _emit(node: Node, meta: any) { break; case Nodes.MemberAccessExpression: - assert(body); + assert_type(body); __text += emitChain(body); break; - // case Nodes.MemberAccessExpression: - // assert<[Node, Node]>(body); - // __text += _emit(body[0], meta) + "."; - // if (body[1].name !== Nodes.Symbol && body[1].name !== Nodes.SymbolNoPrefix) { - // (body[1].body![0] as Node).name = Nodes.SymbolNoPrefix; - // } - // if (body[1].name === Nodes.Symbol) { - // body[1].name = Nodes.SymbolNoPrefix; - // } - // __text += _emit(body[1], meta); - // // console.log(__text); - // break; - - // case Nodes.ComputedMemberAccessExpression: - // assert<[Node, Node]>(body); - // __text += `${ _emit(body[0], meta) }[${ _emit(body[1], meta) }]`; - // // console.log(__text); - // break; - case Nodes.Array: - assert(body); - __text += `[${ body.map(node => _emit(as_expression(node), meta)).join(`,${ __pretty ? " " : "" }`) }]`; + assert_type(body); + __text += `[${ body.map(node => _emit(as_expression(node), meta)).join(commaAndWhitespace) }]`; break; case Nodes.ArgumentBindingExpression: - assert<[Node]>(body); + assert_type<[INode]>(body); __text += `__bind(${ _emit(body[0], meta) },`; sp(); __text += `u,`; sp(); - __text += `${ node.args!.map(node => _emit(as_expression(node), meta)).join(`,${ __pretty ? " " : "" }`) })`; + __text += `${ node.body!.map(node => _emit(as_expression(node as INode), meta)).join(commaAndWhitespace) })`; break; case Nodes.LiteralLogicalNotExpression: - assert<[Node]>(body); - assert(_); + assert_type<[INode]>(body); _ = as_expression(body[0]); __text += `!${ isSimple(_) ? _emit(_, meta) : `(${ _emit(_, meta) })` }`; break; case Nodes.KeepStatment: - assert(body); + assert_type(body); elementArgs = node.args!; bodyLength = body.length; var declared = elementArgs.map((arg, index) => { - var name = randomVarName(); - declare(name); + const name = declare(random_var_name()); index && is(); __text += name; sp(); @@ -750,16 +696,14 @@ export function _emit(node: Node, meta: any) { }); emit_body(); __pretty || (__text += ";"); - length = elementArgs.length; - for (var index = 0; index < length; index++) { + for (var index = 0; index < elementArgs.length; index++) { index && nl(); is(); - var tempVar = declared[index]; __text += _emit(elementArgs[index], meta); sp(); __text += "="; sp(); - __text += tempVar + ";"; + __text += declared[index] + ";"; } break; @@ -768,72 +712,55 @@ export function _emit(node: Node, meta: any) { break; case Nodes.NullAssertionExpression: - assert<[Node]>(body); - __text += `__na(${ _emit(as_expression(body[0]), meta) })`; + assert_type<[INode]>(body); + __text += _emit(as_expression(body[0]), meta); break; case Nodes.NewExpression: - assert<[Node]>(body); + assert_type<[INode]>(body); __text += "new " + _emit(as_expression(body[0]), meta); break; case Nodes.TryStatment: - assert(node); - assert(body); - __text += "try"; - sp(); - namae = node.else ? declare(randomVarName()) : ""; - simple_body_emit(namae ? [{ - name: Nodes.AssignmentExpression, - type: NodeType.Expression, - body: [ - { name: Nodes.SymbolNoPrefix, type: NodeType.Expression, symbolName: namae }, - { name: Nodes.TrueValue, type: NodeType.Expression } - ] - } as Node].concat(body || []) : undefined); - if (node.catch) { + { + assert_type>(node); + assert_type(body); + __text += "try"; sp(); - __text += "catch"; - sp(); - __text += `(${ node.catch[0] ? `$${ node.catch[0] }` : "_" })`; - sp(); - simple_body_emit(node.else ? [{ - name: Nodes.AssignmentExpression, - type: NodeType.Expression, - body: [ - { name: Nodes.SymbolNoPrefix, type: NodeType.Expression, symbolName: namae }, - { name: Nodes.FalseValue, type: NodeType.Expression } - ] - } as Node].concat(node.catch[1]) : node.catch[1]); - } - if (node.finally || namae) { - sp(); - __text += "finally"; - sp(); - - simple_body_emit(namae ? [{ - name: Nodes.TryStatment, - type: NodeType.Statment, - body: [{ - name: Nodes.IfStatment, - type: NodeType.Statment, - body: node.else, - args: { name: Nodes.SymbolNoPrefix, type: NodeType.Expression, symbolName: namae } - }], - finally: node.finally || [] - } as TryStatmentNode | { else?: Node[], catch?: TryStatmentNode["catch"]; } as unknown as Node] : node.finally); + const name = node.meta.else ? declare(random_var_name()) : ""; + simple_body_emit(name ? [ExpressionWithBodyAndSymbolNode(Nodes.AssignmentExpression, [ + PrefixlessSymbolNode(name), + ConstantValueNode(Nodes.TrueValue) + ], "="), ...body] : body); + if (node.meta.catch) { + sp(); + __text += "catch"; + sp(); + __text += `(${ node.meta.catch.symbol ? `$${ node.meta.catch.symbol }` : "_" })`; + sp(); + simple_body_emit(node.meta.else ? [ExpressionWithBodyAndSymbolNode(Nodes.AssignmentExpression, [ + PrefixlessSymbolNode(name), + ConstantValueNode(Nodes.FalseValue) + ], "="), ...node.meta.catch.body as Node[] ?? []] : node.meta.catch.body as Node[]); + } + if (node.meta.finally || name) { + sp(); + __text += "finally"; + sp(); + const $if = IfStatmentNode(node.meta.else, node.outerBody as Node, PrefixlessSymbolNode(name)); + simple_body_emit(name ? [TryStatmentNode([$if], undefined!, undefined!, node.meta.finally ?? [], node.outerBody as never)] : node.meta.finally); + } + break; } - break; case Nodes.SymbolShortcut: - assert(body); - __text += `Symbol.${ body }`; + __text += `Symbol.${ node.symbol! }`; break; case Nodes.WhileStatment: __text += "while"; sp(); - __text += `(${ _emit(node.args![0], meta) })`; + __text += `(${ _emit(as_expression(node.args![0]), meta) })`; sp(); simple_body_emit(); break; @@ -845,7 +772,7 @@ export function _emit(node: Node, meta: any) { sp(); __text += "while"; sp(); - __text += `(${ _emit(node.args![0], meta) })`; + __text += `(${ _emit(as_expression(node.args![0]), meta) })`; break; case Nodes.ImportExpression: @@ -853,36 +780,90 @@ export function _emit(node: Node, meta: any) { emitCallExpression(); break; + case Nodes.ForRangeStatment: + { + const [from, to, $as] = node.args as [Node, Node, Node]; + const as = _emit($as, meta); + __text += "for"; + sp(); + __text += "(var"; + sp(); + __text += as; + sp(); + __text += "="; + sp(); + __text += _emit(from, meta); + if (isSimple(to)) { + __text += ";"; + sp(); + __text += as; + sp(); + __text += "<"; + sp(); + __text += _emit(to, meta); + } else { + __text += ","; + sp(); + const _ = random_var_name(); + __text += _; + sp(); + __text += "="; + sp(); + __text += _emit(to, meta) + ";"; + sp(); + __text += as; + sp(); + __text += "<"; + sp(); + __text += _; + } + __text += ";"; + sp(); + __text += as + "++)"; + sp(); + simple_body_emit(); + } + break; + case undefined: { - const sp = meta.sp + " "; + const sp = meta.indentation + " "; __text += `/*\n${ sp }Cannot emit undefined, has something gone wrong?` + - `\n${ sp }Stack trace:\n${ sp + Error().stack?.replace(/\n/g, `\n${ sp }`) }\n${ meta.sp }*/`; + `\n${ sp }Stack trace:\n${ sp + Error().stack?.replace(/\n/g, `\n${ sp }`) }\n${ meta.indentation }*/`; break; } + case Nodes.Shebang: + __text += "#!" + node.symbol; + break; + case Nodes.ClassExpression: - assert(node); + assert_type(node); console.log(node); default: __text += `/*cannot emit node Nodes[${ node_name }]*/`; break; } - assert(__text.toString()); return __text; } -export interface EmitterOptions { +export interface IEmitterOptions { pretty?: boolean; + forgetShebang?: boolean; url?: string; } -var __top: Node; +var __top: INode; +class EmitterOptions implements IEmitterOptions { + indentation: string = ""; + constructor(public readonly url: string | undefined) { } +} /** * @param {import("./parser").Node} node * @param {import("./emitter").EmitterOptions} opts */ -export function emit(node: Node, { pretty = false, url = "" }: EmitterOptions = {}) { +export function emit(node: INode, { pretty = false, forgetShebang = true, ...other }: IEmitterOptions = {}) { __pretty = pretty; + commaAndWhitespace = ',' + (__pretty ? " " : ""); + const options = new EmitterOptions(other.url); - // inspectLog(node); - return _emit(__top = node, { url }); + return (!forgetShebang && node.meta!.shebang && _emit(node.meta!.shebang as INode, options) || "") + _emit(__top = node, options); } diff --git a/src/lib/enums.ts b/src/lib/enums.ts index 395c842..d37c8c4 100644 --- a/src/lib/enums.ts +++ b/src/lib/enums.ts @@ -66,14 +66,14 @@ export const enum Nodes { LiteralLogicalNotExpression, ListComprehensionExpression, IncludeStatment, - RangeValue, + RangeExpression, // May be used for TS InterfaceStatment, TypeExpression, TypeStatment, ReturnStatment, - LooseComparison, - StrictComparison, + LooseEquality, + StrictEquality, LessThanOrEqual, GreaterThanOrEqual, LessThan, @@ -96,19 +96,41 @@ export const enum Nodes { TryStatment, WhileStatment, DoWhileStatment, - LooseNegativeComparison, - StrictNegativeComparison, + LooseInequality, + StrictInequality, ImportExpression, NamedIncludeStatment, - SymbolShortcut + SymbolShortcut, + ObjectExpression, + Decorator, + ForRangeStatment, + ForOfStatment, + RegularExpression, + Shebang, + CatchStatment, + InExpression, + InstanceOfExpression, + ContainsExpression, + VoidExpression, + DeleteExpression, + TypeOfExpression, + PrefixIncrementExpression, + PrefixDecrementExpression, + PlusExpression, + NegatationExpression, + BitwiseRevertExpression, + PostfixIncrementExpression, + PostfixDecrementExpression, + TernaryExpression, + ThisObject } -export const enum FNNodeType { +export const enum FunctionNodeKind { Sync, Generator, Async, AsyncGenerator } -export const enum ParameterNodeType { +export const enum ParameterNodeKind { Normal, Rest, Empty, @@ -119,7 +141,8 @@ export const enum ParameterNodeType { */ export const enum NodeType { Statment, - Expression + Expression, + Ephemerial } export const enum Scopes { Sync, @@ -132,22 +155,19 @@ export const enum AccessChainItemKind { Normal, Computed, Optional, - OptionalComputed, - NormalNullAsserted, - ComputedNullAsserted + OptionalComputed } export const enum Tokens { - String, - Number, - Symbol, - Operator, - Special, - Regex, - Whitespace, - Comment, - Keyword, - Range, - MultilineComment + String = 0x0000001, + Number = 0x0000002, + Symbol = 0x0000004, + Operator = 0x00000008, + Whitespace = 0x00000010, + Comment = 0x00000020, + MultilineComment = 0x00000040, + Keyword = 0x00000080, + /**@deprecated */ + Range = 0x00000100 } export const enum DiagnosticSeverity { Info, @@ -156,10 +176,16 @@ export const enum DiagnosticSeverity { Error, FatalError } -export const enum ParseNodeType { +export const enum ParseNodeKind { Expression = "expression", String = "string", Number = "number", Range = "range", Indentifier = "indentifier" +} +export const enum ObjectBodyNodeKind { + Normal, + Setter, + Getter, + Rest } \ No newline at end of file diff --git a/src/lib/keywords.ts b/src/lib/keywords.ts deleted file mode 100644 index a2f9213..0000000 --- a/src/lib/keywords.ts +++ /dev/null @@ -1,743 +0,0 @@ -import { Stream, TokenStream } from "./utils/stream.js"; -import { - isArray, - include, - undefined, - SyntaxError, - randomVarName, - includes, - error_unexcepted_token, - abruptify, - assert -} from "./utils/util.js"; -import { _echo } from "./utils/_echo.js"; -import { FNNodeType, Nodes, ParameterNodeType, NodeType, AccessChainItemKind, Tokens, DiagnosticSeverity } from "./enums"; -import { lex } from "./lexer.js"; -import { Diagnostic } from "./utils/diagnostics.js"; -import { meberAccessOperators, end_expression } from "./utils/constants.js"; -import { _parseMemberAccess } from "./parsers/member-access.js"; -import { downgrade_next, advance_next } from "./utils/advancers.js"; -import { parse_body } from "./parsers/body-parser.js"; -import { __cache, main_parse, promises, _parse, diagnostics, parse_expression, __parse, __used } from "./parser.js"; -import { __external_var_creator } from "./parsers/__external_var.js"; -import { parse_call_expression } from "./parsers/call-expression.js"; -import type { ParseMeta, Node, ParameterNode, ClassNode, AccessChainItem, UsingStatmentNode } from "./nodes"; - -interface KeywordParsers { - [name: string]: (stream: TokenStream, meta: ParseMeta, ...args: any[]) => Node; -} -export var keywordsHandlers = { - /** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {import("./parser").ParseMeta} meta - */ - nonlocal(stream, meta) { - if (!meta.outer.nonlocals) { - throw "Nonlocal statment: this statment cannot be used in top-level scope!"; - } - var next = advance_next(stream, "symbol"); - if (next[0] !== Tokens.Symbol) { - error_unexcepted_token(next); - } - meta.outer.nonlocals.push(next[1]); - meta.outer.locals = (meta.outer.locals as string[]).filter(sym => sym !== next[1]); - return { - name: Nodes.Empty, - type: NodeType.Expression - }; - }, - /** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {import("./parser").ParseMeta} meta - */ - include(stream, meta) { - var next = advance_next(stream, `string" | "{`), node: Node, file: URL; - if (next[0] === Tokens.String) { - node = { - name: Nodes.IncludeStatment, - type: NodeType.Expression - }; - } else if (next[0] === Tokens.Special && next[1] === "{") { - node = { - name: Nodes.NamedIncludeStatment, - type: NodeType.Statment - }; - next = advance_next(stream, "}"); - if (next[0] !== Tokens.Special || next[1] !== "}") { - error_unexcepted_token(next); - } - next = advance_next(stream, "from"); - if (next[0] !== Tokens.Keyword || next[1] !== "from") { - error_unexcepted_token(next); - } - next = advance_next(stream, "string"); - if (next[0] !== Tokens.String) { - error_unexcepted_token(next); - } - } else { - error_unexcepted_token(next); - } - file = new URL(next[1], meta.filename); - // var _next = advance_next(stream, ";"); - // if (_next[0] !== Tokens.Special || _next[1] !== ";") { - // throw "Include statment must be follewed by a semicolon!"; - // } - var included = include(file, __cache); - /** - * @param {string} included - */ - function _(included: string) { - var parsed = main_parse(Stream(lex(included)), file.href, meta.outer); - node.body = parsed; - return parsed; - } - node.body = (typeof included !== "string" ? promises[promises.push(included.then(_)) - 1] : _(included)) as any; - return node; - }, - /** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {import("./parser").ParseMeta} meta - */ - if(stream, meta) { - var next = advance_next(stream, "("); - if (next[0] !== Tokens.Special || next[1] !== "(") { - error_unexcepted_token(next); - } - var expression = _parse(next = advance_next(stream, end_expression), stream, meta), expressions: Node[]; - // console.log(expression); - if (!isArray(expression)) { - next = advance_next(stream, ")"); - expression = [expression]; - } else - next = stream.next; - if (next[0] !== Tokens.Special || next[1] !== ")") { - error_unexcepted_token(next); - } - next = advance_next(stream, "{"); - if (next[0] === Tokens.Special && next[1] === "{") { - expressions = parse_body(stream, meta); - } else { - expressions = [_parse(next, stream, meta) as Node]; - } - var node = { - name: Nodes.IfStatment, - type: NodeType.Statment, - body: expressions, - args: expression[0] as unknown, - else: undefined, - elseif: undefined - // /** - // * @param {boolean} pretty - // * @param {string} whitespace - // */ - // toString(pretty: boolean, whitespace: string) { - // if (pretty) { - // return `if (${ expression }) ${ impl ? expressions.toString(true) : `{\n${ whitespace + " " }${ expressions.toString(true, whitespace + " ") }${ whitespace }\n}` }`; - // } else { - // return `if(${ expression })${ impl ? expressions.toString(false) : `{${ expressions.toString(false) }}` }`; - // } - // } - } as Node; - try { - next = advance_next(stream, "else"); - } catch (error) { - return node; - } - if (next[0] === Tokens.Keyword && next[1] === "else") { - next = advance_next(stream, "if"); - if (next[0] === Tokens.Keyword && next[1] === "if") { - var parsed = keywordsHandlers.if(stream, meta); - if (isArray(parsed)) { - node.elseif = parsed[0]; - return [node]; - } else { - node.elseif = parsed; - return node; - } - } else if (next[0] === Tokens.Special && next[1] === "{") { - node.else = { - name: Nodes.ElseStatment, - type: NodeType.Statment, - body: parse_body(stream, meta) - }; - return node; - } else { - error_unexcepted_token(next); - } - } else { - return [node]; - } - }, - true() { - return { - name: Nodes.TrueValue, - type: NodeType.Expression - }; - }, - false() { - return { - name: Nodes.FalseValue, - type: NodeType.Expression - }; - }, - undefined() { - return { - name: Nodes.UndefinedValue, - type: NodeType.Expression - }; - }, - null() { - return { - name: Nodes.NullValue, - type: NodeType.Expression - }; - }, - NaN() { - return { - name: Nodes.NaNValue, - type: NodeType.Expression - }; - }, - Infinity() { - return { - name: Nodes.InfinityValue, - type: NodeType.Expression - }; - }, - arguments() { - return { - name: Nodes.ArgumentsObject, - type: NodeType.Expression - }; - }, - /** - * @param {import("./utils/stream.js").TokenStream} stream - */ - interface(stream) { - var prefix = _echo("Interface statment:"); - var next = advance_next(stream, "symbol", prefix); - if (next[0] !== Tokens.Symbol) { - error_unexcepted_token(next); - } - next = advance_next(stream, "{", prefix); - if (next[0] !== Tokens.Special || next[1] !== "{") { - error_unexcepted_token(next); - } - error_unexcepted_token([Tokens.Keyword, "interface"]); - }, - /** - * @param {import("./utils/stream.js").TokenStream} stream - */ - async(stream, meta) { - var next = advance_next(stream, "fn", "Async(Generator?)Function statment:"); - if (next[0] !== Tokens.Keyword || next[1] !== "fn") { - error_unexcepted_token(next); - } - return keywordsHandlers.fn(stream, { filename: meta.filename, outer: null! }, FNNodeType.Async); - }, - /** - * @param {import("./utils/stream.js").TokenStream} stream - */ - not(stream, meta) { - return abruptify({ - name: Nodes.LiteralLogicalNotExpression, - type: NodeType.Expression - }, _parse(advance_next(stream, end_expression), stream, meta)); - }, - /** - * @param {import("./utils/stream.js").TokenStream} stream - */ - __external_var: __external_var_creator(NodeType.Expression), - /** - * @param {import("./utils/stream.js").TokenStream} stream - */ - __external: __external_var_creator(NodeType.Statment), - /** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {import("./parser").ParseMeta} meta - */ - fn(stream, meta, type: FNNodeType = FNNodeType.Sync) { - type _1 = "Function statment:"; - type _2 = `Generator${ _1 }`; - type _3 = `Async${ _1 }`; - type _4 = `Async${ _2 }`; - var _prefix = _echo("Function statment:"); - var _ = [ - _prefix, - "Generator" + _prefix, - "Async" + _prefix - ] as string[] as [_1, _2, _3, _4]; - _[3] = "Async" + _[1] as _4; - var prefix = _[type]; - var name = ""; - var params = [] as ParameterNode[]; - var next = advance_next(stream, 'symbol" | "(', prefix); - var paramType: ParameterNodeType; - var hasRest = false; - var index: number; - if (next[0] === Tokens.Operator && next[1] === "*") { - if (type === FNNodeType.Sync) { - type = FNNodeType.Generator; - } else if (type === FNNodeType.Async) { - type = FNNodeType.AsyncGenerator; - } - next = advance_next(stream, "symbol", prefix); - } else if (type === FNNodeType.Generator || type === FNNodeType.AsyncGenerator) { - throw `${ prefix } Unexcepted token '${ next[1] }' ('*' excepted)`; - } - if (next[0] === Tokens.Symbol) { - name = next[1]; - next = advance_next(stream, "(", prefix); - } - if (next[0] !== Tokens.Special && next[1] !== "(") { - error_unexcepted_token(next); - } - var node = { - name: type as unknown, - type: NodeType.Expression, - params, - symbolName: name, - locals: [] as string[], - nonlocals: [] as string[] - } as Node; - var innerMeta = { outer: node, filename: meta.filename } as ParseMeta; - for (; ;) { - paramType = ParameterNodeType.Normal; - next = advance_next(stream, "symbol", prefix); - if (next[0] === Tokens.Special && next[1] === ",") { - params.push({ - name: "", - type: ParameterNodeType.Empty - }); - continue; - } - if (next[0] === Tokens.Operator && next[1] === "...") { - if (hasRest) { - throw SyntaxError(`Cannot append second rest parameter to ${ name ? `function ${ name }` : "anonymous function" }`); - } - hasRest = true; - paramType = ParameterNodeType.Rest; - next = advance_next(stream, "symbol", prefix); - } - if (next[0] === Tokens.Symbol) { - var paramNode = { - name: next[1], - type: paramType - } as ParameterNode; - params.push(paramNode); - next = advance_next(stream, ",", prefix); - - if (next[0] === Tokens.Operator && next[1] === "=") { - var parsed = _parse(advance_next(stream, end_expression, prefix), stream, innerMeta); - if (isArray(parsed)) { - parsed = parsed[0]; - next = stream.next; - } else { - next = advance_next(stream, end_expression, prefix); - } - paramNode.default = parsed; - } - - if (next[0] === Tokens.Special && next[1] === ")") { - break; - } else if (next[0] !== Tokens.Special && next[1] !== ",") { - error_unexcepted_token(next); - } - } else if (next[0] === Tokens.Special && next[1] === ",") { - params.push({ - name: "", - type: paramType || ParameterNodeType.Empty - }); - } else if (next[0] === Tokens.Special && next[1] === ")") { - break; - } else { - error_unexcepted_token(next); - } - } - index = params.length; - for (; index && params[--index].type === ParameterNodeType.Empty;) - params.pop(); - // apply(console.log, console, params); // IE 8 is very old and strange shit - next = advance_next(stream, "{", prefix); - if (next[0] === Tokens.Operator && next[1] === "=>") { - next = advance_next(stream, end_expression, prefix); - if (next[0] !== Tokens.Special && next[1] !== "{") { - return abruptify(node, abruptify({ - name: Nodes.ReturnStatment, - type: NodeType.Statment - }, _parse(next, stream, innerMeta))); - } - } - if (next[0] !== Tokens.Special && next[1] !== "{") { - error_unexcepted_token(next); - } - node.body = parse_body(stream, innerMeta); - return node; - }, - class(stream, meta) { - const type = meta.ie ? NodeType.Expression : NodeType.Statment; - const node = { - name: Nodes.ClassExpression, - type, - getters: [], - settets: [], - props: [], - methods: [], - privateGetters: [], - privateSettets: [], - privateMethods: [], - privateProps: [], - mixins: [] - } as ClassNode; - const prefix = _echo("Class expression:"); - var next = advance_next(stream, ["{", "symbol", "extends"].join('" | "'), prefix); - if (next[0] === Tokens.Symbol) { - node.symbolName = next[1]; - next = advance_next(stream, end_expression, prefix); - } - if (next[0] === Tokens.Keyword && next[1] === "extends") { - var extender = _parse(advance_next(stream, end_expression, prefix), stream, meta); - if (isArray(extender)) { - node.extends = extender[0]; - next = stream.next; - } else { - node.extends = extender; - next = advance_next(stream, "any", prefix); - } - if (next[0] === Tokens.Keyword && next[1] === "with") { - while (next[0] !== Tokens.Special || next[1] !== "{") { - var parsed = _parse(advance_next(stream, end_expression, prefix), stream, meta); - if (isArray(parsed)) { - parsed = parsed[0]; - next = stream.next; - } else { - next = advance_next(stream, "any", prefix); - } - if (next[0] !== Tokens.Special || (next[1] !== "," && next[1] !== "{")) { - error_unexcepted_token(next); - } - node.mixins.push(parsed); - } - } - } - if (!type && !node.symbolName) { - diagnostics.push(Diagnostic(DiagnosticSeverity.Warn, "Class statment doesn't have a name - " + - "a random name will be given during compilation")); - node.symbolName = randomVarName(); - } - if (next[0] === Tokens.Special && next[1] === "{") { - while ((next = advance_next(stream, ["keyword", "symbol", "string"].join('" | "'), prefix))[1] !== "}" && - next[0] !== Tokens.Special) { - if (includes([Tokens.Symbol, Tokens.String, Tokens.Keyword], next[0])) { - var next2 = advance_next(stream, ["=", "symbol", "("].join('" | "'), prefix); - if (next[0] === Tokens.Keyword) - if (next2[0] === Tokens.Symbol && includes(["get", "set", "async"] as const, next[1])) { - } - } - } - // next = next_and_skip_shit_or_fail(stream, "}", prefix); - // if (next[0] !== Tokens.Special || next[1] !== "}") { - // error_unexcepted_token(next); - // } - } else - error_unexcepted_token(next); - return node; - }, - return(stream, meta) { - return abruptify({ - name: Nodes.ReturnStatment, - type: NodeType.Statment - }, _parse(advance_next(stream, end_expression, "Return statment:"), stream, meta)); - }, - throw(stream, meta) { - __used.throw = true; - return abruptify({ - name: Nodes.ThrowExpression, - type: NodeType.Statment - }, _parse(advance_next(stream, end_expression, "Throw statment:"), stream, meta)); - }, - yield(stream, meta) { - var next = advance_next(stream, end_expression, "Yield expression:"); - var yield_from = next[0] === Tokens.Operator && next[1] === "*"; - var expression = yield_from ? - parse_expression(stream, meta) : - _parse(next, stream, meta); - return abruptify({ - name: yield_from ? Nodes.YieldFromExpression : Nodes.YieldExpression, - type: NodeType.Expression, - outerBody: meta.outer - }, expression); - }, - await(stream, meta) { - if (meta.outer.name === Nodes.FunctionExpression) { - diagnostics.push(Diagnostic(DiagnosticSeverity.RuntimeError, - `Using await inside Sync Function Expression will fail at runtime`)); - } - if (meta.outer.name === Nodes.GeneratorFunctionExpression) { - diagnostics.push(Diagnostic(DiagnosticSeverity.Warn, `Await is not intended to be used inside Generator Functions`)); - } - var prefix = _echo("Await expression:" as const); - var next = advance_next(stream, end_expression, prefix); - if (next[0] === Tokens.Operator && next[1] === ".") { - next = advance_next(stream, ['any', 'all', 'allSettled', 'race'].join('" | "'), prefix); - if (next[0] === Tokens.Symbol && /^(any|all(Settled)?|race)$/m.test(next[1])) { - var expression = _parse(advance_next(stream, end_expression, prefix), stream, meta); - var _ = { - name: Nodes.CallExpression, - type: NodeType.Expression, - body: [{ - name: Nodes.SymbolNoPrefix, - type: NodeType.Expression, - symbolName: `p.${ next[1] }` - }], - args: [expression] - } as any; - if (isArray(expression)) { - _.args[0] = expression[0]; - expression = [_]; - } else - expression = _; - } else { - error_unexcepted_token(next); - } - } else { - expression = _parse(next, stream, meta); - } - return abruptify({ - name: Nodes.AwaitExpression, - type: NodeType.Expression, - outerBody: meta.outer - }, expression); - }, - this() { - return { - name: Nodes.SymbolNoPrefix, - type: NodeType.Expression, - symbolName: "this" - }; - }, - keep(stream, meta) { - var prefix = _echo("Keep statment:"); - var next = advance_next(stream, "(", prefix); - var args = [] as Node[]; - if (next[0] !== Tokens.Special && next[1] !== "(") { - error_unexcepted_token(next); - } - next = advance_next(stream, "symbol", prefix); - if (next[0] === Tokens.Special || next[1] !== ")") { - while (1) { - if (next[0] === Tokens.Special && next[1] === ")") { - break; - } - if (next[0] === Tokens.Special && next[1] === ",") { - next = advance_next(stream, end_expression); - continue; - } else { - var next2, isConstantObject = next[0] === Tokens.Keyword && includes(["this", "arguments"] as const, next[1]), - arg = (isConstantObject ? keywordsHandlers[next[1]]() : { - name: Nodes.Symbol, - type: NodeType.Expression, - symbolName: next[1] - }) as Node; - if (!(isConstantObject || next[0] === Tokens.Symbol)) { - error_unexcepted_token(next); - } - next2 = advance_next(stream, [',', ')'].join('" | "') + meberAccessOperators.join('" | "'), prefix); - if (next2[0] === Tokens.Operator && includes(meberAccessOperators, next2[1])) { - arg = { - name: Nodes.MemberAccessExpression, - type: NodeType.Expression, - body: _parseMemberAccess(arg, next, stream, meta), - }; - } else { - isConstantObject && diagnostics.push(Diagnostic(DiagnosticSeverity.RuntimeError, `Assignment to "${ next[0] }" will fail at runtime!`)); - next = next2; - } - } - args.push(arg); - if (next[0] === Tokens.Special) { - if (next[1] === ")") { - break; - } else if (next[1] !== ",") { - error_unexcepted_token(next); - } - } else - error_unexcepted_token(next); - next = advance_next(stream, "symbol"); - } - } - next = advance_next(stream, "{"); - if (next[0] !== Tokens.Special && next[1] !== "{") { - error_unexcepted_token(next); - } - var body = parse_body(stream, meta); - return { - name: Nodes.KeepStatment, - type: NodeType.Statment, - body, - args - }; - }, - new(stream, meta) { - var expression = __parse(advance_next(stream, end_expression), stream, meta), - is_array; - if (is_array = isArray(expression)) { - expression = expression[0]; - } - // The logic is to intercept from parsed node last CallExpression and mutate it into NewExpression - var node = { name: Nodes.NewExpression, type: NodeType.Expression, body: [expression] as Node[] } as Node, - body = expression.body, intercepted: Node[] = [], expression_ = expression; - while (expression_.type === NodeType.Expression && isArray(body)) { - expression_ = (body[0] as Node).name ? body[0] as Node : (body[0] as AccessChainItem).body; - intercepted.push(expression_); - body = expression_.body; - } - for (var index = 0, length = intercepted.reverse().length; index < length; index++) { - var intercepted_ = intercepted[index]; - if (intercepted_.name === Nodes.CallExpression) { - var expressionAbove = intercepted[index + 1] || expression; - (node.body as Node[])[0] = intercepted_; - if (expressionAbove.name !== Nodes.MemberAccessExpression) { - (expressionAbove.body as Node[])[0] = node; - } else { - (expressionAbove.body as AccessChainItem[])[0] = { - body: node, - kind: AccessChainItemKind.Head - }; - } - return expression; - } - } - return is_array ? [node] : node; - }, - // TODO - try(stream, meta) { - var node = { - name: Nodes.TryStatment, - type: NodeType.Statment, - catch: undefined, - else: undefined, - body: undefined, - finally: undefined, - args: undefined - } as Partial, - prefix = _echo("Try statment:" as const), - next = advance_next(stream, end_expression, prefix); - if (next[0] === Tokens.Keyword && next[1] === "using") { - assert(node); - node.args = []; - - } - if (next[0] === Tokens.Special && next[1] === "{") { - node.body = parse_body(stream, meta); - } - next = advance_next(stream, end_expression, prefix); - nonuseless = false; - while (next[0] === Tokens.Keyword && includes(["catch", "else", "finally"] as const, next[1])) { - var word = next[1], toAppend = word === "catch" ? ["", []] as UsingStatmentNode["catch"] : undefined, nonuseless = true; - next = advance_next(stream, end_expression, prefix); - if (word === "catch" && next[0] === Tokens.Special && next[1] === "(") { - next = advance_next(stream, end_expression, prefix); - if (next[0] !== Tokens.Symbol) { - error_unexcepted_token(next); - } - toAppend![0] = next[1]; - next = advance_next(stream, end_expression, prefix); - if (next[0] !== Tokens.Special || next[1] !== ")") { - error_unexcepted_token(next); - } - next = advance_next(stream, end_expression, prefix); - } - if (next[0] !== Tokens.Special || next[1] !== "{") { - error_unexcepted_token(next); - } - if (word === "catch") { - toAppend![1] = parse_body(stream, meta); - node[word] = toAppend!; - } else { - node[word] = parse_body(stream, meta); - } - next = advance_next(stream, end_expression, prefix); - } - downgrade_next(stream); - if (!nonuseless) { - diagnostics.push(Diagnostic(DiagnosticSeverity.Warn, `Try statment is useless without else, catch, finally clauses!`)); - node.finally = []; - } - return node as unknown as Node; - }, - else() { - throw "Else cannot exist as standalone statment"; - }, - while(stream, meta) { - var prefix = _echo("While statment:" as const); - var next = advance_next(stream, "(", prefix); - if (next[0] !== Tokens.Special || next[1] !== "(") { - error_unexcepted_token(next); - } - var arg = _parse(next = advance_next(stream, end_expression, prefix), stream, meta); - if (isArray(arg)) { - next = stream.next; - } else { - arg = [arg]; - next = advance_next(stream, ")", prefix); - } - if (next[0] !== Tokens.Special || next[1] !== ")") { - error_unexcepted_token(next); - } - next = advance_next(stream, "{", prefix); - if (next[0] !== Tokens.Special || next[1] !== "{") { - error_unexcepted_token(next); - } - return { - name: Nodes.WhileStatment, - type: NodeType.Statment, - body: parse_body(stream, meta), - args: arg - }; - }, - do(stream, meta) { - var prefix = _echo("Do-While statment:" as const); - var next = advance_next(stream, "{", prefix); - var body, arg; - if (next[0] !== Tokens.Special || next[1] !== "{") { - error_unexcepted_token(next); - } - body = parse_body(stream, meta); - next = advance_next(stream, "while", prefix); - if (next[0] !== Tokens.Keyword || next[1] !== "while") { - error_unexcepted_token(next); - } - next = advance_next(stream, "(", prefix); - if (next[0] !== Tokens.Special || next[1] !== "(") { - error_unexcepted_token(next); - } - arg = _parse(next = advance_next(stream, end_expression, prefix), stream, meta); - if (isArray(arg)) { - next = stream.next; - } else { - arg = [arg]; - next = advance_next(stream, ")", prefix); - } - if (next[0] !== Tokens.Special || next[1] !== ")") { - error_unexcepted_token(next); - } - return { - name: Nodes.DoWhileStatment, - type: NodeType.Statment, - body, - args: arg - }; - }, - import(stream, meta) { - const next = advance_next(stream, end_expression, "Import statment:"); - if (next[0] !== Tokens.Special && next[1] !== "(") { - error_unexcepted_token(next); - } - return { - name: Nodes.ImportExpression, - type: NodeType.Expression, - args: parse_call_expression(advance_next(stream, end_expression, "Import statment:"), stream, meta) - } as Node; - } -} as KeywordParsers as { [key: string]: (...args: any[]) => Readonly | [Readonly]; }; diff --git a/src/lib/lexer.ts b/src/lib/lexer.ts index b059809..b444b65 100644 --- a/src/lib/lexer.ts +++ b/src/lib/lexer.ts @@ -1,208 +1,202 @@ -import { Stream, TextStream, Token, TokenList } from "./utils/stream.js"; -import { includes, nullish } from "./utils/util.js"; -import { Tokens } from "./enums"; -import { keywords, validChars, $2charoperators, $3charoperators } from "./utils/constants.js"; +import { Stream, type TextStream, Token, type TokenStream } from "./utils/stream.js"; +import { error_unexcepted_token, fatal, nullish, Prototypeless, undefined } from "./utils/util.js"; +import { DiagnosticSeverity, Tokens } from "./enums"; +import { keywords, $2charoperators, $3charoperators } from "./utils/constants.js"; +import { advance_next, type Prefix } from "./utils/advancers.js"; +import { MultiValueComparer, ValidCharsComparer } from "./utils/comparer.js"; +import { Diagnostic } from "./parser.js"; -var numberChar = /[0-9.\-\+]/; -var numberTest = /^(?:[\-\+]?[0-9][_0-9]*)?(?:\.(\.[\-\+]?)?[0-9_]+)?$/m; -var specialCharsTest = /[(){};,]/m; -var operatorCharsTest = /^[<>\/*+\-?|&\^!%\.@:=\[\]~#]$/m; -var regexTest = /^`$/m; -var stringTest = /^'|"$/m; -var regexModTest = /^[gmiyus]$/m; -var whitespaceTest = /\s/; -var symbolic = /^[^\s<>\/*+\-?|&\^!%\.@:=\[\]~(){};,"'#]$/m; -// /** -// * @param {any[]} array -// * @param {any} element -// * @param {number} length -// */ -// function has(array, element, length) { -// for (let index = 0; index < length; index++) { -// if (element === array[index]) { -// return true; -// } -// } -// return false; -// } -/** - * @param {string} firstChar - * @param {import("./utils/stream").TextStream} iter - * @returns {import("./utils/stream").Token} - */ -function scanNumber(firstChar: string, iter: TextStream): Token { - var result = firstChar, c: string; - while (!nullish(c = iter.next) && numberChar.test(c)) { - result += iter.move(); +const whitespaceCharsComparer = new MultiValueComparer("\t\f\v\r\n "); +const operatorCharsComparer = new MultiValueComparer("<>/*+-?|&^!%.@:=[](){};,~#`"); +const $2charOperatorComparer = new MultiValueComparer($2charoperators); +const $3charOperatorComparer = new MultiValueComparer($3charoperators); +const keywordComparer = new MultiValueComparer(keywords); +const validIDComparer = new ValidCharsComparer(); +const operatorTokenMap = new Map([...operatorCharsComparer, ...$2charoperators, ...$3charoperators, ">>>=" as const] + .map(operator => [operator, new Token(Tokens.Operator, operator)])); +export const validAfterNumberChars = new MultiValueComparer([...whitespaceCharsComparer, ...operatorCharsComparer, "'" as const, '"' as const]); + + +@Prototypeless +class Lexer implements TokenStream { + public readonly next!: Token; + _triaged?: Token; + _triageLength = 0; + constructor(public readonly text_stream: TextStream) { } + public advance() { + if (this._triaged !== undefined) throw "FATAL_ERROR_FIX_ME_ASAP: Cannot advance token stream when a token is triaged!"; + return (this as { next: Token; }).next = this._lex(this.text_stream.move()); } - if (!numberTest.test(result) || !result) { - throw `${ result } is not a valid number!`; + public move() { + if (this._triaged !== undefined) throw "FATAL_ERROR_FIX_ME_ASAP: Cannot move token stream when a token is triaged!"; + const __next = this.next; + (this as { next: Token; }).next = this._lex(this.text_stream.move()); + return __next; } - return [/[\-\+]?\d+\.\.[\-\+]?\d+/.test(result) ? Tokens.Range : Tokens.Number, result]; -} -/** - * @param {string} quot - * @param {import("./utils/stream").TextStream} iter - */ -function scanText(quot: string, iter: TextStream) { - arguments - var result = "", last = "", compound = '\\' + quot; - while (iter.next !== quot || last + iter.next === compound) { - last = iter.move(); - if (nullish(last)) { - throw "Unexcepted EOF"; - } - result += last; + public try

(end: string, prefix?: Prefix

): Token { + if (this._triaged !== undefined) throw "FATAL_ERROR_FIX_ME_ASAP: Cannot try a token 2 times!"; + const initialIndex = this.text_stream.index; + const result = advance_next(this, end, prefix); + this._triageLength = this.text_stream.index - initialIndex; + return this._triaged = result; } - iter.move(); - return result; -} -/** - * @param {string} char - * @param {import("./utils/stream").TextStream} iter - * @returns {import("./utils/stream").Token} - */ -function scanSymbol(char: string, iter: TextStream): Token { - var result = char, next: string; - while (!nullish(next = iter.next) && symbolic.test(next)) { - result += iter.move(); + public confirm_try() { + this._triaged = undefined!; + this._triageLength = 0; } - if (!validChars.test(result)) { - throw `${ result } is not a valid symbol!`; + public cancel_try() { + this.text_stream.down(this._triageLength); + this._triaged = undefined!; + this._triageLength = 0; } - return [~keywords.indexOf(result) ? Tokens.Keyword : Tokens.Symbol, result]; -} -/** - * @param {string} char - * @param {import("./utils/stream").TextStream} iter - */ -function scanWhitespace(char: string, iter: TextStream) { - var result = char, next: string; - while (!nullish(next = iter.next) && whitespaceTest.test(next)) { - result += iter.move(); + public *[Symbol.iterator]() { + var next: Token; + while (!nullish(next = this.advance())) { yield next; } } - return result; -} -/** - * @param {import("./utils/stream").TextStream} iter - * @returns {import("./utils/stream").Token} - */ -function scanRegex(iter: TextStream): Token { - var result = "", regexMods = "", next: string; - while ((next = iter.next) !== '`') { - if (nullish(next)) { - throw "Invalid regular expression: missing `"; + private _lex(char: string): Token { + if (nullish(char)) { + return char; + } else if (operatorCharsComparer.includes(char)) { + const _char = this.text_stream.move(); + const joined = char + _char; + if ($2charOperatorComparer.includes(joined)) { + const __char = this.text_stream.move(); + const _joined = joined + __char; + if ($3charOperatorComparer.includes(_joined)) { + const ___char = this.text_stream.move(); + const __joined = _joined + ___char; + if (">>>=" === __joined) { + return operatorTokenMap.get(__joined)!; + } else { + return this.text_stream.down(1), operatorTokenMap.get(_joined)!; + } + } else if (joined === "//") { + return this._scanComment(), this._lex(this.text_stream.move()); + } else if (joined === "/*") { + return this._scanMultiineComment(__char), this._lex(this.text_stream.move()); + } else { + return this.text_stream.down(1), operatorTokenMap.get(joined)!; + } + } else { + return this.text_stream.down(1), operatorTokenMap.get(char)!; + } + } else if (whitespaceCharsComparer.includes(char)) { + return this._scanWhitespace(), this._lex(this.text_stream.move()); + } else if (char === "'") { + return this._scanSingleQuoteText(); + } else if (char === "\"") { + return this._scanDoubleQuoteText(); + } else if ('0' <= char && char <= '9') { + return this._scanNumber(char); + } else if (validIDComparer.includes(char)) { + return this._scanChars(char); + } else { + validIDComparer.init(char); + if (validIDComparer.includes(char)) { + return this._scanChars(char); + } + throw new Diagnostic(DiagnosticSeverity.FatalError, `Unregonized character ${ char }`, this).log()! ?? ""; + } + } + private _scanChars(result: string) { + while (validIDComparer.includes(this.text_stream.next)) { + result += this.text_stream.move(); } - result += iter.move(); + return new Token(keywordComparer.includes(result) ? Tokens.Keyword : Tokens.Symbol, result); + } + private _scanSingleQuoteText(): Token { + var result = "", last = "", next: string; + while ((next = this.text_stream.move() ?? fatal("Unexcepted EOF")) !== "'" || last === "\\") result += last = next; + return new Token(Tokens.String, result); } - iter.move(); - // TS thinks that stream's next property doesn't change - // @ts-ignore - while (!~regexMods.indexOf(next = iter.next) && next.trim() && next !== ";" && !whitespaceTest.test(next)) { - if (!regexModTest.test(next)) throw `Invalid regular expression flag: '${ next }'`; - if (~regexMods.indexOf(next)) throw `Duplicated regular expression flag: '${ next }'`; - regexMods += iter.move(); + private _scanDoubleQuoteText(): Token { + var result = "", last = "", next: string; + while ((next = this.text_stream.move() ?? fatal("Unexcepted EOF")) !== '"' || last === '\\') result += last = next; + return new Token(Tokens.String, result); } - return [Tokens.Regex, result, regexMods]; -} -/** - * @param {import("./utils/stream").TextStream} iter - * @param {string} firstChar - */ -function scanComment(iter: TextStream, firstChar: string) { - var result = firstChar || ""; - while (iter.next && iter.next !== '\n') { - result += iter.move(); + private _scanWhitespace(): void { + var next: string; + while (!nullish(next = this.text_stream.next) && whitespaceCharsComparer.includes(next)) this.text_stream.advance(); } - iter.move(); - return result + "\n"; -} -/** - * @param {import("./utils/stream").TextStream} iter - * @param {string} firstChar - */ -function scanMultiineComment(iter: TextStream, firstChar: string) { - var result = firstChar, length = 0; - while (result[length] + iter.next !== '*/') { - result += iter.move(); - length++; + private _scanComment(): void { + var next: string; + while (!nullish(next = this.text_stream.move()) && next !== '\n'); } - iter.move(); - return result.slice(0, -1); -} -/** - * @param {import("./utils/stream").TokenList} tokens - * @param {string} char - * @param {import("./utils/stream").TextStream} iter - */ -function _lex(tokens: TokenList, char: string, iter: TextStream) { - if (whitespaceTest.test(char)) { - tokens.push([Tokens.Whitespace, scanWhitespace(char, iter)]); - } else if (specialCharsTest.test(char)) { - tokens.push([Tokens.Special, char]); - } else if (operatorCharsTest.test(char) || char === ".") { - _char = iter.move(); - joined = char + _char; - if ((char === "-" || char === "+") && /^[\d\.]$/m.test(_char)) { - _lex(tokens, joined, iter); - } else if (includes($2charoperators, joined)) { - __char = iter.move(); - _joined = joined + __char; - if (includes($3charoperators, _joined)) { - ___char = iter.move(); - __joined = _joined + ___char; - if (">>>=" === __joined) { - tokens.push([Tokens.Operator, __joined]); - _lex(tokens, iter.move(), iter); + private _scanMultiineComment(char: string): void { + while (char + this.text_stream.next !== '*/') { + char = this.text_stream.move(); + } + this.text_stream.advance(); + } + private _scanNumber(firstChar: string): Token { + var result = firstChar, next: string; + if (firstChar === "0") { + const format = this.text_stream.move(); + if (format === "x") { + result += format; + while ( + '0' <= (next = this.text_stream.move()) && next <= '9' || + 'a' <= next && next <= 'f' || 'A' <= next && next <= 'F' + ) { + result += next; + } + if (!validAfterNumberChars.includes(next)) { + error_unexcepted_token(new Token(Tokens.Symbol, next), `; ${ next } is not a hexadecimal digit.`); + } + } else if (format === "o") { + result += format; + while ('0' <= (next = this.text_stream.move()) && next <= '7') { + result += next; + } + if (next === "8" || next === "9") { + error_unexcepted_token(new Token(Tokens.Number, next), `; ${ next } is not an octal digit.`); + } + if (!validAfterNumberChars.includes(next)) { + error_unexcepted_token(new Token(Tokens.Symbol, next), `; ${ next } is not an octal digit.`); + } + } else if (format === ".") { + const next = this.text_stream.move(); + if (next === ".") { + this.text_stream.down(1); } else { - tokens.push([Tokens.Operator, _joined]); - _lex(tokens, ___char, iter); + result += format; + let next; + while ('0' <= (next = this.text_stream.move()) && next <= '9') { + result += next; + } + if (!validAfterNumberChars.includes(next)) { + error_unexcepted_token(new Token(Tokens.Symbol, next), `; ${ next } is not a decimal digit.`); + } } - } else if (joined === "//") { - tokens.push([Tokens.Comment, scanComment(iter, __char)]); - } else if (joined === "/*") { - tokens.push([Tokens.MultilineComment, scanMultiineComment(iter, __char)]); - } else { - tokens.push([Tokens.Operator, joined]); - _lex(tokens, __char, iter); + } else if (!validAfterNumberChars.includes(format)) { + throw "A number literal cannot start with zero"; } } else { - // console.log(`Char: '${char}', NextChar: '${_char}'`); - tokens.push([Tokens.Operator, char]); - _lex(tokens, _char, iter); + while ('0' <= (next = this.text_stream.move()) && next <= '9') { + result += next; + } + if (next === ".") { + result += next; + while ('0' <= (next = this.text_stream.move()) && next <= '9') { + result += next; + } + } + if (!validAfterNumberChars.includes(next)) { + error_unexcepted_token(new Token(Tokens.Symbol, next), `; ${ next } is not a decimal digit.`); + } } - } else if (whitespaceTest.test(char)) { - tokens.push([Tokens.Whitespace, scanWhitespace(char, iter)]); - } else if (specialCharsTest.test(char)) { - tokens.push([Tokens.Special, char]); - } else if (regexTest.test(char)) { - tokens.push(scanRegex(iter)); - } else if (stringTest.test(char)) { - tokens.push([Tokens.String, scanText(char, iter)]); - } else if (/[0-9\-\+]/.test(char)) { - tokens.push(scanNumber(char, iter)); - } else if (validChars.test(char)) { - tokens.push(scanSymbol(char, iter)); - } else { - throw `Unrecognised character: "${ char }"!`; + this.text_stream.down(1); + return new Token(Tokens.Number, result); } -} -var _char: string, - __char: string, - ___char: string, - joined: string, - _joined: string, - __joined: string; -/** - * @param {string} text - */ -export function lex(text: string) { - /**@type {import("./utils/stream").TokenList} */ - var tokens: TokenList = [], - iter = Stream(text); - while (!nullish(iter.next)) { - _lex(tokens, iter.move(), iter); + /** + * @internal For testing purposes + */ + protected consume() { + while (!nullish(this.advance())); } - return tokens; +}; + +export function lex(text: string): TokenStream { + return new Lexer(new Stream(text)); } \ No newline at end of file diff --git a/src/lib/nodes.ts b/src/lib/nodes.ts index 45b131d..93720a5 100644 --- a/src/lib/nodes.ts +++ b/src/lib/nodes.ts @@ -1,82 +1,201 @@ -import type { Nodes, ParameterNodeType, NodeType, AccessChainItemKind } from "./enums"; +import { Nodes, type ParameterNodeKind, NodeType, type AccessChainItemKind, type ObjectBodyNodeKind } from "./enums"; +import { undefined } from "./utils/util.js"; +type NodeBody = INode[] | AccessChainItem[] | undefined; +export type Writable = { -readonly [K in keyof T]: T[K] }; -export type NodeName = Nodes; -export interface NodeBase { - name: NodeName; +export interface INodeBase { + name: Nodes; type: NodeType; } -export interface Node extends NodeBase { - body?: string | Node[] | AccessChainItem[]; - outerBody?: Node; - params?: ParameterNode[]; - symbolName?: string; + +export interface INode extends INodeBase { + body?: NodeBody; + outerBody?: INode; + symbol?: string; meta?: Record; - args?: Node[]; + params?: ParameterNode[]; + args?: INode[]; locals?: string[]; nonlocals?: string[]; - else?: Node; - elseif?: Node; + condition?: INode; +} + +export abstract class BasicMeta { + [key: string]: unknown; +} + +type Hollow = BasicMeta | undefined; + +export class Node implements INode { + public constructor(public readonly name: Nodes, public readonly type: NodeType, public readonly body: NodeBody, + public readonly outerBody: INode | Node | undefined, public readonly symbol: string | undefined, public readonly meta: TMeta) { } +} + +export const StatmentWithBodyNode = (name: Nodes, body: NodeBody, outerBody: INode) => + new Node(name, NodeType.Statment, body, outerBody, undefined, undefined); + +export const ExpressionWithBodyNode = (name: Nodes, body: NodeBody) => + new Node(name, NodeType.Expression, body, undefined, undefined, undefined); + +export const ExpressionWithBodyAndOuterNode = (name: Nodes, body: NodeBody, outer: Node) => + new Node(name, NodeType.Expression, body, outer, undefined, undefined); + +export const ExpressionWithBodyAndSymbolNode = (name: Nodes, body: NodeBody, symbol: string) => + new Node(name, NodeType.Expression, body, undefined, symbol, undefined); + +export const PrefixlessSymbolNode = (symbol: string) => + new Node(Nodes.SymbolNoPrefix, NodeType.Expression, undefined, undefined, symbol, undefined); + +export const SymbolNode = (symbol: string) => + new Node(Nodes.Symbol, NodeType.Expression, undefined, undefined, symbol, undefined); + +export const RegularExpressionNode = (symbol: string) => + new Node(Nodes.RegularExpression, NodeType.Expression, undefined, undefined, symbol, undefined); + +export const ConstantValueNode = (nodename: Nodes) => + new Node(nodename, NodeType.Expression, undefined, undefined, undefined, undefined); + +export const StringNode = (symbol: string) => + new Node(Nodes.StringValue, NodeType.Expression, undefined, undefined, symbol, undefined); + +export const NumberNode = (symbol: string) => + new Node(Nodes.NumberValue, NodeType.Expression, undefined, undefined, symbol, undefined); + +export const SymbolShortcutNode = (symbol: string) => + new Node(Nodes.SymbolShortcut, NodeType.Expression, undefined, undefined, symbol, undefined); + +export class NodeWithArgsMeta extends BasicMeta { + constructor(public readonly args: Node[]) { super(); } } -export interface TryStatmentNode extends NodeBase { - body: Node[]; - else: Node[]; - catch: [name: string, value: Node[]]; - finally: Node[]; + +export const ExpressionWithBodyAndArgsNode = (name: Nodes, body: NodeBody, args: Node[]) => + new Node(name, NodeType.Expression, body, undefined, undefined, new NodeWithArgsMeta(args)); + +export class NodeWithConditionMeta extends BasicMeta { + constructor(public readonly condition: Node) { super(); } } -export interface UsingStatmentNode extends TryStatmentNode { - args: [indentifier: string, value: Node][]; + +export const StatmentWithBodyAndConditionNode = (name: Nodes, body: NodeBody, condition: Node, outerBody: Node) => + new Node(name, NodeType.Statment, body, outerBody, undefined, new NodeWithConditionMeta(condition)); + +export class IfStatmentMeta extends BasicMeta { + public readonly else: Node; + constructor($else: Node, public readonly elseif: Node, public readonly condition: Node) { + super(); + this.else = $else; + } } + +export const IfStatmentNode = (body: NodeBody, outer: Node, condition: Node) => + new Node(Nodes.IfStatment, NodeType.Statment, body, outer, undefined, new IfStatmentMeta(undefined!, undefined!, condition) as Writable); + +export class TryStatmentMeta extends BasicMeta { + public readonly else: Node[]; + public readonly catch: Node; + public readonly finally: Node[]; + constructor($else: Node[], $catch: Node, $finally: Node[]) { + super(); + this.else = $else; + this.catch = $catch; + this.finally = $finally; + } +} + +export const TryStatmentNode = (body: NodeBody, $else: Node[], $catch: Node, $finally: Node[], outerBody: Node) => + new Node(Nodes.TryStatment, NodeType.Statment, body, outerBody, undefined, new TryStatmentMeta($else, $catch, $finally) as Writable); + +export const ConstantNodeMap = new Map([ + ["arguments", ConstantValueNode(Nodes.ArgumentsObject)], + ["false", ConstantValueNode(Nodes.FalseValue)], + ["Infinity", ConstantValueNode(Nodes.InfinityValue)], + ["NaN", ConstantValueNode(Nodes.NaNValue)], + ["null", ConstantValueNode(Nodes.NullValue)], + ["this", ConstantValueNode(Nodes.ThisObject)], + ["true", ConstantValueNode(Nodes.TrueValue)], + ["undefined", ConstantValueNode(Nodes.UndefinedValue)], +] as const); + export interface ClassProperty { - name: Node; - body: Node[]; + name: INode; + body: INode[]; } + export interface ClassMethod extends ClassProperty { - decorators: Node[]; + decorators: INode[]; params: ParameterNode[]; } + export interface ClassGetter extends ClassMethod { params: []; } + export interface ClassSetter extends ClassMethod { - params: [] | [ParameterNode & { type: ParameterNodeType.Normal; }]; + params: [] | [ParameterNode & { kind: ParameterNodeKind.Normal; }]; } + export interface ClassConstructor { - body: Node[]; + body: INode[]; params: ParameterNode[]; async: boolean; gen: boolean; } + export interface ClassNodeProps { methods: ClassMethod[]; getters: ClassGetter[]; settets: ClassSetter[]; - props: [name: Node, value: Node][]; + props: { name: INode; value: INode; }[]; } -export interface ClassNode extends Node, Privatify { + +export interface IClassNode extends INode, Privatify { construct?: ClassConstructor; - extends?: Node; - mixins: Node[]; + extends?: INode; + mixins: INode[]; } -export interface MixinNode extends ClassNode { } + +export interface MixinNode extends IClassNode { } + export type PrivatifyString = T | `private${ Capitalize }`; + export type Privatify = { [Key in keyof T as PrivatifyString]-?: T[Key]; }; -export interface ParseMeta { - ie?: boolean; - outer: Node; - filename: string; + +export interface IParseMeta { + /** insideExpression */ + insideExpression: boolean; + readonly outer: INode; + readonly filename: string; + readonly cache: boolean; + [key: string]: unknown; +} + +export class ParseMeta implements IParseMeta { + constructor(public readonly filename: string, public readonly outer: INode, public readonly cache: boolean, public insideExpression = false) { }; [key: string]: unknown; } -export interface ParameterNode { - name: string | Node; - type: ParameterNodeType; - default?: Node; - _meta?: any; + +export class ParameterNode { + public readonly default?: INode; + constructor(public name: string | INode, public readonly kind: ParameterNodeKind, default_: INode | undefined) { + this.default = default_; + } +} + +export class AccessChainItem { + constructor(public kind: AccessChainItemKind, public body: INode) { } } -export interface AccessChainItem { - kind: AccessChainItemKind; - body: Node; + +export type ObjectBodyNode = { + name: INode; + type: ObjectBodyNodeKind; + body: INode[]; +}; + +export interface ObjectNode extends INodeBase { + name: Nodes.ObjectExpression; + type: NodeType.Expression; + body: ObjectBodyNode[]; } diff --git a/src/lib/parse-dummies.ts b/src/lib/parse-dummies.ts deleted file mode 100644 index ad97b23..0000000 --- a/src/lib/parse-dummies.ts +++ /dev/null @@ -1,6 +0,0 @@ -// These wrappers needed for babel to complete and not hang (23 minutes and it couldn't finish the job, i checked) -import { _parse as _parse_, __parse as __parse__ } from "./parser.js"; - -export const __parse = __parse__; -export const _parse = _parse_; -export { __used, diagnostics } from "./parser.js"; diff --git a/src/lib/parser.ts b/src/lib/parser.ts index 7aa4aab..ff1276c 100644 --- a/src/lib/parser.ts +++ b/src/lib/parser.ts @@ -1,405 +1,317 @@ // @ts-check /** @author MadProbe#7435 */ -import { Stream, Token, TokenList, TokenStream } from "./utils/stream.js"; import { - nullish, - assert, - isArray, - apply, - resetCounter, - undefined, - SyntaxError, - inspectLog, - includes, - error_unexcepted_token, - isSymbol, - remove_trailing_undefined, - isNode, - abruptify -} from "./utils/util.js"; -import { Nodes, ParameterNodeType, NodeType, Tokens, DiagnosticSeverity, ParseNodeType } from "./enums"; -import { _emit } from "./emitter.js"; + reset_counter, undefined, SyntaxError, error_unexcepted_token, isSymbol, should_not_happen, fatal} from "./utils/util.js"; +import { Nodes, ParameterNodeKind, NodeType, Tokens, DiagnosticSeverity, ParseNodeKind } from "./enums"; import { _echo } from "./utils/_echo.js"; import { AssignmentOperatorTable } from "./utils/table.js"; -import { Diagnostic, IDiagnostic } from "./utils/diagnostics.js"; -import { end_expression, expression } from "./utils/constants.js"; -import { parseMemberAccess } from "./parsers/member-access.js"; -import { advance_next } from "./utils/advancers.js"; -import { parse_call_expression } from "./parsers/call-expression.js"; -import { parse_body } from "./parsers/body-parser.js"; -import { parse_common_expressions } from "./parsers/common-expressions.js"; -import { parse_assignment } from "./parsers/assignments.js"; -import { keywordsHandlers } from "./keywords.js"; -import { parse_array_expression } from "./parsers/array-expression.js"; -import { parse_group_expression } from "./parsers/group-expression.js"; -import type { Node, ParseMeta, AccessChainItem } from "./nodes"; - - -export type SyntaxTree = Node[]; -// /** -// * @param {string} included -// * @param {string} filename -// * @param {boolean} pretty -// * @param {string} whitespace -// */ -// function __include_helper__(included: string, pretty: boolean, whitespace: string) { -// return _emit(parse(lex(included), filename), { url: filename }); -// } -/** - * @param {import("./utils/stream.js").Token | import("./parser").Node} next - * @param {import("./utils/stream.js").TokenStream} stream - * @param {import("./parser").ParseMeta} meta - * @returns {import("./parser").Node | [import("./parser").Node]} - */ -export function _parse(next: Token | Node, stream: TokenStream, meta: ParseMeta): Node | [Node] { - var parsed = __parse(next, stream, meta); - meta.ie = false; +import { end_expression } from "./utils/constants.js"; +import { advance_next, assert_next_token, type Prefix } from "./utils/advancers.js"; +import { + parse_call_expression, parse_body, parse_common_expressions, parse_regexp, + parse_array_expression, parse_assignment, parse_group_expression, keywords_handlers, parse_member_access +} from "./parsers/__all__.js"; +import { ConstantNodeMap, ExpressionWithBodyAndArgsNode, ExpressionWithBodyNode, INode, NumberNode, ParameterNode, ParseMeta, StatmentWithBodyNode, StringNode, SymbolNode, SymbolShortcutNode } from "./nodes"; +import { occurrences } from "./utils/occurrences.js"; +import { MultiValueComparer } from "./utils/comparer.js"; +import type { IDiagnostic } from "./utils/diagnostics.js"; +import type { Token, TokenStream } from "./utils/stream.js"; + + + +const comparer = new MultiValueComparer(";}),"); +const indentifier = ParseNodeKind.Indentifier; +const unusual_member_access_operators_comparer = new MultiValueComparer(["?.", "?.["] as const); +const abruptful_nodes_comparer = new MultiValueComparer(["with", "to", "as"] as const); + +var __top_fn_node: INode; +export var __used: KnownUsed; +export var promises: Promise[] = []; +export var __cache = true; + +export const diagnostics: readonly IDiagnostic[] = []; + +export function _parse(next: Token, stream: TokenStream, meta: ParseMeta): INode { + const parsed = __parse(next, stream, meta); + meta.insideExpression = false; return parsed; } -const indentifier = ParseNodeType.Indentifier; -function parse_operators(_sym: Node, stream: TokenStream, meta: ParseMeta, type: ParseNodeType): Node | [Node] { - meta.ie = true; - var prefix: string; - var node: Node; - var parsed: Node | [Node] | undefined; - var next = stream.next; - var canBeObject = type !== ParseNodeType.Number && type !== ParseNodeType.String; - var notExpressionOrIndentifier = !canBeObject || type === ParseNodeType.Range; - if (next[0] !== Tokens.Operator && next[0] !== Tokens.Special) { + +export function parse_operators(_sym: INode, stream: TokenStream, meta: ParseMeta, type: ParseNodeKind): INode { + meta.insideExpression = true; + var node: INode; + var parsed: INode | undefined; + var next = stream.try(end_expression); + var canBeObject = type !== ParseNodeKind.Number && type !== ParseNodeKind.String; + var notExpressionOrIndentifier = !canBeObject || type === ParseNodeKind.Range; + if (next.type & (Tokens.Keyword | Tokens.Symbol) && abruptful_nodes_comparer.includes(next.body)) { + stream.cancel_try(); + return _sym; + } + if (next.type !== Tokens.Operator && (next.type !== Tokens.Keyword || next.body !== "and" && next.body !== "or")) { + stream.confirm_try(); error_unexcepted_token(next); } - switch (next[1]) { + switch (next.body) { case "{": case ")": case "}": case "]": case ",": case ";": - return [_sym]; + stream.cancel_try(); + return _sym; + + // TODO: Chained comparisons - 2 < 3 < 4 === 2 < 3 && 3 < 4 + // case ">": + // const expr = parse_expression(stream, meta); + // const nextOperator = stream.try("operator"); + // if (nextOperator.type === Tokens.Operator && nextOperator.body === next.body) { + // stream.confirm_try(); + // // ... + // } else stream.cancel_try(); case "(": case "?.(": - // console.log("():", next); - notExpressionOrIndentifier && pushDiagnosticMessage(DiagnosticSeverity.RuntimeError, - `Call on ${ type } will fail at runtime because ${ type } is not callable.`); - var args = parse_call_expression(advance_next(stream, ")", "Call expression:"), stream, meta); - remove_trailing_undefined(args); - node = { - name: next[1] === "(" ? Nodes.CallExpression : Nodes.OptionalCallExpression, - type: NodeType.Expression, - body: [_sym], - args: args - }; - return _parse(node, stream, meta); + stream.confirm_try(); + notExpressionOrIndentifier && pushDiagnostic(DiagnosticSeverity.RuntimeError, + `Call on ${ type } will fail at runtime because ${ type } is not callable.`, stream); + return parse_operators(ExpressionWithBodyAndArgsNode( + next.body === "(" ? Nodes.CallExpression : Nodes.OptionalCallExpression, [_sym as never], + parse_call_expression(advance_next(stream, ")", "Call expression:"), stream, meta) as never + ), stream, meta, ParseNodeKind.Expression); case ".": case "[": - case "!.": - case "![": case "?.": case "?.[": { - let body = next[1]; - assert(_); + stream.confirm_try(); + const body = next.body; if (body === ".") { - type === ParseNodeType.Number && pushDiagnosticMessage(DiagnosticSeverity.Warn, - `Please disambiguate normal member access expression when member access performed on ${ type } value by wrapping ${ type } value in parenthezis`); + type === ParseNodeKind.Number && pushDiagnostic(DiagnosticSeverity.Warn, + `Please disambiguate normal member access expression when member access \ +performed on ${ type } value by wrapping ${ type } value in parenthezis`, stream); } - if (notExpressionOrIndentifier && includes(["!.", "![", "?.", "?.["] as const, body)) { - var isDotMemberAccess = body == "!." || body == "?."; - pushDiagnosticMessage(DiagnosticSeverity.Warn, - (body == "![" || body == "!." ? "Null assertive" : "Optional") + - `${ isDotMemberAccess ? "" : " computed" } member access doesn't have ` + - `any effect when performed on ${ type } value, assertion will be stripped.`); - next[1] = isDotMemberAccess ? "." : "["; + if (notExpressionOrIndentifier && unusual_member_access_operators_comparer.includes(body)) { + var isDotMemberAccess = body == "?."; + pushDiagnostic(DiagnosticSeverity.Warn, + `Optional${ isDotMemberAccess ? "" : " computed" } member access doesn't have ` + + `any effect when performed on ${ type } value, assertion will be stripped.`, stream); + // @ts-expect-error + next.body = isDotMemberAccess ? "." : "["; } - return parseMemberAccess(_sym, next, stream, meta); + return parse_operators(parse_member_access(_sym, next, stream, meta), stream, meta, ParseNodeKind.Expression); } case "=>": + stream.confirm_try(); if (type !== indentifier) { - pushDiagnosticMessage(DiagnosticSeverity.RuntimeError, "Arrow functions shortcut cannot contain non-symbol parameter"); + pushDiagnostic(DiagnosticSeverity.RuntimeError, "Arrow functions shortcut cannot contain non-symbol parameter", stream); } node = { name: Nodes.FunctionExpression, type: NodeType.Expression, - params: [{ name: _sym.symbolName, type: ParameterNodeType.Normal }], + params: [new ParameterNode(_sym.symbol!, ParameterNodeKind.Normal, undefined)], locals: [], nonlocals: [] - } as Node; - var innerMeta = { outer: node, filename: meta.filename }; + }; + const innerMeta: ParseMeta = new ParseMeta(meta.filename, node, meta.cache); next = advance_next(stream, end_expression); - if (next[0] !== Tokens.Special && next[1] !== "{") { - return abruptify(node, abruptify({ - name: Nodes.ReturnStatment, - type: NodeType.Statment - }, _parse(next, stream, innerMeta))); + if (next.type === Tokens.Operator && next.body === "{") { + node.body = parse_body(stream, innerMeta); } else { - return (node.body = parse_body(stream, innerMeta), node); + node.body = [StatmentWithBodyNode(Nodes.ReturnStatment, [_parse(next, stream, innerMeta)], node)]; } + return node; case "::": - prefix = "Argument binding expression: "; - next = advance_next(stream, "(", prefix); - if (next[0] !== Tokens.Special || next[1] !== "(") { - error_unexcepted_token(next); - } + stream.confirm_try(); + const prefix = "Argument binding expression:"; + assert_next_token(stream, Tokens.Operator, "(", prefix); next = advance_next(stream, ")", prefix); - var args = parse_call_expression(next, stream, meta); - return { - name: Nodes.ArgumentBindingExpression, - type: NodeType.Expression, - body: [_sym], - args - }; + return parse_operators(ExpressionWithBodyAndArgsNode( + Nodes.ArgumentBindingExpression, [_sym as never], parse_call_expression(next, stream, meta) as never + ), stream, meta, ParseNodeKind.Expression); + + case "..": + stream.confirm_try(); + return parse_operators(ExpressionWithBodyNode( + Nodes.RangeExpression, [_sym, parse_expression(stream, meta, "RangeValue expression:")] + ), stream, meta, ParseNodeKind.Expression); case "!": - assert(_); - node = _parse(notExpressionOrIndentifier ? _sym : { - name: Nodes.NullAssertionExpression, - type: NodeType.Expression, - body: [_sym] - }, stream, meta) as Node; - if (notExpressionOrIndentifier) { - pushDiagnosticMessage(DiagnosticSeverity.Warn, - `Null assertion expression doesn't have any effect on ${ type } value, ` + - `null assertion operator will be stripped in output`); - } else { - __used.na = true; - } - return node as Node | [Node]; + stream.confirm_try(); + return parse_operators(ExpressionWithBodyNode(Nodes.NullAssertionExpression, [_sym]), stream, meta, ParseNodeKind.Expression); default: + stream.confirm_try(); parsed = parse_common_expressions(_sym, next, stream, meta); - if (next[1] in AssignmentOperatorTable) { - type === indentifier || _sym.name === Nodes.MemberAccessExpression || pushDiagnosticMessage(DiagnosticSeverity.RuntimeError, `Assignment on ${ type } will fail at runtime.`); + if (next.body in AssignmentOperatorTable) { + type === indentifier || _sym.name === Nodes.MemberAccessExpression || + pushDiagnostic(DiagnosticSeverity.RuntimeError, `Assignment on ${ type } will fail at runtime.`, stream); parsed = parse_assignment(_sym, next, stream, meta); } if (!parsed) { - pushDiagnosticMessage(DiagnosticSeverity.Warn, `Operator "${ next[1] }" is not supported`); + pushDiagnostic(DiagnosticSeverity.Warn, `Operator "${ next.body }" is not supported.`, stream); parsed = _sym; } - var _ = parsed && parsed.body; - if (_ && parsed.symbolName && isArray(_[1])) { - assert(_); - _[1] = _[1][0]; - parsed = [parsed]; - } return parsed; } } -/** - * @param {import("./utils/stream.js").Token | import("./parser").Node} next - * @param {import("./utils/stream.js").TokenStream} stream - * @param {import("./parser").ParseMeta} meta - * @returns {import("./parser").Node | [import("./parser").Node]} - */ -export function __parse(next: Token | Node, stream: TokenStream, meta: ParseMeta): Node | [Node] { - var prefix: string; - var _sym: Node; - var expression__ = expression as ParseNodeType.Expression; - var type__ = expression__ as ParseNodeType; - if (isNode(next) || isSymbol(next)) { - if (isNode(next)) { - _sym = next; - } else { - type__ = indentifier; - if (next[0] === Tokens.Keyword) { - _sym = keywordsHandlers[next[1]](stream) as Node; // Only __external_var and JS auto variable handlers can be invoked here - } else { - _sym = { - name: Nodes.Symbol, - type: NodeType.Expression, - symbolName: next[1] - }; - } - } - next = advance_next(stream, end_expression); - if (next[0] === Tokens.Keyword && next[1] === "with") { - return [_sym]; - } - if (next[0] === Tokens.String) { - advance_next(stream, end_expression); - return parse_operators({ - name: Nodes.CallExpression, - type: NodeType.Expression, - body: [_sym], - args: [{ - name: Nodes.StringValue, - type: NodeType.Expression, - body: next[1] - }] - }, stream, meta, expression__); - } - return parse_operators(_sym, stream, meta, type__); - } else if (next[0] === Tokens.Keyword) { - assert(next); - return keywordsHandlers[next[1]](stream, meta); - } else if (next[0] === Tokens.Number) { - assert(next); - let _temp = next[1]; - _sym = { - name: Nodes.NumberValue, - type: NodeType.Expression, - body: _temp - }; - advance_next(stream, expression); - return parse_operators(_sym, stream, meta, ParseNodeType.Number); - } else if (next[0] === Tokens.Range) { - assert(next); - var splitted = next[1].split('..'); - advance_next(stream, expression); - return parse_operators({ - name: Nodes.RangeValue, - type: NodeType.Expression, - body: splitted.map(v => ({ name: Nodes.StringValue, type: NodeType.Expression, body: v })) - }, stream, meta, ParseNodeType.Range); - } else if (next[0] === Tokens.String) { - assert(next); - advance_next(stream, expression); - return parse_operators({ - name: Nodes.StringValue, - type: NodeType.Expression, - body: next[1] - }, stream, meta, ParseNodeType.String); - } else if (next[0] === Tokens.Comment || next[0] === Tokens.MultilineComment || next[0] === Tokens.Whitespace) { - // return (void next)!; - } else if (next[0] === Tokens.Special && ~[";", ")", "}", ","].indexOf(next[1])) { - // throw +(next[1] === ","); - } else if (next[0] === Tokens.Special) { - if (next[1] === "{") { - return { - name: Nodes.CodeBlock, - type: NodeType.Statment, - body: parse_body(stream, meta) - }; - } else if (next[1] === "(") { - return parse_group_expression(stream, meta); + +export function __parse(next: Token, stream: TokenStream, meta: ParseMeta): INode { + if (isSymbol(next)) { + return parse_operators(next.type === Tokens.Keyword ? ConstantNodeMap.get(next.body) ?? should_not_happen() : SymbolNode(next.body), stream, meta, indentifier); + } else if (next.type === Tokens.Keyword) { + if (next.body === "__external_var") return parse_operators(keywords_handlers.__external_var(stream, meta), stream, meta, indentifier); + return keywords_handlers[next.body]?.(stream, meta) ?? fatal(`"${ next.body }" keyword will be implemented some time later.`); + } else if (next.type === Tokens.Number) { + return parse_operators(NumberNode(next.body), stream, meta, ParseNodeKind.Number); + } else if (next.type === Tokens.String) { + return parse_operators(StringNode(next.body), stream, meta, ParseNodeKind.String); + } else if (next.type === Tokens.Operator && !comparer.includes(next.body)) { + if (next.body === "{") { + return StatmentWithBodyNode(Nodes.CodeBlock, parse_body(stream, meta), meta.outer); } - } else if (next[0] === Tokens.Operator) { - meta.ie = true; - switch (next[1]) { + meta.insideExpression = true; + switch (next.body) { + case "(": + return parse_group_expression(stream, meta); + case "[": return parse_array_expression(stream, meta); case "@": - pushDiagnosticMessage(DiagnosticSeverity.Warn, "Decorators are not supported yet!"); - break; - - case "@@": - next = advance_next(stream, "symbol-constructor-property"); - if (next[0] !== Tokens.Symbol && next[0] !== Tokens.Keyword) { + pushDiagnostic(DiagnosticSeverity.Warn, "Decorators are not emitting yet!", stream); + next = advance_next(stream, "decorator name"); + if (isSymbol(next)) { + } else if (next.type === Tokens.Operator && next.body === "(") { + var body = parse_group_expression(stream, meta); + throw "Decorators are not finished at all!"; + } else { error_unexcepted_token(next); } - advance_next(stream, end_expression); - return parse_operators({ - name: Nodes.SymbolShortcut, - type: NodeType.Expression, - body: next[1] - }, stream, meta, expression__); + break; + + case "@@": + return parse_operators(SymbolShortcutNode( + assert_next_token(stream, Tokens.Symbol | Tokens.Keyword, undefined, undefined, "symbol-constructor-property").body + ), stream, meta, ParseNodeKind.Expression); + + case "/": + return parse_operators(parse_regexp(stream), stream, meta, ParseNodeKind.Expression); case "-": case "+": case "!": - pushDiagnosticMessage(DiagnosticSeverity.Warn, `The operator "${ next[1] }" is not supported!`); + pushDiagnostic(DiagnosticSeverity.Warn, `The operator "${ next.body }" is not supported!`, stream); break; default: - pushDiagnosticMessage(DiagnosticSeverity.Warn, "?????????"); + pushDiagnostic(DiagnosticSeverity.Warn, "?????????", stream); } } return undefined!; } -/** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {import("./parser").ParseMeta} meta - */ -function parse_any(stream: TokenStream, meta: ParseMeta) { - return null; +export function parse_expression

(stream: import("./utils/stream.js").TokenStream, meta: ParseMeta, prefix?: Prefix

) { + return __parse(advance_next(stream, end_expression, prefix), stream, meta); +} + +export function parse_and_assert_last_token

(stream: TokenStream, meta: ParseMeta, token_type: Tokens, token_string?: string, prefix?: Prefix

) { + const arg = _parse(advance_next(stream, end_expression, prefix), stream, meta); + assert_next_token(stream, token_type, token_string); + return arg; } -/** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {import("./parser").ParseMeta} meta - */ -export function parse_expression(stream: import("./utils/stream.js").TokenStream, meta: ParseMeta) { - return _parse(advance_next(stream, end_expression), stream, meta); + +export function _parse_and_assert_last_token

(stream: TokenStream, meta: ParseMeta, token_type: Tokens, token_string?: string, prefix?: Prefix

) { + const arg = __parse(advance_next(stream, end_expression, prefix), stream, meta); + assert_next_token(stream, token_type, token_string); + return arg; } -// var __line = 0; -// var __column = 0; -/**@type {import("./parser").Node} */ -var __top_fn_node: Node; -export var diagnostics = [] as IDiagnostic[]; -export function pushDiagnosticMessage(severity: DiagnosticSeverity, message: string) { - diagnostics!.push(Diagnostic(severity, message)); + +export class Diagnostic implements IDiagnostic { + public readonly line: number; + public readonly column: number; + public constructor(public readonly severity: DiagnosticSeverity, public readonly message: unknown, { text_stream }: Partial = {}) { + const text = text_stream?.text.slice(0, text_stream.index); + this.line = text ? occurrences(text, '\n') + 1 : NaN; + this.column = text ? text_stream?.index! - text?.lastIndexOf('\n') : NaN; + } + public log() { + const level = (["Info", "Warn", "RuntimeError", "Error", "FatalError"] as const)[this.severity]; + console.log(`Diagnostic[Level: ${ level }, Line: ${ this.line }, Column: ${ this.column }]:`, this.message); + } } -export var promises = [] as Promise[]; + +export function pushDiagnostic(severity: DiagnosticSeverity, message: unknown, stream?: TokenStream, _diagnostics: readonly IDiagnostic[] = diagnostics) { + (_diagnostics as IDiagnostic[]).push(new Diagnostic(severity, message, stream)); +} + export interface ParserOutput { - output: Node; - diagnostics: IDiagnostic[]; - __used: Record; + readonly output: Readonly; + readonly diagnostics: readonly IDiagnostic[]; + readonly __used: Readonly; } -export var __cache = true; -export var __used: any; -/** - * @param {import("./utils/stream.js").TokenList} lexed - * @param {string} filename - * @returns {import("./parser").ParserOutput | Promise} - */ -export function parse(lexed: TokenList, filename: string, cache: boolean): ParserOutput | Promise { - resetCounter(); + +class KnownUsed implements Record { + public throw: boolean = false; + public contains: boolean = false; + [key: string]: boolean; +} + +export type { KnownUsed }; + +export function parse(stream: TokenStream, filename: string, cache: boolean): ParserOutput | Promise { + reset_counter(); __cache = cache; - var stream = Stream(lexed); - // __line = __column = 0; - __top_fn_node = { - name: Nodes.AsyncFunctionExpression, - type: NodeType.Expression, - params: [], - locals: [] - }; - __used = {}; - __top_fn_node.body = main_parse(stream, filename, __top_fn_node); - var output = { + const output: ParserOutput = { diagnostics, - output: __top_fn_node, - __used - } as ParserOutput; + __used: __used = new KnownUsed(), + output: __top_fn_node = { + name: Nodes.AsyncFunctionExpression, + type: NodeType.Expression, + params: [], + locals: [], + meta: {}, + body: undefined + } + }; + __top_fn_node.body = main_parse(stream, filename, __top_fn_node, cache) as never; return promises.length ? Promise.all(promises).then(() => output) : output; } + /* それは、にんげんはかたちをした〈モノ〉 */ -/** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {string} filename - * @param {import("./parser").Node} outer - */ -export function main_parse(stream: TokenStream, filename: string, outer: Node) { - var parsed = [] as Node[], next: Token; - while (!nullish(next = stream.next)) { - // try { - // var newlines = occurrences(next[1], '\n'); - // var __line_cache = __line += newlines; - // if (newlines <= 0) { - // __column = 0; - // } - // var __column_cache = __column += next[1].length - next[1].lastIndexOf("\n"); +export function main_parse(stream: TokenStream, filename: string, outer: INode, cache: boolean, insideExpression: boolean = false): readonly INode[] { + const parsed: INode[] = [], meta = new ParseMeta(filename, outer, cache, insideExpression); + parse_shebang(stream, outer); + for (const next of stream) { try { - var _parsed = _parse(next, stream, { outer, filename }); - _parsed && parsed.push(isArray(_parsed) ? _parsed[0] : _parsed); + const _parsed = _parse(next, stream, meta); + _parsed && parsed.push(_parsed); } catch (error) { - pushDiagnosticMessage(error && typeof error !== "string" && !(error instanceof SyntaxError) ? - DiagnosticSeverity.FatalError : - DiagnosticSeverity.Error, error); + if (String(error).startsWith("SyntaxError") ? error + "" != last! : true) { + var last = error + ""; + console.log(error && typeof error !== "string" && !(error instanceof SyntaxError) ? + DiagnosticSeverity.FatalError : + DiagnosticSeverity.Error, error as never); + } } - // } catch (error) { - // if (typeof error === "string") { - // throw `${ __line_cache }.${ __column_cache }:${ __line }.${ __column }::${ filename } - ${ error }`; - // } else { - // throw error; - // } - // } - stream.move(); } return parsed; } +function parse_shebang({ text_stream }: TokenStream, outer: INode) { + var next: string, text = ""; + if (text_stream.move() === "#") { + if (text_stream.move() === "!") { + while ((next = text_stream.move()) !== "\n" && next !== "\r") { + text += next; + } + } else text_stream.down(2); + } else text_stream.down(1); + if (__top_fn_node === outer) + __top_fn_node.meta!.shebang = text; +} diff --git a/src/lib/parsers/__all__.ts b/src/lib/parsers/__all__.ts new file mode 100644 index 0000000..c5c1287 --- /dev/null +++ b/src/lib/parsers/__all__.ts @@ -0,0 +1,11 @@ +export * from "./array-expression.js"; +export * from "./assignments.js"; +export * from "./body-parser.js"; +export * from "./call-expression.js"; +export * from "./common-expressions.js"; +export * from "./external-var.js"; +export * from "./group-expression.js"; +export * from "./keywords.js"; +export * from "./member-access.js"; +export * from "./regexp.js"; + diff --git a/src/lib/parsers/__external_var.ts b/src/lib/parsers/__external_var.ts deleted file mode 100644 index 6216199..0000000 --- a/src/lib/parsers/__external_var.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { error_unexcepted_token } from "../utils/util.js"; -import { Nodes, NodeType, Tokens } from "../enums"; -import { end_expression } from "../utils/constants.js"; -import { advance_next } from "../utils/advancers.js"; -import { Node } from "../nodes.js"; -import type { TokenStream } from "../utils/stream.js"; - -export function __external_var_creator(type: NodeType) { - return function __external_var(stream: TokenStream) { - var prefix = `External variable ${ end_expression }:`; - var next = advance_next(stream, "(", prefix); - if (next[0] !== Tokens.Special || next[1] !== "(") { - error_unexcepted_token(next); - } - next = advance_next(stream, "string", prefix); - if (next[0] !== Tokens.String) { - error_unexcepted_token(next); - } - var name = next[1]; - next = advance_next(stream, ")", prefix); - if (next[0] !== Tokens.Special || next[1] !== ")") { - error_unexcepted_token(next); - } - return { - name: Nodes.ExternalVariable, - type: type, - body: name - } as Node; - }; -} diff --git a/src/lib/parsers/array-expression.ts b/src/lib/parsers/array-expression.ts index 0e2fb43..b547e8a 100644 --- a/src/lib/parsers/array-expression.ts +++ b/src/lib/parsers/array-expression.ts @@ -1,50 +1,34 @@ -import { isArray, error_unexcepted_token } from "../utils/util.js"; -import { Nodes, NodeType, Tokens } from "../enums"; +import { error_unexcepted_token } from "../utils/util.js"; +import { Nodes, NodeType, ParseNodeKind, Tokens } from "../enums"; import { end_expression } from "../utils/constants.js"; import { advance_next } from "../utils/advancers.js"; -import { _parse, __parse } from "../parse-dummies.js"; -import type { Node, ParseMeta } from "../nodes"; +import { parse_operators, _parse, __parse } from "../parser.js"; +import { ExpressionWithBodyNode, INode, IParseMeta } from "../nodes"; import type { Token, TokenStream } from "../utils/stream.js"; -export function parse_array_expression(stream: TokenStream, meta: ParseMeta) { - /**@type {import("./parser").Node}*/ - var node: Node = { - name: Nodes.Array, - type: NodeType.Expression, - body: [] - }; - var body = node.body! as Node[]; - var parsed: Node | [Node]; - var next: Token; - while (1) { - next = advance_next(stream, end_expression); - if (next[0] === Tokens.Special && next[1] === ",") { + +export function parse_array_expression(stream: TokenStream, meta: IParseMeta) { + const body: INode[] = []; + var parsed: INode, next: Token; + while (next = advance_next(stream, end_expression)) { + if (next.type === Tokens.Operator && next.body === ",") { body.push({ name: Nodes.UndefinedValue, type: NodeType.Expression }); continue; - } else if (next[0] === Tokens.Operator && next[1] === "]") { + } else if (next.type === Tokens.Operator && next.body === "]") { break; } parsed = __parse(next, stream, meta); - if (isArray(parsed)) { - next = stream.next; - parsed = parsed[0]; - } - else - next = advance_next(stream, ']" or ",'); - if ((next[0] !== Tokens.Special || next[1] !== ",") && - (next[0] !== Tokens.Operator || next[1] !== ']')) { + next = advance_next(stream, ']" or ",'); + if (next.type !== Tokens.Operator || next.body !== "," && next.body !== ']') { error_unexcepted_token(next); } body.push(parsed); - if (next[1] === "]") { + if (next.body === "]") { break; } } - // trailing undefineds are needed here - // remove_trailing_undefined(body); - parsed = __parse(node, stream, meta); - return parsed; + return parse_operators(ExpressionWithBodyNode(Nodes.Array, body), stream, meta, ParseNodeKind.Expression); } diff --git a/src/lib/parsers/assignments.ts b/src/lib/parsers/assignments.ts index a61c100..8a14ea3 100644 --- a/src/lib/parsers/assignments.ts +++ b/src/lib/parsers/assignments.ts @@ -1,38 +1,24 @@ -import { Nodes, NodeType, AccessChainItemKind, DiagnosticSeverity } from "../enums"; -import { AssignmentOperatorTable, AssignmentOperatorTableKeys } from "../utils/table.js"; -import { Diagnostic } from "../utils/diagnostics.js"; +import { Nodes, DiagnosticSeverity } from "../enums"; +import { AssignmentOperatorTable, type AssignmentOperatorTableKeys } from "../utils/table.js"; import { end_expression } from "../utils/constants.js"; import { advance_next } from "../utils/advancers.js"; -import { diagnostics, _parse } from "../parse-dummies.js"; +import { pushDiagnostic, _parse } from "../parser.js"; +import { INode, type ParseMeta, ExpressionWithBodyAndSymbolNode } from "../nodes"; +import { optionalChainsSet } from "./member-access.js"; import type { Token, TokenStream } from "../utils/stream.js"; -import type { Node, ParseMeta, AccessChainItem } from "../nodes"; -export function parse_assignment(_sym: Node, next: Token, stream: TokenStream, meta: ParseMeta): Node | undefined { - if (name = AssignmentOperatorTable[next[1] as AssignmentOperatorTableKeys] as Nodes | undefined) { - if (_sym.name === Nodes.MemberAccessExpression) { - var body = _sym.body!; - var length = body.length; - var name: Nodes | undefined, parsed: Node, node: Node; - for (var index = 0, item: AccessChainItem; index < length; index++) { - item = body[index] as AccessChainItem; - if (item.kind === AccessChainItemKind.Optional || item.kind === AccessChainItemKind.OptionalComputed) { - diagnostics.push(Diagnostic(DiagnosticSeverity.RuntimeError, - `The left-hand side of an assignment expression may not be an optional property access.`)); - } - } + +export function parse_assignment(_sym: INode, next: Token, stream: TokenStream, meta: ParseMeta): INode | undefined { + var name: Nodes | undefined; + if (name = AssignmentOperatorTable[next.body as AssignmentOperatorTableKeys]) { + if (optionalChainsSet.has(_sym)) { + pushDiagnostic(DiagnosticSeverity.RuntimeError, `The left-hand side of an assignment expression may not be an optional property access.`, stream); } - parsed = _parse(advance_next(stream, end_expression), stream, meta) as Node; - node = { - name, - type: NodeType.Expression, - body: [_sym, parsed], - symbolName: next[1] - }; if (_sym.name !== Nodes.MemberAccessExpression && - !~meta.outer.locals!.indexOf(_sym.symbolName!) && - !~(meta.outer.nonlocals?.indexOf(_sym.symbolName!) ?? -1)) { - meta.outer.locals!.push(_sym.symbolName!); + !~meta.outer.locals!.indexOf(_sym.symbol!) && + !~(meta.outer.nonlocals?.indexOf(_sym.symbol!) ?? -1)) { + meta.outer.locals!.push(_sym.symbol!); } - return node; + return ExpressionWithBodyAndSymbolNode(name, [_sym, _parse(advance_next(stream, end_expression), stream, meta)], next.body); } } diff --git a/src/lib/parsers/body-parser.ts b/src/lib/parsers/body-parser.ts index c970445..8230f3d 100644 --- a/src/lib/parsers/body-parser.ts +++ b/src/lib/parsers/body-parser.ts @@ -1,42 +1,25 @@ -import { isArray } from "../utils/util.js"; import { Tokens, DiagnosticSeverity } from "../enums"; -import { Diagnostic } from "../utils/diagnostics.js"; -import { advance_next } from "../utils/advancers.js"; -import { _parse, diagnostics } from "../parse-dummies.js"; +import { advance_next, assert_next_token, type Prefix } from "../utils/advancers.js"; +import { _parse, pushDiagnostic } from "../parser.js"; +import type { IParseMeta, INode } from "../nodes"; import type { Token, TokenStream } from "../utils/stream.js"; -import type { ParseMeta, Node } from "../nodes"; -/** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {import("./parser").ParseMeta} meta - */ -export function parse_body(stream: TokenStream, meta: ParseMeta): Node[] { - var next: Token = advance_next(stream, "}"), tokens = [] as Node[]; - //console.log(1123124); - while ((next /*, console.log("next:", next), next*/)[0] !== Tokens.Special || next[1] !== "}") { - // console.log(next); + +export function parse_body

(stream: TokenStream, meta: IParseMeta, prefix?: Prefix

): INode[] { + const nodes: INode[] = []; + var next: Token; + while ((next = advance_next(stream, "}", prefix)).type !== Tokens.Operator || next.body !== "}") { try { - var _parsed = _parse(next, stream, meta); - if (isArray(_parsed)) { - _parsed[0] && tokens.push(_parsed[0]); - next = stream.next; - if (next[0] === Tokens.Special && next[1] === "}") { - break; - } - } else { - _parsed && tokens.push(_parsed); - next = advance_next(stream, "}"); - } + const _parsed = _parse(next, stream, meta); + _parsed && nodes.push(_parsed); } catch (_e) { - if (_e === 1) { - break; - } else if (_e === 0) { - break; - } else { - diagnostics.push(Diagnostic(DiagnosticSeverity.Error, String(_e))); - next = advance_next(stream, "}"); - } + pushDiagnostic(DiagnosticSeverity.Error, _e, stream); } } - return tokens; + return nodes; +} + +export function parse_next_body

(stream: TokenStream, meta: IParseMeta, prefix?: Prefix

): INode[] { + assert_next_token(stream, Tokens.Operator, "{", prefix); + return parse_body(stream, meta, prefix); } diff --git a/src/lib/parsers/call-expression.ts b/src/lib/parsers/call-expression.ts index 7a4e4f6..784ba86 100644 --- a/src/lib/parsers/call-expression.ts +++ b/src/lib/parsers/call-expression.ts @@ -1,44 +1,31 @@ -import { isArray, error_unexcepted_token } from "../utils/util.js"; -import { Nodes, NodeType, Tokens } from "../enums"; +import { error_unexcepted_token } from "../utils/util.js"; +import { Tokens } from "../enums"; import { end_expression } from "../utils/constants.js"; import { advance_next } from "../utils/advancers.js"; -import { __parse } from "../parse-dummies.js"; +import { __parse } from "../parser.js"; +import { type IParseMeta, type INode, ConstantNodeMap } from "../nodes"; import type { Token, TokenStream } from "../utils/stream.js"; -import type { ParseMeta, Node } from "../nodes"; -export function parse_call_expression(next: Token, stream: TokenStream, meta: ParseMeta) { - var arg: Node | [Node], args = [] as Node[]; - if (next[0] !== Tokens.Special || next[1] !== ")") { - while (1) { - if (next[0] === Tokens.Special && next[1] === ")") { - break; - } - if (next[0] === Tokens.Special && next[1] === ",") { - args.push({ - name: Nodes.UndefinedValue, - type: NodeType.Expression - }); - next = advance_next(stream, end_expression); - continue; - } else { - arg = __parse(next, stream, meta) as Node | [Node]; - } - if (isArray(arg)) { - next = stream.next; - arg = arg[0]; - } else - next = advance_next(stream, ")"); - args.push(arg); - if (next[0] === Tokens.Special) { - if (next[1] === ")") { - break; - } else if (next[1] !== ",") { - error_unexcepted_token(next); - } - } else - error_unexcepted_token(next); + +export function parse_call_expression(next: Token, stream: TokenStream, meta: IParseMeta): INode[] { + const args: INode[] = []; + while (next.type !== Tokens.Operator || next.body !== ")") { + if (next.type === Tokens.Operator && next.body === ",") { + args.push(ConstantNodeMap.get("undefined")!); next = advance_next(stream, end_expression); + continue; } + args.push(__parse(next, stream, meta)); + next = advance_next(stream, ")"); + if (next.type === Tokens.Operator) { + if (next.body === ")") { + break; + } else if (next.body !== ",") { + error_unexcepted_token(next); + } + } else + error_unexcepted_token(next); + next = advance_next(stream, end_expression); } return args; } diff --git a/src/lib/parsers/common-expressions.ts b/src/lib/parsers/common-expressions.ts index 55abb80..e701ffc 100644 --- a/src/lib/parsers/common-expressions.ts +++ b/src/lib/parsers/common-expressions.ts @@ -1,35 +1,14 @@ -import { isArray } from "../utils/util.js"; -import { Nodes, NodeType } from "../enums"; -import { CommonOperatorTable, CommonOperatorTableKeys } from "../utils/table.js"; +import { Nodes } from "../enums"; +import { CommonOperatorTable, type CommonOperatorTableKeys } from "../utils/table.js"; import { end_expression } from "../utils/constants.js"; import { advance_next } from "../utils/advancers.js"; -import { __parse } from "../parse-dummies.js"; +import { __parse } from "../parser.js"; import type { Token, TokenStream } from "../utils/stream.js"; -import type { Node, ParseMeta } from "../nodes"; +import { ExpressionWithBodyAndSymbolNode, INode, IParseMeta } from "../nodes"; -export function parse_common_expressions(_sym: Node, next: Token, stream: TokenStream, meta: ParseMeta) { - var parsed: Node, node: Node, name = CommonOperatorTable[next[1] as CommonOperatorTableKeys] as Nodes | undefined; - if (name) { - parsed = __parse(advance_next(stream, end_expression), stream, meta) as Node; - node = { - name, - type: NodeType.Expression, - body: [_sym, parsed], - symbolName: next[1] - }; - if (name === Nodes.ExponentiationExpression) { - // Here is the logic: - // If parsed is a common | assignment expression - // @ts-ignore - if (typeof parsed.symbolName === "string" && isArray(parsed.body)) { - // - // @ts-ignore - node.body[1] = parsed.body[0]; - // @ts-ignore - parsed.body[0] = node; - } - return parsed; - } - return node; - } + +const table: Readonly> = { and: "&&", or: "||" }; +export function parse_common_expressions(_sym: INode, next: Token, stream: TokenStream, meta: IParseMeta): INode | undefined { + const name: Nodes | undefined = CommonOperatorTable[next.body as CommonOperatorTableKeys]; + return name && ExpressionWithBodyAndSymbolNode(name, [_sym, __parse(advance_next(stream, end_expression), stream, meta)], table[next.body] ?? next.body); } diff --git a/src/lib/parsers/external-var.ts b/src/lib/parsers/external-var.ts new file mode 100644 index 0000000..b72f099 --- /dev/null +++ b/src/lib/parsers/external-var.ts @@ -0,0 +1,17 @@ +import { Nodes, NodeType, Tokens } from "../enums"; +import { assert_next_token } from "../utils/advancers.js"; +import { undefined } from "../utils/util.js"; +import { type INode, Node, ParseMeta } from "../nodes.js"; +import type { TokenStream } from "../utils/stream.js"; + + +export function __external_var_creator(type: NodeType) { + return function __external_var(stream: TokenStream, meta: ParseMeta): INode { + const prefix = `External variable expression:`; + assert_next_token(stream, Tokens.Operator, "(", prefix); + assert_next_token(stream, Tokens.String, undefined, prefix); + const { body } = stream.next; + assert_next_token(stream, Tokens.Operator, ")", prefix); + return new Node(Nodes.ExternalVariable, type, undefined, type === NodeType.Statment ? meta.outer : undefined, body, undefined); + }; +} diff --git a/src/lib/parsers/group-expression.ts b/src/lib/parsers/group-expression.ts index 4d529a6..b7549fe 100644 --- a/src/lib/parsers/group-expression.ts +++ b/src/lib/parsers/group-expression.ts @@ -1,29 +1,27 @@ -import { Nodes, NodeType, Tokens } from "../enums.js"; +import { Nodes, NodeType, ParseNodeKind, Tokens } from "../enums.js"; import { advance_next } from "../utils/advancers.js"; import { end_expression } from "../utils/constants.js"; -import { error_unexcepted_token, includes, isArray } from "../utils/util.js"; -import { __parse } from "../parse-dummies.js"; -import { Token, TokenStream } from "../utils/stream.js"; -import type { Node, ParseMeta } from "../nodes.js"; +import { error_unexcepted_token, includes } from "../utils/util.js"; +import { parse_operators, __parse } from "../parser.js"; +import type { Token, TokenStream } from "../utils/stream.js"; +import { ExpressionWithBodyNode, INode, IParseMeta } from "../nodes.js"; +import { MultiValueComparer } from "../utils/comparer.js"; -export function parse_group_expression(stream: TokenStream, meta: ParseMeta) { - var prefix = "Group expression:" as const, - next: Token, - body: Node[] = [], - node = { name: Nodes.GroupExpression, type: NodeType.Expression, body } as Node, - parsed: Node | [Node]; - while (next = advance_next(stream, end_expression, prefix), next[0] !== Tokens.Special || next[1] !== ")") { + +const group_end_comparer = new MultiValueComparer(",)"); +export function parse_group_expression(stream: TokenStream, meta: IParseMeta) { + const prefix = "Group expression:", body: INode[] = [], + node: INode = ExpressionWithBodyNode(Nodes.GroupExpression, body); + var next: Token, parsed: INode; + while (next = advance_next(stream, end_expression, prefix), next.type !== Tokens.Operator || next.body !== ")") { parsed = __parse(next, stream, meta); - if (isArray(parsed)) { - parsed = parsed[0]; - next = stream.next; - } else next = advance_next(stream, end_expression, prefix); + next = advance_next(stream, end_expression, prefix); body.push(parsed); - if (next[0] !== Tokens.Special && !includes(",)", next[1])) { + if (next.type !== Tokens.Operator || !group_end_comparer.includes(next.body)) { error_unexcepted_token(next); - } else if (next[1] === ")") { + } else if (next.body === ")") { break; } } - return __parse(node, stream, meta); + return parse_operators(node, stream, meta, ParseNodeKind.Expression); } \ No newline at end of file diff --git a/src/lib/parsers/keywords.ts b/src/lib/parsers/keywords.ts new file mode 100644 index 0000000..b159f33 --- /dev/null +++ b/src/lib/parsers/keywords.ts @@ -0,0 +1,527 @@ +import { + isArray, include, undefined, SyntaxError, random_var_name, includes, + error_unexcepted_token, assert_type, assert_token, fatal, auto_variables_comparer, should_not_happen +} from "../utils/util.js"; +import { _echo } from "../utils/_echo.js"; +import { FunctionNodeKind, Nodes, ParameterNodeKind, NodeType, AccessChainItemKind, Tokens, DiagnosticSeverity } from "../enums"; +import { lex } from "../lexer.js"; +import { member_access_operators, end_expression, auto_variables } from "../utils/constants.js"; +import { parse_member_access } from "./member-access.js"; +import { advance_next, assert_next_token } from "../utils/advancers.js"; +import { parse_body, parse_next_body } from "./body-parser.js"; +import { __cache, main_parse, promises, _parse, __parse, __used, parse_and_assert_last_token, pushDiagnostic, parse_expression } from "../parser.js"; +import { __external_var_creator } from "./external-var.js"; +import { parse_call_expression } from "./call-expression.js"; +import { type INode, type IClassNode, AccessChainItem, ParseMeta, ParameterNode, Node, SymbolNode, StatmentWithBodyNode, TryStatmentNode, Writable, IfStatmentNode, ExpressionWithBodyNode, PrefixlessSymbolNode, ExpressionWithBodyAndOuterNode, ExpressionWithBodyAndArgsNode, ConstantNodeMap } from "../nodes"; +import type { TokenStream } from "../utils/stream.js"; +import { MultiValueComparer } from "../utils/comparer.js"; + + +type KeywordParsers = Readonly Readonly>>; +const try_phrases = new MultiValueComparer(["catch", "else", "finally"]); +const keepStatmentStuff = [',', ')'].join('" | "') + member_access_operators.join('" | "'); +const awaitOps = ['any', 'all', 'allSettled', 'race']; +const awaitOpsComparer = new MultiValueComparer(awaitOps); +const awaitOpsJoined = awaitOps.join('" | "'); +export const keywords_handlers = { + /** + * @param {import("./utils/stream.js").TokenStream} stream + * @param {import("./parser").ParseMeta} meta + */ + nonlocal(stream, meta) { + if (!meta.outer.nonlocals) { + throw "Nonlocal statment: this statment cannot be used in top-level scope!"; + } + const next = assert_next_token(stream, Tokens.Symbol); + meta.outer.nonlocals.push(next.body); + meta.outer.locals = meta.outer.locals!.filter(sym => sym !== next.body); + return { + name: Nodes.Empty, + type: NodeType.Ephemerial + }; + }, + /** + * @param {import("./utils/stream.js").TokenStream} stream + * @param {import("./parser").ParseMeta} meta + */ + include(stream, meta) { + var next = advance_next(stream, `string" | "{`), node: INode, file: URL; + if (next.type === Tokens.String) { + node = { + name: Nodes.IncludeStatment, + type: NodeType.Expression + }; + } else if (next.type === Tokens.Operator && next.body === "{") { + node = { + name: Nodes.NamedIncludeStatment, + type: NodeType.Statment, + outerBody: meta.outer + }; + assert_next_token(stream, Tokens.Operator, "}", "Include statment:"); + assert_next_token(stream, Tokens.Keyword, "from", "Include statment:"); + assert_next_token(stream, Tokens.String, undefined, "Include statment:"); + } else { + error_unexcepted_token(next); + } + file = new URL(next.body, meta.filename); + const included = include(file, __cache); + /** + * @param {string} included + */ + function _(included: string) { + var parsed = main_parse(lex(included), file.href, meta.outer, meta.cache); + node.body = parsed as never; + return parsed; + } + node.body = (typeof included !== "string" ? promises[promises.push(included.then(_)) - 1] : _(included)) as never; + return node; + }, + /** + * @param {import("./utils/stream.js").TokenStream} stream + * @param {import("./parser").ParseMeta} meta + */ + if(stream, meta) { + assert_next_token(stream, Tokens.Operator, "("); + var expression = parse_and_assert_last_token(stream, meta, Tokens.Operator, ")"), expressions: INode[]; + var next = advance_next(stream, "{"); + if (next.type === Tokens.Operator && next.body === "{") { + expressions = parse_body(stream, meta); + } else { + expressions = [_parse(next, stream, meta)]; + } + var node = IfStatmentNode(expressions as Node[], meta.outer as Node, expression as Node); + try { + next = stream.try("else"); + } catch (error) { + return node; + } + if (next.type === Tokens.Keyword && next.body === "else") { + stream.confirm_try(); + next = advance_next(stream, "if"); + if (next.type === Tokens.Keyword && next.body === "if") { + node.meta.elseif = keywords_handlers.if(stream, meta) as Node; + } else { + node.meta.else = StatmentWithBodyNode(Nodes.ElseStatment, next.type === Tokens.Operator && next.body === "{" ? parse_body(stream, meta) : [_parse(next, stream, meta) as INode], meta.outer); + } + } else { + stream.cancel_try(); + } + return node; + }, + true() { + return { + name: Nodes.TrueValue, + type: NodeType.Expression + }; + }, + false() { + return { + name: Nodes.FalseValue, + type: NodeType.Expression + }; + }, + undefined() { + return { + name: Nodes.UndefinedValue, + type: NodeType.Expression + }; + }, + null() { + return { + name: Nodes.NullValue, + type: NodeType.Expression + }; + }, + NaN() { + return { + name: Nodes.NaNValue, + type: NodeType.Expression + }; + }, + Infinity() { + return { + name: Nodes.InfinityValue, + type: NodeType.Expression + }; + }, + arguments() { + return { + name: Nodes.ArgumentsObject, + type: NodeType.Expression + }; + }, + // /** + // * @param {import("./utils/stream.js").TokenStream} stream + // */ + // interface(stream) { + // // const prefix = "Interface statment:"; + // // var next = advance_next(stream, "symbol", prefix); + // // if (next[0] !== Tokens.Symbol) { + // // error_unexcepted_token(next); + // // } + // // next = advance_next(stream, "{", prefix); + // // if (next[0] !== Tokens.Special || next[1] !== "{") { + // // error_unexcepted_token(next); + // // } + // assert<0>(0, ""); + // }, + /** + * @param {import("./utils/stream.js").TokenStream} stream + */ + async(stream, meta) { + assert_next_token(stream, Tokens.Keyword, "fn", "Async(Generator?)Function statment:"); + return keywords_handlers.fn(stream, meta, FunctionNodeKind.Async); + }, + not(stream, meta) { + return ExpressionWithBodyNode(Nodes.LiteralLogicalNotExpression, [__parse(advance_next(stream, end_expression), stream, meta)]); + }, + __external_var: __external_var_creator(NodeType.Expression), + __external: __external_var_creator(NodeType.Statment), + fn(stream, meta, type: FunctionNodeKind = FunctionNodeKind.Sync) { + type _1 = "Function statment:"; + type _2 = `Generator${ _1 }`; + type _3 = `Async${ _1 }`; + type _4 = `Async${ _2 }`; + var _prefix = "Function statment:"; + var _ = [ + _prefix, + "Generator" + _prefix, + "Async" + _prefix + ] as string[] as [_1, _2, _3, _4]; + _[3] = "Async" + _[1] as _4; + const prefix = _[type]; + var name = ""; + var params: ParameterNode[] = []; + var next = advance_next(stream, 'symbol" | "(', prefix); + var hasRest = false; + var index: number; + if (next.type === Tokens.Operator && next.body === "*") { + if (type === FunctionNodeKind.Sync) { + type = FunctionNodeKind.Generator; + } else if (type === FunctionNodeKind.Async) { + type = FunctionNodeKind.AsyncGenerator; + } + next = advance_next(stream, "symbol", prefix); + } else if (type === FunctionNodeKind.Generator || type === FunctionNodeKind.AsyncGenerator) { + throw `${ prefix } Unexcepted token '${ next.body }' ('*' excepted)`; + } + if (next.type === Tokens.Symbol) { + name = next.body; + next = advance_next(stream, "(", prefix); + } + if (next.type !== Tokens.Operator || next.body !== "(") { + error_unexcepted_token(next); + } + const node: INode = { + name: type as never, + type: NodeType.Expression, + params, + symbol: name, + locals: [], + nonlocals: [] + }; + const innerMeta = new ParseMeta(meta.filename, node, meta.cache); + for (; ;) { + var paramType = ParameterNodeKind.Normal; + next = advance_next(stream, "symbol", prefix); + if (next.type === Tokens.Operator && next.body === ",") { + params.push(new ParameterNode("", ParameterNodeKind.Empty, undefined)); + continue; + } + if (next.type === Tokens.Operator && next.body === "...") { + if (hasRest) { + throw SyntaxError(`Cannot append second rest parameter to ${ name ? `function ${ name }` : "anonymous function" }`); + } + hasRest = true; + paramType = ParameterNodeKind.Rest; + next = advance_next(stream, "symbol", prefix); + } + if (next.type === Tokens.Symbol) { + const { body } = next; + next = advance_next(stream, ",", prefix); + + if (next.type === Tokens.Operator && next.body === "=") { + var parsed: INode | undefined = _parse(advance_next(stream, end_expression, prefix), stream, innerMeta); + next = advance_next(stream, end_expression, prefix); + } + params.push(new ParameterNode(body, paramType, parsed)); + + if (next.type === Tokens.Operator && next.body === ")") { + break; + } else if (next.type !== Tokens.Operator || next.body !== ",") { + error_unexcepted_token(next); + } + } else if (next.type === Tokens.Operator && next.body === ",") { + params.push(new ParameterNode("", paramType || ParameterNodeKind.Empty, undefined)); + } else if (next.type === Tokens.Operator && next.body === ")") { + break; + } else { + error_unexcepted_token(next); + } + } + index = params.length; + for (; index && params[--index].kind === ParameterNodeKind.Empty;) + params.pop(); + next = advance_next(stream, "{", prefix); + if (next.type === Tokens.Operator && next.body === "=>") { + next = advance_next(stream, end_expression, prefix); + if (next.type !== Tokens.Operator || next.body !== "{") { + innerMeta.insideExpression = true; + node.body = [StatmentWithBodyNode(Nodes.ReturnStatment, [_parse(next, stream, innerMeta)], node)]; + return node; + } + } + assert_token(next, Tokens.Operator, "{"); + node.body = parse_body(stream, innerMeta); + return node; + }, + class(stream, meta) { + (fatal("TODO: Finish implementation of classes after i finish the unification node objects and regular objects")); + const type = meta.insideExpression ? NodeType.Expression : NodeType.Statment; + const node = { + name: Nodes.ClassExpression, + type, + getters: [], + settets: [], + props: [], + methods: [], + privateGetters: [], + privateSettets: [], + privateMethods: [], + privateProps: [], + mixins: [], + outerBody: meta.outer + } as IClassNode; + const prefix = "Class expression:"; + var next = advance_next(stream, ["{", "symbol", "extends"].join('" | "'), prefix); + if (next.type === Tokens.Symbol) { + node.symbol = next.body; + next = advance_next(stream, end_expression, prefix); + } + if (next.type === Tokens.Keyword && next.body === "extends") { + var extender = _parse(advance_next(stream, end_expression, prefix), stream, meta); + node.extends = extender; + next = advance_next(stream, "any", prefix); + if (next.type === Tokens.Keyword && next.body === "with") { + while (next.type !== Tokens.Operator || next.body !== "{") { + var parsed = _parse(advance_next(stream, end_expression, prefix), stream, meta); + next = advance_next(stream, "any", prefix); + if (next.type !== Tokens.Operator || (next.body !== "," && next.body !== "{")) { + error_unexcepted_token(next); + } + node.mixins.push(parsed); + } + } + } + if (!type && !node.symbol) { + pushDiagnostic(DiagnosticSeverity.Warn, "Class statment doesn't have a name - a random name will be given during compilation", stream); + node.symbol = random_var_name(); + } + if (next.type === Tokens.Operator && next.body === "{") { + while ((next = advance_next(stream, ["keyword", "symbol", "string"].join('" | "'), prefix)).body !== "}" && + next.type !== Tokens.Operator) { + if (includes([Tokens.Symbol, Tokens.String, Tokens.Keyword], next.type)) { + var next2 = advance_next(stream, ["=", "symbol", "("].join('" | "'), prefix); + if (next.type === Tokens.Keyword) + if (next2.type === Tokens.Symbol && includes(["get", "set", "async"] as const, next.body)) { + } + } + } + } else error_unexcepted_token(next); + return node; + }, + return(stream, meta) { + return StatmentWithBodyNode(Nodes.ReturnStatment, [_parse(advance_next(stream, end_expression, "Return statment:"), stream, meta)], meta.outer); + }, + throw(stream, meta) { + __used.throw = true; + return ExpressionWithBodyNode(Nodes.ThrowExpression, [__parse(advance_next(stream, end_expression, "Throw statment:"), stream, meta)]); + }, + yield(stream, meta) { + var next = advance_next(stream, end_expression, "Yield expression:"); + var yield_from = next.type === Tokens.Operator && next.body === "*"; + return ExpressionWithBodyAndOuterNode(yield_from ? Nodes.YieldFromExpression : Nodes.YieldExpression, [yield_from ? + __parse(advance_next(stream, end_expression), stream, meta) : + __parse(next, stream, meta)], meta.outer as Node); + }, + await(stream, meta) { + if (meta.outer.name === Nodes.FunctionExpression) { + pushDiagnostic(DiagnosticSeverity.RuntimeError, `Using await inside Sync Function Expression will fail at runtime`, stream); + } + if (meta.outer.name === Nodes.GeneratorFunctionExpression) { + pushDiagnostic(DiagnosticSeverity.Warn, `Await is not intended to be used inside Generator Functions`, stream); + } + const prefix = "Await expression:"; + var next = advance_next(stream, end_expression, prefix); + if (next.type === Tokens.Operator && next.body === ".") { + next = advance_next(stream, awaitOpsJoined, prefix); + if (next.type === Tokens.Symbol && awaitOpsComparer.includes(next.body)) { + var expression = ExpressionWithBodyAndArgsNode(Nodes.CallExpression, [PrefixlessSymbolNode(`p.${ next.body }`)], [parse_expression(stream, meta, prefix) as Node]); + } else { + error_unexcepted_token(next); + } + } else { + expression = _parse(next, stream, meta) as never; + } + return ExpressionWithBodyAndOuterNode(Nodes.AwaitExpression, [expression], meta.outer as Node); + }, + this() { + return PrefixlessSymbolNode(`this`); + }, + keep(stream, meta) { + const prefix = "Keep statment:"; + const args: INode[] = []; + assert_next_token(stream, Tokens.Operator, "("); + var next = advance_next(stream, "symbol", prefix); + while (next.type !== Tokens.Operator || next.body !== ")") { + if (next.type === Tokens.Operator && next.body === ",") { + next = advance_next(stream, end_expression); + continue; + } else { + var next2, isConstantObject = next.type === Tokens.Keyword && auto_variables_comparer.includes(next.body), + arg: INode = isConstantObject ? ConstantNodeMap.get(next.body) ?? should_not_happen() : SymbolNode(next.body); + if (!(isConstantObject || next.type === Tokens.Symbol)) { + error_unexcepted_token(next); + } + next2 = advance_next(stream, keepStatmentStuff, prefix); + if (next2.type === Tokens.Operator && includes(member_access_operators, next2.body)) { + arg = parse_member_access(arg, next, stream, meta); + } else { + isConstantObject && pushDiagnostic(DiagnosticSeverity.RuntimeError, `Assignment to "${ next.type }" will fail at runtime!`, stream); + next = next2; + } + } + args.push(arg); + if (next.type === Tokens.Operator) { + if (next.body === ")") { + break; + } else if (next.body !== ",") { + error_unexcepted_token(next); + } + } else + error_unexcepted_token(next); + next = advance_next(stream, "symbol"); + } + return { + name: Nodes.KeepStatment, + type: NodeType.Statment, + body: parse_next_body(stream, meta), + args, + outerBody: meta.outer + } as INode; + }, + new(stream, meta) { + const expression = parse_expression(stream, meta); + // The logic is to intercept from parsed node last CallExpression and mutate it into NewExpression + const node: INode = ExpressionWithBodyNode(Nodes.NewExpression, [expression]), intercepted: INode[] = []; + var body = expression.body, expression_ = expression; + while (expression_.type === NodeType.Expression && isArray(body)) { + expression_ = (body[0] as INode).name ? body[0] as INode : (body[0] as AccessChainItem).body; + intercepted.push(expression_); + body = expression_.body; + } + for (var index = 0, length = intercepted.reverse().length; index < length; index++) { + const intercepted_ = intercepted[index]; + if (intercepted_.name === Nodes.CallExpression) { + const expressionAbove = intercepted[index + 1] ?? expression; + (node.body as INode[])[0] = intercepted_; + if (expressionAbove.name !== Nodes.MemberAccessExpression) { + (expressionAbove.body as INode[])[0] = node; + } else { + (expressionAbove.body as AccessChainItem[])[0] = new AccessChainItem(AccessChainItemKind.Head, node); + } + return expression; + } + } + return node; + }, + // TODO + try(stream, meta) { + const prefix = "Try statment:"; + const node = TryStatmentNode(parse_next_body(stream, meta, prefix) as Node[], undefined!, undefined!, undefined!, meta.outer as Node); + var next = stream.try(end_expression, prefix); + var useless = true; + var word: string; + while (next.type === Tokens.Keyword && try_phrases.includes(word = next.body)) { + useless = false; + stream.confirm_try(); + const toAppend = word === "catch" ? StatmentWithBodyNode(Nodes.CatchStatment, undefined!, meta.outer) as Writable : undefined; + if (word === "catch") { + next = advance_next(stream, end_expression, prefix); + if (next.type === Tokens.Operator && next.body === "(") { + toAppend!.symbol = assert_next_token(stream, Tokens.Symbol).body; + assert_next_token(stream, Tokens.Operator, ")", prefix); + advance_next(stream, end_expression, prefix); + } + toAppend!.body = parse_body(stream, meta); + node.meta[word] = toAppend!; + } else { + node.meta[word] = parse_next_body(stream, meta) as Node[]; + } + next = stream.try(end_expression, prefix); + } + stream.cancel_try(); + if (useless) { + pushDiagnostic(DiagnosticSeverity.Error, `Try statment was not followed by catch, else or finally clauses`, stream); + node.meta.finally = []; + } + return node; + }, + else(stream) { + error_unexcepted_token(stream.next); + }, + while(stream, meta) { + const prefix = "While statment:"; + assert_next_token(stream, Tokens.Operator, "(", prefix); + const arg = parse_and_assert_last_token(stream, meta, Tokens.Operator, ")", prefix); + return { + name: Nodes.WhileStatment, + type: NodeType.Statment, + body: parse_next_body(stream, meta, prefix), + args: [arg], + outerBody: meta.outer + }; + }, + do(stream, meta) { + const prefix = "Do-While statment:"; + var body = parse_next_body(stream, meta, prefix); + assert_next_token(stream, Tokens.Keyword, "while", prefix); + assert_next_token(stream, Tokens.Operator, "(", prefix); + return { + name: Nodes.DoWhileStatment, + type: NodeType.Statment, + body, + args: [parse_and_assert_last_token(stream, meta, Tokens.Operator, ")", prefix)], + outerBody: meta.outer + }; + }, + to(stream) { + error_unexcepted_token(stream.next); + }, + as(stream) { + error_unexcepted_token(stream.next); + }, + import(stream, meta): INode { + assert_next_token(stream, Tokens.Operator, "(", "Import statment:"); + return { + name: Nodes.ImportExpression, + type: NodeType.Expression, + body: parse_call_expression(advance_next(stream, end_expression, "Import statment:"), stream, meta) + }; + }, + for(stream, meta) { + assert_next_token(stream, Tokens.Symbol, "range", "For statment:"); + assert_next_token(stream, Tokens.Operator, "(", "For statment:"); + return { + name: Nodes.ForRangeStatment, + type: NodeType.Statment, + args: [ + parse_and_assert_last_token(stream, meta, Tokens.Keyword, "to"), + parse_and_assert_last_token(stream, meta, Tokens.Keyword, "as"), + SymbolNode(assert_next_token(stream, Tokens.Symbol, undefined, "For statment:").body) + ], + body: (assert_next_token(stream, Tokens.Operator, ")", "For statment:"), parse_next_body(stream, meta)), + outerBody: meta.outer + }; + } +} as KeywordParsers as Readonly Readonly>>; diff --git a/src/lib/parsers/member-access.ts b/src/lib/parsers/member-access.ts index aa82809..a0109c9 100644 --- a/src/lib/parsers/member-access.ts +++ b/src/lib/parsers/member-access.ts @@ -1,103 +1,53 @@ -import { isArray, includes, error_unexcepted_token } from "../utils/util.js"; -import { Nodes, NodeType, AccessChainItemKind, Tokens } from "../enums"; -import { meberAccessOperators, end_expression } from "../utils/constants.js"; -import { __parse, __used, _parse } from "../parse-dummies.js"; -import { advance_next, downgrade_next } from "../utils/advancers.js"; +import { Nodes, AccessChainItemKind, Tokens, ParseNodeKind } from "../enums"; +import { __parse, __used, _parse, parse_operators } from "../parser.js"; +import { MultiValueComparer } from "../utils/comparer.js"; +import { advance_next, assert_next_token } from "../utils/advancers.js"; +import { member_access_operators, end_expression } from "../utils/constants.js"; +import { type INode, type ParseMeta, AccessChainItem, PrefixlessSymbolNode, ExpressionWithBodyNode } from "../nodes"; import type { Token, TokenStream } from "../utils/stream.js"; -import type { Node, ParseMeta, AccessChainItem } from "../nodes"; +import { should_not_happen } from "../utils/util.js"; -export function _parseMemberAccess(sym: Node, next: Token, stream: TokenStream, meta: ParseMeta) { - var chain = [{ - kind: AccessChainItemKind.Head, - body: sym - }] as AccessChainItem[]; - while (next[0] === Tokens.Operator && includes(meberAccessOperators, next[1])) { - if (next[1] === ".") { - next = advance_next(stream, "symbol"); - if (next[0] !== Tokens.Symbol && next[0] !== Tokens.Keyword) { - error_unexcepted_token(next); - } - chain.push({ - kind: AccessChainItemKind.Normal, - body: { name: Nodes.SymbolNoPrefix, type: NodeType.Expression, symbolName: next[1] } - }); - } else if (next[1] === "[") { - var parsed = __parse(advance_next(stream, end_expression), stream, meta); - if (isArray(parsed)) { - next = stream.next; - parsed = parsed[0]; - } else { - next = advance_next(stream, "]"); - } - if (next[0] !== Tokens.Operator || next[1] !== "]") { - error_unexcepted_token(next); - } - chain.push({ - kind: AccessChainItemKind.Computed, - body: parsed - }); - } else if (next[1] === "?.") { - next = advance_next(stream, "symbol"); - if (next[0] !== Tokens.Symbol && next[0] !== Tokens.Keyword) { - error_unexcepted_token(next); - } - chain.push({ - kind: AccessChainItemKind.Optional, - body: { name: Nodes.SymbolNoPrefix, type: NodeType.Expression, symbolName: next[1] } - }); - } else if (next[1] === "?.[") { - var parsed = __parse(advance_next(stream, end_expression), stream, meta); - if (isArray(parsed)) { - next = stream.next; - parsed = parsed[0]; - } else { - next = advance_next(stream, "]"); - } - if (next[0] !== Tokens.Operator || next[1] !== "]") { - error_unexcepted_token(next); - } - chain.push({ - kind: AccessChainItemKind.OptionalComputed, - body: parsed - }); - } else if (next[1] === "!.") { - next = advance_next(stream, "symbol"); - if (next[0] !== Tokens.Symbol && next[0] !== Tokens.Keyword) { - error_unexcepted_token(next); - } - __used.na = true; - chain.push({ - kind: AccessChainItemKind.NormalNullAsserted, - body: { name: Nodes.SymbolNoPrefix, type: NodeType.Expression, symbolName: next[1] } - }); - } else if (next[1] === "![") { - var parsed = __parse(advance_next(stream, end_expression), stream, meta); - if (isArray(parsed)) { - next = stream.next; - parsed = parsed[0]; - } else { - next = advance_next(stream, "]"); + +const memberAccessOperatorsComparer = new MultiValueComparer(member_access_operators); +export const optionalChainsSet = new WeakSet; +export function parse_member_access(sym: INode, next: Token, stream: TokenStream, meta: ParseMeta) { + const chain = [new AccessChainItem(AccessChainItemKind.Head, sym)], node = ExpressionWithBodyNode(Nodes.MemberAccessExpression, chain); + while (next.type === Tokens.Operator && memberAccessOperatorsComparer.includes(next.body)) { + stream.confirm_try(); + switch (next.body) { + case ".": + chain.push(new AccessChainItem(AccessChainItemKind.Normal, PrefixlessSymbolNode(assert_next_token(stream, Tokens.Symbol | Tokens.Keyword).body))); + break; + + case "[": { + const parsed = __parse(advance_next(stream, end_expression), stream, meta); + assert_next_token(stream, Tokens.Operator, "]"); + chain.push(new AccessChainItem(AccessChainItemKind.Computed, parsed)); + break; } - if (next[0] !== Tokens.Operator || next[1] !== "]") { - error_unexcepted_token(next); + + case "?.": + optionalChainsSet.add(node); + chain.push(new AccessChainItem(AccessChainItemKind.Optional, PrefixlessSymbolNode(assert_next_token(stream, Tokens.Symbol | Tokens.Keyword).body))); + break; + + case "?.[": { + optionalChainsSet.add(node); + const parsed = __parse(advance_next(stream, end_expression), stream, meta); + assert_next_token(stream, Tokens.Operator, "]"); + chain.push(new AccessChainItem(AccessChainItemKind.OptionalComputed, parsed)); + break; } - __used.na = true; - chain.push({ - kind: AccessChainItemKind.ComputedNullAsserted, - body: parsed - }); - } else { + + default: + should_not_happen(); + } + try { + next = stream.try("operator"); + } catch { break; } - next = advance_next(stream, "any"); } - downgrade_next(stream); - return chain; -} -export function parseMemberAccess(sym: Node, next: Token, stream: TokenStream, meta: ParseMeta) { - return _parse({ - name: Nodes.MemberAccessExpression, - type: NodeType.Expression, - body: _parseMemberAccess(sym, next, stream, meta), - }, stream, meta); + stream.cancel_try(); + return ExpressionWithBodyNode(Nodes.MemberAccessExpression, chain); } diff --git a/src/lib/parsers/object-expression.ts b/src/lib/parsers/object-expression.ts new file mode 100644 index 0000000..0eb9dc5 --- /dev/null +++ b/src/lib/parsers/object-expression.ts @@ -0,0 +1,23 @@ +import { Nodes, NodeType, Tokens } from "../enums.js"; +import { advance_next } from "../utils/advancers.js"; +import { end_expression } from "../utils/constants.js"; +import { assert_token } from "../utils/util.js"; +import type { INode, ObjectNode, IParseMeta } from "../nodes.js"; +import type { Token, TokenStream } from "../utils/stream.js"; + + +function recursive_attrs(stream: TokenStream, next: Token, meta: IParseMeta, mods: string[]): void { + +} +export function parse_object_expression(stream: TokenStream, meta: IParseMeta): INode { + var node: ObjectNode = { + name: Nodes.ObjectExpression, + type: NodeType.Expression, + body: [] + }, next; + while (next = advance_next(stream, end_expression), next.type === Tokens.Operator && next.body === ",") { + recursive_attrs(stream, next, meta, []); + } + assert_token(next, Tokens.Operator, "}"); + return node as never; +} \ No newline at end of file diff --git a/src/lib/parsers/regexp.ts b/src/lib/parsers/regexp.ts new file mode 100644 index 0000000..9c1e74b --- /dev/null +++ b/src/lib/parsers/regexp.ts @@ -0,0 +1,74 @@ +import { TokenStream } from "../utils/stream.js"; +import { fatal, nullish, undefined } from "../utils/util.js"; +import { RegularExpressionNode } from "../nodes.js"; +import { MultiValueComparer } from "../utils/comparer.js"; +import { validAfterNumberChars } from "../lexer.js"; +import { pushDiagnostic } from "../parser.js"; +import { DiagnosticSeverity } from "../enums.js"; + + +const validChars = new MultiValueComparer([...validAfterNumberChars, "\\" as const]); +const validFlags = new MultiValueComparer("dgmuiys"); +export function parse_regexp({ text_stream }: TokenStream) { + function parse_list() { + while (next !== "]") { + if (nullish(next)) { + fatal("Unterminated regular expression character list"); + } + if (next === "\\") { + body += next + text_stream.move(); + next = text_stream.move(); + continue; + } + if (next === "(") { + parse_group(); + } + body += next; + next = text_stream.move(); + } + } + function parse_group() { + while (next !== ")") { + if (nullish(next)) { + fatal("Unterminated regular expression group"); + } + if (next === "\\") { + body += next + text_stream.move(); + next = text_stream.move(); + continue; + } + if (next === "[") { + parse_list(); + } + body += next; + next = text_stream.move(); + } + } + var next: string, body = "/"; + while ((next = text_stream.next) !== "/") { + if (nullish(next)) { + fatal("Unterminated regular expression"); + } + if (next === "\\") { + body += text_stream.move() + text_stream.move(); + continue; + } + if (next === "[") { + parse_list(); + } + if (next === "(") { + parse_group(); + } + body += next; + next = text_stream.move(); + } + body += text_stream.move(); + while (validChars.includes(text_stream.next)) { + if (!validFlags.includes(text_stream.next)) { + pushDiagnostic(DiagnosticSeverity.Error, `Invalid regular expression flag ${ text_stream.move() }`); + break; + } + body += text_stream.move(); + } + return RegularExpressionNode(body); +} \ No newline at end of file diff --git a/src/lib/predence.ts b/src/lib/predence.ts new file mode 100644 index 0000000..5e7676a --- /dev/null +++ b/src/lib/predence.ts @@ -0,0 +1,63 @@ +import { Nodes } from "./enums.js"; +import { AssignmentOperatorTable } from "./utils/table.js"; +import { frozen } from "./utils/util.js"; + +export const enum Predence { + Null, + Comma, + AssignmentAndYield, + Ternary, + Coalescing, + LiteralLogicalNot, + LogicalOR, + LogicalAND, + Pipeline, + BitwiseOR, + BitwiseXOR, + BitwiseAND, + Equality, + /** > >= < <= in instanceof contains */ + ThanAndIn, + Shift, + AddAndSub, + RemDivAndMul, + Expondentiation, + Range, + PrefixOps, + PostfixIncAndDec, + ArgumentlessNew, + CallsAndMemberAccess, + Grouping, + Highest = 0xffffffff +} + +export const PredenceMap: ReadonlyMap = new Map(); + +const object = frozen({ + [Predence.AssignmentAndYield]: [...Object.values(AssignmentOperatorTable), Nodes.YieldExpression, Nodes.YieldFromExpression], + [Predence.Ternary]: [Nodes.TernaryExpression], + [Predence.Coalescing]: [Nodes.NullishCoalescingExpression], + [Predence.LiteralLogicalNot]: [Nodes.LiteralLogicalNotExpression], + [Predence.LogicalOR]: [Nodes.LogicalORExpression], + [Predence.LogicalAND]: [Nodes.LogicalANDExpression], + [Predence.BitwiseOR]: [Nodes.BitwiseORExpression], + [Predence.BitwiseXOR]: [Nodes.BitwiseXORExpression], + [Predence.BitwiseAND]: [Nodes.BitwiseANDExpression], + [Predence.Equality]: [Nodes.LooseEquality, Nodes.LooseInequality, Nodes.StrictEquality, Nodes.StrictInequality], + [Predence.ThanAndIn]: [Nodes.GreaterThan, Nodes.GreaterThanOrEqual, Nodes.LessThan, Nodes.LessThanOrEqual, Nodes.InExpression, Nodes.InstanceOfExpression, Nodes.ContainsExpression], + [Predence.Shift]: [Nodes.BitwiseLeftShiftExpression, Nodes.BitwiseRightShiftExpression, Nodes.BitwiseUnsignedRightShiftExpression], + [Predence.AddAndSub]: [Nodes.AddictionExpression, Nodes.SubstractionExpression], + [Predence.RemDivAndMul]: [Nodes.RemainderExpression, Nodes.DivisionExpression, Nodes.MultiplicationExpression], + [Predence.Expondentiation]: [Nodes.ExponentiationExpression], + [Predence.Range]: [Nodes.RangeExpression], + [Predence.PrefixOps]: [Nodes.AwaitExpression, Nodes.VoidExpression, Nodes.DeleteExpression, Nodes.TypeOfExpression, Nodes.PrefixIncrementExpression, Nodes.PrefixDecrementExpression, Nodes.PlusExpression, Nodes.NegatationExpression, Nodes.BitwiseRevertExpression, Nodes.LogicalNOTExpresssion], + [Predence.PostfixIncAndDec]: [Nodes.PostfixIncrementExpression, Nodes.PostfixDecrementExpression], + [Predence.ArgumentlessNew]: [Nodes.NewExpression], + [Predence.CallsAndMemberAccess]: [Nodes.MemberAccessExpression, Nodes.CallExpression, Nodes.ArgumentBindingExpression, Nodes.OptionalCallExpression] +} as unknown as Record); + +for (const [predence, values] of Object.entries(object)) { + for (const value of values) { + (PredenceMap as Map).set(value, +predence); + } +} diff --git a/src/lib/readme.md b/src/lib/readme.md new file mode 100644 index 0000000..0011383 --- /dev/null +++ b/src/lib/readme.md @@ -0,0 +1,43 @@ +# A small overview for those who may want to dig into this compiler + - [compiler.ts](./compiler.ts) - de facto the entry point to the compiler machinery, joins up the lexer, parser, emitter and code wrapper together. + - [parser.ts](./parser.ts) - self-explanatory, important functions: + 1. parse - called by compileCode() function, entry to the parser machinery: resets random private variable counter, initialized parser's output object, diagnostics array, converts its result when any async operation occured. + 2. @internal main_parse - called by parse() function, loops through tokens from lexer and calls _parse() function. + 3. _parse - called by various other parser function when insideExpression meta flag must be disposed e.g. resulting expression can safely be also typeof statment without any wrapping. + 4. __parse - decides how the `next` token must be treated and then either parsers into nothing (undefined) if token must be treated as nothing or to a Node. + 5. @internal parse_operators - self-explanatory. + + - [parsers](./parsers) folder contains functions that parse certain expression(s). + 1. [keywords.ts](./parsers/keywords.ts) - Contains big ol' object with function for each supported keyword. (BIGGG WIP) + 2. [array-expression.ts](./parsers/array-expression.ts) - self-explanatory. + 3. [group-expression.ts](./parsers/group-expression.ts) - self-explanatory. + 4. [call-expression.ts](./parsers/call-expression.ts) - self-explanatory. + 5. [external-var.ts](./parsers/external-var.ts) - self-explanatory. + 6. [assignments.ts](./parsers/assignments.ts) - self-explanatory. + 7. [common-expressions.ts](./parsers/common-expressions.ts) - self-explanatory. + 8. [body-parser.ts](./parsers/body-parser.ts) - self-explanatory. + 9. [object-expression.ts](./parsers/object-expression.ts) - self-explanatory (WIP). + 10. [regexp.ts](./parsers/regexp.ts) - self-explanatory. + 11. [member-access.ts](./parsers/member-access.ts) - self-explanatory. + - [enums.ts](./enums.ts) - es habt alle da const enums. + - [nodes.ts](./nodes.ts) - contains definition of class and interface of a Node and functions, wrapping Node constructor for simplicity. + - [predence.ts](./predence.ts) - defines predence for each (almost) node type. + - [wrapper.ts](./wrapper.ts) - wraps emitted code into a IIFE with functions exported and appends nessecary. + - [emitter.ts](./emitter.ts) - Emits AST into JS code. + 1. emit - called by compileCode() function, prepares stuff before emitting and optionally emits shebang into the output. + 2. @internal _emit - called by emit(), self and other functions, decides how to emit node basing on its type (`node.name`: `type Nodes`). + - var __text - carries the emitted JS code. + - declare - appends compiler variable into function scope. + - emitChain - emits chain of AccesssItemChain array. + - emitSlicedArguments - emits code for function arguments after rest parameter. + - emitCallExpression - emits code for `Nodes.CallExpression` like nodes. + - emit_body - emits code from `body` parameter with default of `node.body`. + - simple_emit_body - emits curly braces and prepares indentation before call to `emit_body`. + - sp - inserts optional whitespace if `pretty` compiler option is specified and equals to `true`. + - nl - inserts optional newline if `pretty` compiler option is specified and equals to `true`. + - ri - raises indentation by 4 spaces (` `) if `pretty` compiler option is specified and equals to `true`. + - li - lowers indentation by 4 spaces (` `) if `pretty` compiler option is specified and equals to `true`. + - is - inserts indentation into text (controlled by ri() and li() functions) if `pretty` compiler option is specified and equals to `true`. + 3. @internal isBlockNode - determines if node has body with curly braces `{}`. + 4. @internal isSimple - determines if node can be emitted without parenthesis `()`. + 5. @internal var __pretty - carries value of `pretty` compiler option for the sake of optimizations and simplicity. diff --git a/src/lib/utils/advancers.ts b/src/lib/utils/advancers.ts index 8b57ce6..46421cd 100644 --- a/src/lib/utils/advancers.ts +++ b/src/lib/utils/advancers.ts @@ -1,51 +1,15 @@ -import { includes } from "./util.js"; -import { Tokens } from "../enums"; -import type { Token, TokenStream } from "./stream.js"; +import { assert_token, nullish } from "./util.js"; +import type { Tokens } from "../enums"; +import type { TokenStream } from "./stream.js"; -export function downgrade_next(stream: TokenStream) { - while (includes([Tokens.Whitespace, Tokens.MultilineComment, Tokens.Comment], stream.down()[0])); -} -/** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {string} end - * @param {string} [prefix] - */ -function next_or_fail

(stream: import("./stream.js").TokenStream, end: string, prefix?: Prefix

) { - stream.move(); - var next = stream.next, newlines: number; - if (!next) { - throw `${ prefix ? ` ${ prefix }` : "" }Unexcepted EOF - '${ end }' excepted`; - } - // __line += newlines = occurrences(next[1], '\n'); - // if (newlines !== 0) { - // __column = 0; - // } - // __column += next[1].length - next[1].lastIndexOf("\n"); + +export function advance_next

(stream: TokenStream, end: string, prefix?: Prefix

) { + const next = stream.advance(); + if (nullish(next)) throw `${ prefix ? `${ prefix } ` : "" }Unexcepted EOF - '${ end }' excepted`; return next; } -type Prefix

= string extends P ? string : P extends `${ infer _ } ${ "statment" | "expression" }:` ? P : never; -/** - * @param {import("./utils/stream.js").Token} next - * @param {import("./utils/stream.js").TokenStream} stream - * @param {string} end - * @param {string} [prefix] - */ -function skip_whitespace

(next: Token, stream: TokenStream, end: string, prefix?: Prefix

) { - return next[0] === Tokens.Whitespace ? next_or_fail(stream, end, prefix) : next; -} -/** - * @param {import("./utils/stream.js").TokenStream} stream - * @param {string} end - * @param {string} [prefix] - */ +export declare type Prefix

= string extends P ? string : P extends `${ infer S }${ string } ${ "statment" | "expression" }:` ? S extends Uppercase ? P : never: never; -export function advance_next

(stream: TokenStream, end: string, prefix?: Prefix

) { - var _temp: Token; - while ((_temp = skip_whitespace(next_or_fail(stream, end, prefix), stream, end, prefix))[0] === Tokens.MultilineComment || _temp[0] === Tokens.Comment) { - var _exec = /\s*internal\:\s*(.+)/.exec(_temp[1]); - if (_exec) { - Function(_exec[1])(); - } - }; - return _temp; +export function assert_next_token

(stream: TokenStream, token_type: Tokens, token_string?: string, prefix?: Prefix

, end = token_string!, rest = "") { + return assert_token(advance_next(stream, end, prefix), token_type, token_string, rest); } diff --git a/src/lib/utils/comparer.ts b/src/lib/utils/comparer.ts new file mode 100644 index 0000000..7f3a412 --- /dev/null +++ b/src/lib/utils/comparer.ts @@ -0,0 +1,78 @@ +import { $validIDs } from "./valid-id.js"; + + +const s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + +export type CharComparerMode = "normal" | "extended"; + +export interface MultiValueComparer { + includes(value: unknown): value is T; + [Symbol.iterator](): IterableIterator; +} + +interface MultiValueComparerConstructor { + readonly prototype: MultiValueComparer; + new >(values: T): MultiValueComparer : T extends Iterable ? P : never>; +} + +class $MultiValueComparer { + protected readonly values: Map; + public constructor(values: Iterable | string) { + this.values = new Map([...values].map(x => [x as T, true])); + } + public includes(value: any): value is T { + return this.values.has(value); + } + public [Symbol.iterator]() { + return this.values.keys(); + } +} + +export const MultiValueComparer = $MultiValueComparer as MultiValueComparerConstructor; + +export class ValidCharsComparer extends $MultiValueComparer { + private _validIDs = $validIDs; + private _extended_utf_char_range: Map = undefined!; + private _normal_utf_char_range = this.values; + private _mode: CharComparerMode = "normal"; + public constructor() { + super(`$0123456789_${ s }${ s.toLowerCase() }`); + this._validIDs.splice(0, 6); + this.init("\uffd7"); + } + public init(toChar: string) { + const id = toChar.codePointAt(0)!; + let deleteCount = 0; + for (const element of this._validIDs) { + if (element.length === 2) { + let [start, end] = element; + if (end > id) { + for (; start <= id;) this.values.set(String.fromCodePoint(start++), true); + this._validIDs.splice(0, deleteCount); + element[0] = start; + return; + } else { + for (; start < end;) this.values.set(String.fromCodePoint(start++), true); + } + } else { + this.values.set(String.fromCodePoint(element[0]), true); + } + deleteCount++; + } + } + public changeMode() { + + } + /** + * This method is considered safe because it continues initialization of this comparer and re-compares again if char is not in the values map + * @internal + * @deprecated + */ + public safeIncludes(x: string) { + return this.values.has(x) || (this.init(x), this.values.has(x)); + } +} + +type $PopulateString = S extends `${ infer C }${ infer R }` ? $PopulateString : Cache; +export type PopulateString = S extends `${ infer C }${ infer R }` ? $PopulateString : S; diff --git a/src/lib/utils/constants.ts b/src/lib/utils/constants.ts index f7a86c7..319fd21 100644 --- a/src/lib/utils/constants.ts +++ b/src/lib/utils/constants.ts @@ -1,15 +1,15 @@ -import { _echo } from "./_echo.js"; -export const meberAccessOperators = [".", "?.", "!.", "![", "?.[", "["] as const; -export const end_expression = _echo("expression"); -export const js_auto_variables = ["__external_var", "this", "arguments", "null", "NaN", "undefined", "Infinity", "true", "false"] as const; -export const keywords: readonly string[] = _echo("do|if|in|for|new|try|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|arguments|interface|protected|implements|instanceof|include|fn|async|await|undefined|not|contains|__external|__external_var|nonlocal|keep|using").split("|"); +export const member_access_operators = [".", "?.", "?.[", "["] as const; +export const end_expression = "expression"; +export const auto_variables = ["this", "arguments", "null", "NaN", "undefined", "Infinity", "true", "false"] as const; +export const keywords = ["do", "fn", "if", "in", "or", "and", "for", "new", "not", "try", "case", "else", "enum", "eval", "keep", "null", "this", "true", "void", "with", "async", "await", "break", "catch", "class", "const", "false", "macro", "super", "throw", "using", "while", "delete", "yield", "export", "extern", "import", "public", "return", "static", "switch", "typeof", "default", "extends", "finally", "include", "package", "private", "continue", "contains", "debugger", "arguments", "nonlocal", "interface", "__external", "protected", "implements", "instanceof", "undefined", "__external_var"] as const; +/**@deprecated */ export const validChars = (function () { try { - return Function("return/^[$_\\u200C\\u200D\\p{ID_Continue}^\\d][$_\\u200C\\u200D\\p{ID_Continue}]*$/u")() as RegExp; + return Function("return/(?!\\d)[$_\\u200C\\u200D\\p{ID_Continue}]+/yu")() as RegExp; } catch { - return /^[$\w_][\d\w$_]*$/m; + return /[$\w_][\d\w$_]*/y; } })(); -export const $2charoperators = ["&&", "**", "||", "??", "==", "!=", "=>", "<=", ">=", "..", "+=", "/=", "&=", "-=", "++", "--", "*=", "|=", "//", ">>", "<<", "?.", "%=", "^=", "|>", "@@", "/*", "::", "!.", "!["] as const; -export const $3charoperators = ["?.[", "?.(", "??=", "||=", "&&=", "**=", ">>>", "...", ">>=", "<<=", "===", "!=="] as const; +export const $2charoperators = ["&&", "**", "||", "??", "==", "!=", "=>", "<=", ">=", "..", "+=", "/=", "&=", "-=", "++", "--", "*=", "|=", "//", ">>", "<<", "?.", "%=", "^=", "|>", "@@", "/*", "::", "##"] as const; +export const $3charoperators = ["?.[", "?.(", "??=", "||=", "&&=", "**=", ">>>", "...", ">>=", "<<=", "===", "!==", "##[", "##{", "##<"] as const; export { end_expression as expression }; diff --git a/src/lib/utils/diagnostics.ts b/src/lib/utils/diagnostics.ts index 4a890c1..198110d 100644 --- a/src/lib/utils/diagnostics.ts +++ b/src/lib/utils/diagnostics.ts @@ -1,13 +1,7 @@ -import type { DiagnosticSeverity } from "../enums.js"; +import type { DiagnosticSeverity } from "../enums"; export interface IDiagnostic { - severity: DiagnosticSeverity; - message: string; -} -export function Diagnostic(severity: DiagnosticSeverity, message: string): IDiagnostic { - return { - severity, - message - }; + readonly severity: DiagnosticSeverity; + readonly message: unknown; } \ No newline at end of file diff --git a/src/lib/utils/occurrences.ts b/src/lib/utils/occurrences.ts index 5d558f8..016fe3c 100644 --- a/src/lib/utils/occurrences.ts +++ b/src/lib/utils/occurrences.ts @@ -1,4 +1,4 @@ -// Adopted to ts by MadProbe#7435 +// Adopted to ts and removed unneeded functionality by MadProbe#7435 // All credits goes to Vitim.us // @see {https://gist.github.com/victornpb/7736865} /** Function that count occurrences of a substring in a string; @@ -10,18 +10,13 @@ * @see Unit Test https://jsfiddle.net/Victornpb/5axuh96u/ * @see https://stackoverflow.com/questions/4009756/how-to-count-string-occurrence-in-string/7924240#7924240 */ -export function occurrences(string: string, subString: string, allowOverlapping?: boolean): number { - string += ""; - subString += ""; - if (subString.length <= 0) return (string.length + 1); - +export function occurrences(string: string, subString: string): number { var n = 0, - pos = 0, - step = allowOverlapping ? 1 : subString.length; + pos = 0; while ((pos = string.indexOf(subString, pos)) >= 0) { ++n; - pos += step; + ++pos; } return n; } \ No newline at end of file diff --git a/src/lib/utils/scope.ts b/src/lib/utils/scope.ts new file mode 100644 index 0000000..f1c6564 --- /dev/null +++ b/src/lib/utils/scope.ts @@ -0,0 +1,22 @@ +import { undefined } from "./util.js"; +import type { Node } from "../nodes.js"; + + +export class Scope { + public readonly variables = new Map(); + public readonly nonlocals: Global extends true ? undefined : Map = new Map() as never; + public readonly globals: Global extends true ? undefined : Map = new Map() as never; + public readonly externs: Global extends true ? Map : undefined = new Map() as never; + + public constructor(public readonly func: Global extends true ? undefined : Node) { } + addVariable(variable: string) { + this.nonlocals?.has(variable) || this.externs?.has(variable) || this.variables.set(variable, undefined!); + } + viewVariables() { + return this.variables.keys(); + } + [Symbol.iterator]() { return this.variables.keys(); } + viewExternals() { + return this.externs?.keys(); + } +} diff --git a/src/lib/utils/stream.ts b/src/lib/utils/stream.ts index d05dd08..afc2d18 100644 --- a/src/lib/utils/stream.ts +++ b/src/lib/utils/stream.ts @@ -1,36 +1,53 @@ +import { Prototypeless } from "./util.js"; import type { Tokens } from "../enums"; +import type { Prefix } from "./advancers.js"; -type Streamable = { - [index: number]: any; + +export interface TextStream { + readonly text: string; + index: number; + next: string; + move(): string; + advance(): string; + down(times: number): string; +} +export interface TokenStream { + readonly next: Token; + move(): Token; + advance(): Token; + try

(end: string, prefix?: Prefix

): Token; + confirm_try(): void; + cancel_try(): void; + readonly text_stream: TextStream; + [Symbol.iterator](): Generator; }; -type ValueType = A extends { [index: number]: infer P; } ? P : never; -export interface ValueStream { - next: ValueType; - move(): ValueType; - down(): ValueType; +@Prototypeless +export class Token { + constructor(public readonly type: Tokens, public readonly body: string) { } + is(type: Tokens, body: string) { + return (this.type & type) !== 0 && this.body === body; + } } -export type TextStream = ValueStream; -export type TokenStream = ValueStream; -export type Token = [Tokens, string, ...string[]]; -export type TokenList = Token[]; +/**@deprecated */ +export type TokenList = readonly Token[]; + -/** - * @template {import("./stream").Streamable} T - * @param {T} streamable - * @returns {T} - */ -export function Stream(streamable: T): ValueStream { - var __index = 0; - return { - next: streamable[0], - /**@param {any} [__next]*/ - move(__next?: any) { - __next = streamable[__index++]; - this.next = streamable[__index]; - return __next; - }, - down() { - return this.next = streamable[--__index]; - } +@Prototypeless +export class Stream implements TextStream { + public index: number = 0; + public next: string; + constructor(public readonly text: string) { + this.next = text[0]; } -} \ No newline at end of file + advance() { + return this.next = this.text[++this.index]; + } + move() { + const __next = this.text[this.index]; + this.next = this.text[++this.index]; + return __next!; + } + down(times: number) { + return this.next = this.text[this.index -= times]; + } +} diff --git a/src/lib/utils/table.ts b/src/lib/utils/table.ts index c37ba80..17bd533 100644 --- a/src/lib/utils/table.ts +++ b/src/lib/utils/table.ts @@ -1,10 +1,9 @@ import { Nodes } from "../enums"; -export type CommonOperatorTableType = typeof CommonOperatorTable; -export type CommonOperatorTableKeys = keyof CommonOperatorTableType; -export type AssignmentOperatorTableType = typeof AssignmentOperatorTable; -export type AssignmentOperatorTableKeys = keyof AssignmentOperatorTableType; -export var CommonOperatorTable = { + +export type CommonOperatorTableKeys = keyof typeof CommonOperatorTable; +export type AssignmentOperatorTableKeys = keyof typeof AssignmentOperatorTable; +export const CommonOperatorTable = { "+": Nodes.AddictionExpression, "-": Nodes.SubstractionExpression, "*": Nodes.MultiplicationExpression, @@ -16,9 +15,9 @@ export var CommonOperatorTable = { "|": Nodes.BitwiseORExpression, "??": Nodes.NullishCoalescingExpression, "&&": Nodes.LogicalANDExpression, + "and": Nodes.LogicalANDExpression, "||": Nodes.LogicalORExpression, - // "!": Nodes.LogicalNOTExpresssion, // Leaving this uncommented may lead to fun bugs - // expression ! expression will be parsed without compilation errors LOL + "or": Nodes.LogicalORExpression, "<<": Nodes.BitwiseLeftShiftExpression, ">>": Nodes.BitwiseRightShiftExpression, ">>>": Nodes.BitwiseUnsignedRightShiftExpression, @@ -27,11 +26,11 @@ export var CommonOperatorTable = { ">=": Nodes.GreaterThanOrEqual, "<": Nodes.LessThan, "<=": Nodes.LessThanOrEqual, - "==": Nodes.LooseComparison, - "===": Nodes.StrictComparison, - "!=": Nodes.LooseNegativeComparison, - "!==": Nodes.StrictNegativeComparison -} + "==": Nodes.LooseEquality, + "===": Nodes.StrictEquality, + "!=": Nodes.LooseInequality, + "!==": Nodes.StrictInequality +} as const; export var AssignmentOperatorTable = { "=": Nodes.AssignmentExpression, "+=": Nodes.AddictionAssignmentExpression, @@ -49,5 +48,5 @@ export var AssignmentOperatorTable = { "<<=": Nodes.BitwiseLeftShiftAssignmentExpression, ">>=": Nodes.BitwiseRightShiftAssignmentExpression, ">>>=": Nodes.BitwiseUnsignedRightShiftAssignmentExpression -} +} as const; diff --git a/src/lib/utils/util.ts b/src/lib/utils/util.ts index b65bd98..1c186c2 100644 --- a/src/lib/utils/util.ts +++ b/src/lib/utils/util.ts @@ -1,49 +1,42 @@ -import { js_auto_variables } from "./constants.js"; +import { auto_variables } from "./constants.js"; import { Nodes, Tokens } from "../enums"; -import type { Token } from "./stream"; -import type { Node } from "../nodes"; +import type { Token } from "./stream.js"; +import type { INode } from "../nodes"; +import { MultiValueComparer } from "./comparer.js"; -export type CallFunctionType = void>(func: T, thisArg: ThisParameterType | undefined, ...args: Parameters) => ReturnType; -export type ApplyFunctionType = void>(func: T, thisArg: ThisParameterType | undefined, args: Parameters | IArguments) => ReturnType; -export type BindFunctionType = void>(func: T, thisArg: ThisParameterType | undefined, ...args: Parameters | undefined[]) => T; -var __call = nullish.call; -export var bind = __call.bind(nullish.bind) as BindFunctionType; -export var call = bind(__call, __call as any) as CallFunctionType; -export var apply = bind(__call, nullish.apply as any) as ApplyFunctionType; -export type ArrayValueType = { + +export type ArrayValueType = { [key in Exclude]: T[key]; -} extends { [key: string]: infer V } ? V : never; -export function includes(array: A, value: unknown): - value is A extends string ? string : any[] extends A ? boolean : ArrayValueType> { - return ~array.indexOf(value as any) as unknown as boolean; +} extends { [key: string]: infer V; } ? V : never; +export function includes(array: A, value: unknown): + value is A extends string ? string : unknown[] extends A ? boolean : ArrayValueType> { + return ~array.indexOf(value as never) as never; } export function nullish(arg: unknown): arg is null | undefined { - return arg === void 0 || arg === null; + return arg === undefined || arg === null; } export var undefined: undefined; var __counter__ = 0; -export function randomVarName() { +export function random_var_name() { return `_${ (__counter__++).toString(36) }`; // + "__" + Math.random().toString(16).slice(2); } -export function resetCounter() { +export function reset_counter() { __counter__ = 0; } -export function assert(value: unknown): asserts value is T { } -export function log_errors(errors: any[]) { - if (errors && errors.length) { - for (var index = 0; index < errors.length; index++) { - console.error("TSK Error:", errors[index]); - } - } -} -export var isArray = Array.isArray as ((arg: any) => arg is T[]) || (function (value) { +export function assert_type(value: unknown): asserts value is T { } +export const isArray: (arg: unknown) => arg is T[] = Array.isArray || function (value) { return value instanceof Array; -}); +}; +export const frozen: (object: T) => Readonly = object => Object.freeze(Object.setPrototypeOf(object, null)); +/** + * Removes Object.prototype from prototype chain and freezes class's prototype. + */ +export const Prototypeless: ClassDecorator = klass => void frozen(klass.prototype); interface CacheEntry { code: string; mtime: number; } -var __cache = {} as { [key: string]: CacheEntry; }; +const __cache: Record = {}; // var __warned__ = false; var __is_node = typeof process === "object" && ({}).toString.call(process) === "[object process]"; export function include(path: URL, cache = true): string | Promise { @@ -55,12 +48,14 @@ export function include(path: URL, cache = true): string | Promise { } var fs = require("fs") as typeof import("fs"); if (cache) { - var mtime = fs.statSync(path).mtimeMs, cached = __cache[String(path)] || {}, cacheMTime = cached.mtime; + var handle = fs.openSync(path, "r"); + var mtime = fs.fstatSync(handle).mtimeMs, cached = __cache[path.href] || {}, cacheMTime = cached.mtime; if (mtime !== cacheMTime) { - _ = fs.readFileSync(path, "utf-8"); + _ = fs.readFileSync(handle, "utf-8"); __cache[String(path)] = { mtime, code: _ }; + fs.closeSync(handle); return _; - } else return cached.code; + } else return fs.closeSync(handle), cached.code; } else { return fs.readFileSync(path, "utf-8"); } @@ -70,7 +65,10 @@ export function include(path: URL, cache = true): string | Promise { } else if (protocol === "http:" || protocol === "https:") { if (typeof fetch === "undefined") { if (__is_node) { - global.fetch = require('node-fetch')["default"]; + if (typeof require !== "function") { + throw "Please expose 'require' function into the global scope in order to use include statment"; + } + global.fetch = require(require.resolve('node-fetch')).default; } else { throw "Fetching web resource with no fetch function attached to global in web env!"; } @@ -79,9 +77,9 @@ export function include(path: URL, cache = true): string | Promise { // console.warn("Since http requests are asynchronous i dont guarantee that include statment will work correctly (atleast please dont use them in web env)"); // __warned__ = true; // } - return fetch(String(path)).then(function (responce) { + return fetch(path.href).then(function (responce) { if (!responce.ok) { - throw "Something went wrong while fetching " + path + "!"; + throw `Something went wrong while fetching ${ path }!`; } return responce.text(); }); @@ -89,38 +87,56 @@ export function include(path: URL, cache = true): string | Promise { throw "Unsupported protocol '" + protocol + "'!"; }; } +export const auto_variables_comparer = new MultiValueComparer(auto_variables); export function inspectLog(shit: any) { console.log(typeof require === "function" ? require("util").inspect(shit, !0, 1 / 0, !0) : shit); } export function isSymbol(next: Token) { - return next[0] === Tokens.Symbol || next[0] === Tokens.Keyword && includes(js_auto_variables, next[1]); + return next.type === Tokens.Symbol || next.type === Tokens.Keyword && auto_variables_comparer.includes(next.body); } -export function remove_trailing_undefined(values: Node[]) { +export function remove_trailing_undefined(values: INode[]) { for (var index = values.length; index && values[--index].name === Nodes.UndefinedValue;) values.pop(); + return values; +} + +export function should_not_happen(): never { + throw RangeError("should never happen"); } export function error_unexcepted_token(next: Token, rest = ""): never { - throw SyntaxError(`Unexcepted token '${ next[1] }'${ rest }`); + assert(0, `Unexcepted token '${ next.body }'${ rest }`); } -export function isNode(value: any): value is Node { - return !isArray(value) && typeof value === "object" && !nullish(value); + +export function assert_token(next: Token, token_type: Tokens, token_string?: string, rest = "") { + if (((next.type & token_type) !== 0) && next.body !== token_string && token_string !== undefined) error_unexcepted_token(next, rest); + return next; } + +export class FatalError extends Error { + name = "FatalError"; +} + +export function fatal

(error: P extends `${string}.` ? undefined : P): never { + throw new FatalError(error); +} + +export function assert(condition: 0 | false, message: string | { [Symbol.toPrimitive](hint: "string"): string; }, error_type?: ErrorConstructor): never; +export function assert(condition: unknown, message: string | { [Symbol.toPrimitive](hint: "string"): string; }, error_type?: ErrorConstructor): void; +export function assert(condition: unknown, message: string | { [Symbol.toPrimitive](hint: "string"): string; }, error_type: ErrorConstructor = _SyntaxError) { + if (!condition) { + throw error_type(message + ""); + } +} + /** * Checks if expression is an abrupt node ([Node]) and * returns abrupt node with body with abrupted expression * else returns node with body equal to passed expression + * @deprecated */ -export function abruptify(node: Node | [Node], expression: Node | [Node]): Node | [Node] { - if (isArray(expression)) { - assert(node); - node.body = expression; - node = [node]; - } else { - assert(node); - node.body = [expression]; - } +export function abruptify(node: INode, expression: INode | [INode]): INode { return node; } -var _SyntaxError = SyntaxError; +const _SyntaxError = SyntaxError; export { _SyntaxError as SyntaxError }; diff --git a/src/lib/utils/valid-chars.ts b/src/lib/utils/valid-chars.ts deleted file mode 100644 index 117a5fd..0000000 --- a/src/lib/utils/valid-chars.ts +++ /dev/null @@ -1 +0,0 @@ -export var _validChars = /^[$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc][$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc0-9\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e4-\u08fe\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19b0-\u19c0\u19c8\u19c9\u19d0-\u19d9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f]*$/m \ No newline at end of file diff --git a/src/lib/utils/valid-id.ts b/src/lib/utils/valid-id.ts new file mode 100644 index 0000000..0a22978 --- /dev/null +++ b/src/lib/utils/valid-id.ts @@ -0,0 +1 @@ +export const $validIDs: ([number] | [number, number])[] = [[36], [48, 57], [65, 90], [95], [97, 122], [170], [181], [186], [192, 214], [216, 246], [248, 705], [710, 721], [736, 740], [748], [750], [768, 879], [880, 884], [886], [887], [890, 893], [902], [904, 906], [908], [910, 929], [931, 1013], [1015, 1153], [1155, 1159], [1162, 1319], [1329, 1366], [1369], [1377, 1415], [1425, 1469], [1471], [1473], [1474], [1476], [1477], [1479], [1488, 1514], [1520, 1522], [1552, 1562], [1568, 1610], [1611, 1641], [1646], [1647], [1648], [1649, 1747], [1749], [1750, 1756], [1759, 1764], [1765], [1766], [1767], [1768], [1770, 1773], [1774], [1775], [1776, 1785], [1786, 1788], [1791], [1808], [1809], [1810, 1839], [1840, 1866], [1869, 1957], [1958, 1968], [1969], [1984, 1993], [1994, 2026], [2027, 2035], [2036], [2037], [2042], [2048, 2069], [2070, 2073], [2074], [2075, 2083], [2084], [2085, 2087], [2088], [2089, 2093], [2112, 2136], [2137, 2139], [2208], [2210, 2220], [2276, 2302], [2304, 2307], [2308, 2361], [2362, 2364], [2365], [2366, 2383], [2384], [2385, 2391], [2392, 2401], [2402], [2403], [2406, 2415], [2417, 2423], [2425, 2431], [2433, 2435], [2437, 2444], [2447], [2448], [2451, 2472], [2474, 2480], [2482], [2486, 2489], [2492], [2493], [2494, 2500], [2503], [2504], [2507, 2509], [2510], [2519], [2524], [2525], [2527, 2529], [2530], [2531], [2534, 2543], [2544], [2545], [2561, 2563], [2565, 2570], [2575], [2576], [2579, 2600], [2602, 2608], [2610], [2611], [2613], [2614], [2616], [2617], [2620], [2622, 2626], [2631], [2632], [2635, 2637], [2641], [2649, 2652], [2654], [2662, 2673], [2674, 2676], [2677], [2689, 2691], [2693, 2701], [2703, 2705], [2707, 2728], [2730, 2736], [2738], [2739], [2741, 2745], [2748], [2749], [2750, 2757], [2759, 2761], [2763, 2765], [2768], [2784], [2785], [2786], [2787], [2790, 2799], [2817, 2819], [2821, 2828], [2831], [2832], [2835, 2856], [2858, 2864], [2866], [2867], [2869, 2873], [2876], [2877], [2878, 2884], [2887], [2888], [2891, 2893], [2902], [2903], [2908], [2909], [2911, 2913], [2914], [2915], [2918, 2927], [2929], [2946], [2947], [2949, 2954], [2958, 2960], [2962, 2965], [2969], [2970], [2972], [2974], [2975], [2979], [2980], [2984, 2986], [2990, 3001], [3006, 3010], [3014, 3016], [3018, 3021], [3024], [3031], [3046, 3055], [3073, 3075], [3077, 3084], [3086, 3088], [3090, 3112], [3114, 3123], [3125, 3129], [3133], [3134, 3140], [3142, 3144], [3146, 3149], [3157], [3158], [3160], [3161], [3168], [3169], [3170], [3171], [3174, 3183], [3202], [3203], [3205, 3212], [3214, 3216], [3218, 3240], [3242, 3251], [3253, 3257], [3260], [3261], [3262, 3268], [3270, 3272], [3274, 3277], [3285], [3286], [3294], [3296], [3297], [3298], [3299], [3302, 3311], [3313], [3314], [3330], [3331], [3333, 3340], [3342, 3344], [3346, 3386], [3389], [3390, 3396], [3398, 3400], [3402, 3405], [3406], [3415], [3424], [3425], [3426], [3427], [3430, 3439], [3450, 3455], [3458], [3459], [3461, 3478], [3482, 3505], [3507, 3515], [3517], [3520, 3526], [3530], [3535, 3540], [3542], [3544, 3551], [3570], [3571], [3585, 3632], [3633], [3634], [3635], [3636, 3642], [3648, 3654], [3655, 3662], [3664, 3673], [3713], [3714], [3716], [3719], [3720], [3722], [3725], [3732, 3735], [3737, 3743], [3745, 3747], [3749], [3751], [3754], [3755], [3757, 3760], [3761], [3762], [3763], [3764, 3769], [3771], [3772], [3773], [3776, 3780], [3782], [3784, 3789], [3792, 3801], [3804, 3807], [3840], [3864], [3865], [3872, 3881], [3893], [3895], [3897], [3902], [3903], [3904, 3911], [3913, 3948], [3953, 3972], [3974], [3975], [3976, 3980], [3981, 3991], [3993, 4028], [4038], [4096, 4138], [4139, 4158], [4159], [4160, 4169], [4176, 4181], [4182, 4185], [4186, 4189], [4190, 4192], [4193], [4194, 4196], [4197], [4198], [4199, 4205], [4206, 4208], [4209, 4212], [4213, 4225], [4226, 4237], [4238], [4239, 4253], [4256, 4293], [4295], [4301], [4304, 4346], [4348, 4680], [4682, 4685], [4688, 4694], [4696], [4698, 4701], [4704, 4744], [4746, 4749], [4752, 4784], [4786, 4789], [4792, 4798], [4800], [4802, 4805], [4808, 4822], [4824, 4880], [4882, 4885], [4888, 4954], [4957, 4959], [4992, 5007], [5024, 5108], [5121, 5740], [5743, 5759], [5761, 5786], [5792, 5866], [5870, 5872], [5888, 5900], [5902, 5905], [5906, 5908], [5920, 5937], [5938, 5940], [5952, 5969], [5970], [5971], [5984, 5996], [5998, 6000], [6002], [6003], [6016, 6067], [6068, 6099], [6103], [6108], [6109], [6112, 6121], [6155, 6157], [6160, 6169], [6176, 6263], [6272, 6312], [6313], [6314], [6320, 6389], [6400, 6428], [6432, 6443], [6448, 6459], [6470, 6479], [6480, 6509], [6512, 6516], [6528, 6571], [6576, 6592], [6593, 6599], [6600], [6601], [6608, 6617], [6656, 6678], [6679, 6683], [6688, 6740], [6741, 6750], [6752, 6780], [6783, 6793], [6800, 6809], [6823], [6912, 6916], [6917, 6963], [6964, 6980], [6981, 6987], [6992, 7001], [7019, 7027], [7040, 7042], [7043, 7072], [7073, 7085], [7086], [7087], [7088, 7097], [7098, 7141], [7142, 7155], [7168, 7203], [7204, 7223], [7232, 7241], [7245, 7247], [7248, 7257], [7258, 7293], [7376, 7378], [7380, 7400], [7401, 7404], [7405], [7406, 7409], [7410, 7412], [7413], [7414], [7424, 7615], [7616, 7654], [7676, 7679], [7680, 7957], [7960, 7965], [7968, 8005], [8008, 8013], [8016, 8023], [8025], [8027], [8029], [8031, 8061], [8064, 8116], [8118, 8124], [8126], [8130, 8132], [8134, 8140], [8144, 8147], [8150, 8155], [8160, 8172], [8178, 8180], [8182, 8188], [8204], [8205], [8255], [8256], [8276], [8305], [8319], [8336, 8348], [8400, 8412], [8417], [8421, 8432], [8450], [8455], [8458, 8467], [8469], [8473, 8477], [8484], [8486], [8488], [8490, 8493], [8495, 8505], [8508, 8511], [8517, 8521], [8526], [8544, 8584], [11264, 11310], [11312, 11358], [11360, 11492], [11499, 11502], [11503, 11505], [11506], [11507], [11520, 11557], [11559], [11565], [11568, 11623], [11631], [11647], [11648, 11670], [11680, 11686], [11688, 11694], [11696, 11702], [11704, 11710], [11712, 11718], [11720, 11726], [11728, 11734], [11736, 11742], [11744, 11775], [11823], [12293, 12295], [12321, 12329], [12330, 12335], [12337, 12341], [12344, 12348], [12353, 12438], [12441], [12442], [12445, 12447], [12449, 12538], [12540, 12543], [12549, 12589], [12593, 12686], [12704, 12730], [12784, 12799], [13312, 19893], [19968, 40908], [40960, 42124], [42192, 42237], [42240, 42508], [42512, 42527], [42528, 42537], [42538], [42539], [42560, 42606], [42607], [42612, 42621], [42623, 42647], [42655], [42656, 42735], [42736], [42737], [42775, 42783], [42786, 42888], [42891, 42894], [42896, 42899], [42912, 42922], [43000, 43009], [43010], [43011, 43013], [43014], [43015, 43018], [43019], [43020, 43042], [43043, 43047], [43072, 43123], [43136], [43137], [43138, 43187], [43188, 43204], [43216, 43225], [43232, 43249], [43250, 43255], [43259], [43264, 43273], [43274, 43301], [43302, 43309], [43312, 43334], [43335, 43347], [43360, 43388], [43392, 43395], [43396, 43442], [43443, 43456], [43471], [43472, 43481], [43520, 43560], [43561, 43574], [43584, 43586], [43587], [43588, 43595], [43596], [43597], [43600, 43609], [43616, 43638], [43642], [43643], [43648, 43695], [43696], [43697], [43698, 43700], [43701], [43702], [43703], [43704], [43705, 43709], [43710], [43711], [43712], [43713], [43714], [43739, 43741], [43744, 43754], [43755, 43759], [43762, 43764], [43765], [43766], [43777, 43782], [43785, 43790], [43793, 43798], [43808, 43814], [43816, 43822], [43968, 44002], [44003, 44010], [44012], [44013], [44016, 44025], [44032, 55203], [55216, 55238], [55243, 55291], [63744, 64109], [64112, 64217], [64256, 64262], [64275, 64279], [64285], [64286], [64287, 64296], [64298, 64310], [64312, 64316], [64318], [64320], [64321], [64323], [64324], [64326, 64433], [64467, 64829], [64848, 64911], [64914, 64967], [65008, 65019], [65024, 65039], [65056, 65062], [65075], [65076], [65101, 65103], [65136, 65140], [65142, 65276], [65296, 65305], [65313, 65338], [65343], [65345, 65370], [65382, 65470], [65474, 65479], [65482, 65487], [65490, 65495]]; diff --git a/src/lib/utils/variable-namer.ts b/src/lib/utils/variable-namer.ts deleted file mode 100644 index 4c4ac2a..0000000 --- a/src/lib/utils/variable-namer.ts +++ /dev/null @@ -1,25 +0,0 @@ -var __vars = {} as { [key: string]: string }; -var chars = StringRange("a", "z") + StringRange("A", "Z") + "_$"; -function StringRange(a: string, b: string) { - var char = a.charCodeAt(0); - var char2 = b.charCodeAt(0); - var res = ""; - for (; char <= char2; char++) res += String.fromCharCode(char); - return res; -} -function toChar(code: string) { - return Function('"' + code + '"')() -} -var __temp = 0; // "a" -var __NON_ASCII_CHARS_ALLOWED__ = true; -if (__NON_ASCII_CHARS_ALLOWED__) { - chars += Array.from(/\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc/.source.matchAll(/((?:\\x[\da-f][\da-f])|(?:\\u[\da-f][\da-f][\da-f][\da-f]))(\-((?:\\x[\da-f][\da-f])|(?:\\u[\da-f][\da-f][\da-f][\da-f])))?/g), - s => s[3] ? StringRange(toChar(s[1]), toChar(s[3])) : toChar(s[1])).join(''); -} -export function varname(symbol: string) { - var sym = __vars[symbol]; - if (sym) { - return sym; - } - -} diff --git a/src/lib/wrapper.ts b/src/lib/wrapper.ts index a99c235..27e17b0 100644 --- a/src/lib/wrapper.ts +++ b/src/lib/wrapper.ts @@ -1,26 +1,23 @@ -var __async = `function __async(f,t,a){` + - `return new p(function(r){` + - `var g=__apply(f,t,a),n=g.next;` + - `function _(p){` + +import type { KnownUsed } from "./parser.js"; + +const __async = `function __async(f,t,a){` + + `return new p(r=>{` + + `var g=__apply(f,t,a),n=g.next,` + + `_=p=>{` + `var v=__call(n,g,p);` + - `v.done?r(v.value):pr(v.value).then(function(v){_(v)})` + - `}` + + `v.done?r(v.value):pr(v.value).then(_)` + + `};` + `_();` + `})` + `}`; -var __null_assert = `function __na(v){if(n(v))throw TypeError("Null assertion");return v}`; -var __nullish = `function n(v){return v===null||v===u}`; -var __contains = `function __contains(i,v){` + // i = iterable, v = value +const __nullish = `function n(v){return v===null||v===u}`; +const __contains = `function __contains(i,v){` + // i = iterable, v = value // _ = iterator, n = next method of _, t = temp variable - `for(var _=i[Symbol.iterator](),n=__bind(_.next,_),t;!(t=n()).done;)if((t=t.value)===v||v!==v&&j!==t)return!0;` + - `return!1}`; -var __throw = "function __throw(e){throw e}"; + `for(var _=i[Symbol.iterator](),n=_.next,t;!(t=__call(n,_)).done;)if((t=t.value)===v||v!==v&&t!==t)return!0;return!1}`; +const __throw = "function __throw(e){throw e}"; -export function wrap(code: string, used: Record) { - return `(function(p,u){var c=n.call,__bind=c.bind(n.bind),` + - `pr=__bind(p.resolve,p),__call=__bind(c,c),__apply=__bind(c,n.apply);` + - `${ __nullish }${ __async }${ used.contains ? __contains : "" }${ used.na ? __null_assert : "" }${ used.throw ? - __throw : "" }` + - `return ${ code }})(Promise)()`; +export function wrap(code: string, used: Readonly) { + return `(function(p,u){const c=n.call,__bind=c.bind(n.bind),pr=__bind(p.resolve,p),__call=__bind(c,c),__apply=__bind(c,n.apply);` + + `${ __nullish }${ __async }${ used.contains ? __contains : "" }${ used.throw ? __throw : "" }return ${ code }})(Promise)()`; } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 5dc0938..885ed3e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,30 +1,21 @@ { "compilerOptions": { - "target": "es3", - "lib": [ - "dom", - "dom.iterable", - "es5", - "es2015", - "es2016", - "es2017", - "es2018", - "es2019", - "es2020", - "esnext" - ], + "target": "es6", + "lib": ["dom", "dom.iterable", "es6"], "module": "esnext", "importsNotUsedAsValues": "remove", "moduleResolution": "node", - "preserveConstEnums": true, "declaration": true, + "declarationDir": "./build/decls", "pretty": true, "strict": true, "rootDir": "src", - "outDir": "build/out", - "skipDefaultLibCheck": true + "outDir": "./build", + "sourceMap": true, + "composite": true, + "tsBuildInfoFile": ".tsbuildinfo", + "incremental": true, + "experimentalDecorators": true }, - "include": [ - "./src" - ] + "include": ["./src/lib"] } \ No newline at end of file